{"version":3,"sources":["../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/gl-matrix/esm/quat.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../src/utils/Constants.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/wFundament/wMath.js","../../src/utils/BrowserConstants.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/wFundament/wContants.js","../node_modules/react-query/es/core/utils.js","../../src/error/ClientAuthError.ts","../node_modules/prop-types/index.js","../../src/utils/StringUtils.ts","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../src/error/BrowserAuthError.ts","../node_modules/@material-ui/core/esm/utils/capitalize.js","../../src/event/EventType.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../src/error/AuthError.ts","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-query/es/core/notifyManager.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/react-dom/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/wgTek/wgResource.js","../../src/error/BrowserConfigurationAuthError.ts","../node_modules/wFundament/wHitRecord.js","../node_modules/wgTek/wgVertexDescriptors.js","../node_modules/wgTek/wgBuffer.js","../node_modules/wgTek/wgVertexBuffer.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/wgTek/wgTexture.js","../node_modules/wFundament/wTriangle.js","../node_modules/wFundament/wGizmo.js","../node_modules/@material-ui/core/esm/FormControl/useFormControl.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/react-query/es/core/subscribable.js","../node_modules/@material-ui/core/esm/styles/useTheme.js","../node_modules/@material-ui/core/esm/FormControl/formControlState.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/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@material-ui/core/esm/utils/createSvgIcon.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../../src/lib/env-utils/assert.js","../../src/cache/entities/AccountEntity.ts","../node_modules/react-query/es/core/retryer.js","../node_modules/wgTek/wgShader.js","../node_modules/@material-ui/core/esm/Typography/Typography.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../src/error/ServerError.ts","../../src/authority/AuthorityType.ts","../node_modules/@material-ui/icons/CheckBoxOutlineBlank.js","../node_modules/@material-ui/icons/CheckBox.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/react-query/es/core/focusManager.js","../node_modules/@material-ui/core/esm/List/ListContext.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../src/app/IPublicClientApplication.ts","../../src/event/EventMessage.ts","../../src/MsalContext.ts","../../src/utils/utilities.ts","../../src/packageMetadata.ts","../../src/MsalProvider.tsx","../../src/hooks/useMsal.ts","../../src/hooks/useAccount.ts","../../src/hooks/useIsAuthenticated.ts","../../src/components/UnauthenticatedTemplate.tsx","../../src/components/MsalAuthenticationTemplate.tsx","../../src/hooks/useMsalAuthentication.ts","../node_modules/@material-ui/core/esm/transitions/utils.js","../../src/lib/env-utils/globals.js","../node_modules/react-query/es/core/logger.js","../node_modules/@material-ui/core/esm/InputBase/utils.js","../node_modules/@material-ui/core/esm/FormControl/FormControlContext.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/@material-ui/core/esm/utils/ownerWindow.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/wFundament/wGeoSpherebuilder.js","../node_modules/@material-ui/icons/Edit.js","../node_modules/react-query/es/core/onlineManager.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/wFundament/wLine.js","../node_modules/wFundament/MouseEventHandler.js","../node_modules/wFundament/wPlane.js","../node_modules/wFundament/wCircle.js","../node_modules/wgTek/wgFbo.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/wFundament/wRay.js","../../src/lib/utils/globals.js","../../src/error/InteractionRequiredAuthError.ts","../node_modules/webpack/buildin/global.js","../node_modules/@material-ui/core/esm/utils/unstable_useId.js","../../src/logger/Logger.ts","../../src/account/ClientInfo.ts","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/fflate/esm/browser.js","../node_modules/react-query/es/core/mutation.js","../node_modules/react-query/es/react/QueryClientProvider.js","../node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../src/lib/binary-utils/array-buffer-utils.js","../node_modules/@material-ui/core/esm/internal/SwitchBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/object-assign/index.js","../node_modules/@material-ui/core/esm/utils/requirePropFactory.js","../node_modules/@material-ui/core/node_modules/react-is/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/wFundament/KeyboardEventHandler.js","../node_modules/wFundament/TouchEventHandler.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/path-to-regexp/index.js","../node_modules/@material-ui/icons/Check.js","../node_modules/@material-ui/icons/Brush.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","../node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","../node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/react-is/index.js","../node_modules/glsl-tokenizer/lib/literals.js","../node_modules/glsl-tokenizer/lib/builtins.js","../node_modules/process/browser.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@material-ui/icons/ThreeDRotation.js","../node_modules/@material-ui/icons/Menu.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js","../node_modules/wgTek/wgResourceCache.js","../node_modules/gl-format-compiler-error/index.js","../node_modules/wgTek/wgMeshBuilder.js","../node_modules/wFundament/wOrbitCamera.js","../node_modules/@material-ui/icons/Close.js","../node_modules/@material-ui/icons/CheckCircle.js","../../src/utils/isBrowser.js","../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getReferenceNode.js","../../src/utils/isIE.js","../../src/utils/getOffsetParent.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getFixedPositionOffsetParent.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/runModifiers.js","../../src/utils/findIndex.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/offset.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/modifiers/shift.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/keepTogether.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/modifiers/inner.js","../../src/modifiers/hide.js","../../src/utils/getRoundedOffsets.js","../../src/modifiers/applyStyle.js","../../src/utils/setAttributes.js","../../src/index.js","../node_modules/@material-ui/icons/HelpOutline.js","../node_modules/@material-ui/icons/Delete.js","../node_modules/@material-ui/icons/ZoomOut.js","../node_modules/@material-ui/icons/ZoomIn.js","../node_modules/@material-ui/icons/AddBox.js","../node_modules/@material-ui/icons/SettingsApplications.js","../node_modules/@material-ui/icons/AccountBox.js","../node_modules/@material-ui/icons/ExpandLess.js","../node_modules/@material-ui/icons/ExpandMore.js","../node_modules/@material-ui/icons/MenuBook.js","../node_modules/@material-ui/icons/Print.js","../node_modules/@material-ui/core/colors/blue.js","../node_modules/@material-ui/core/colors/teal.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/createMuiTheme.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/wFundament/wPrim.js","../node_modules/wFundament/wSphere.js","../node_modules/wgTek/wgPrimRender.js","../node_modules/@material-ui/core/esm/Popover/Popover.js","../node_modules/@material-ui/core/esm/MenuList/MenuList.js","../node_modules/@material-ui/core/esm/Menu/Menu.js","../node_modules/wgTek/wgRenderState.js","../node_modules/wgTek/wgContext.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@material-ui/core/esm/Paper/Paper.js","../node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js","../node_modules/@material-ui/core/esm/InputBase/InputBase.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@material-ui/core/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/sprintf-js/src/sprintf.js","../node_modules/gl-constants/lookup.js","../node_modules/gl-constants/1.0/numbers.js","../node_modules/glsl-shader-name/index.js","../node_modules/glsl-tokenizer/string.js","../node_modules/glsl-tokenizer/index.js","../node_modules/glsl-tokenizer/lib/operators.js","../node_modules/glsl-tokenizer/lib/literals-300es.js","../node_modules/glsl-tokenizer/lib/builtins-300es.js","../node_modules/atob-lite/atob-browser.js","../node_modules/add-line-numbers/index.js","../node_modules/pad-left/index.js","../node_modules/repeat-string/index.js","../node_modules/@material-ui/core/esm/utils/deprecatedPropType.js","../node_modules/@material-ui/core/esm/utils/unsupportedProp.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/core/esm/ListItem/ListItem.js","../node_modules/@material-ui/core/esm/IconButton/IconButton.js","../node_modules/is-in-browser/dist/module.js","../node_modules/jss/dist/jss.esm.js","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/core/esm/styles/makeStyles.js","../node_modules/@material-ui/core/esm/Card/Card.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/core/esm/CardContent/CardContent.js","../node_modules/@material-ui/core/esm/List/List.js","../node_modules/@material-ui/core/esm/ListItemText/ListItemText.js","../node_modules/@material-ui/core/esm/Grow/Grow.js","../node_modules/@material-ui/core/esm/Portal/Portal.js","../node_modules/@material-ui/core/esm/MenuItem/MenuItem.js","../node_modules/@material-ui/core/esm/AppBar/AppBar.js","../node_modules/@material-ui/core/esm/Toolbar/Toolbar.js","../node_modules/@material-ui/core/esm/Button/Button.js","../node_modules/@material-ui/core/esm/CircularProgress/CircularProgress.js","../node_modules/@material-ui/core/esm/DialogTitle/DialogTitle.js","../node_modules/@material-ui/core/esm/FormControl/FormControl.js","../node_modules/@material-ui/core/esm/Input/Input.js","../node_modules/@material-ui/core/esm/FilledInput/FilledInput.js","../node_modules/@material-ui/core/esm/DialogContent/DialogContent.js","../node_modules/@material-ui/core/esm/DialogActions/DialogActions.js","../node_modules/@material-ui/core/esm/FormControlLabel/FormControlLabel.js","../node_modules/@material-ui/core/esm/Grid/Grid.js","../node_modules/@material-ui/core/esm/Switch/Switch.js","../node_modules/@material-ui/core/esm/CardHeader/CardHeader.js","../node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","../../src/authority/ProtocolMode.ts","../../src/utils/MathUtils.ts","../../src/crypto/GuidGenerator.ts","../../src/utils/BrowserStringUtils.ts","../../src/encode/Base64Encode.ts","../../src/encode/Base64Decode.ts","../../src/crypto/PkceGenerator.ts","../../src/crypto/BrowserCrypto.ts","../../src/cache/DatabaseStorage.ts","../../src/crypto/CryptoOps.ts","../../src/crypto/ICrypto.ts","../../src/error/ClientConfigurationError.ts","../../src/url/UrlString.ts","../../src/network/ThrottlingUtils.ts","../../src/authority/OpenIdConfigResponse.ts","../../src/utils/TimeUtils.ts","../../src/cache/entities/AuthorityMetadataEntity.ts","../../src/authority/RegionDiscovery.ts","../../src/authority/Authority.ts","../../src/authority/CloudInstanceDiscoveryResponse.ts","../../src/authority/AuthorityFactory.ts","../../src/cache/entities/CredentialEntity.ts","../../src/request/ScopeSet.ts","../../src/account/AuthToken.ts","../../src/cache/CacheManager.ts","../../src/config/ClientConfiguration.ts","../../src/crypto/PopTokenGenerator.ts","../../src/network/NetworkManager.ts","../../src/client/BaseClient.ts","../../src/request/RequestValidator.ts","../../src/request/RequestParameterBuilder.ts","../../src/cache/entities/IdTokenEntity.ts","../../src/cache/entities/AccessTokenEntity.ts","../../src/cache/entities/RefreshTokenEntity.ts","../../src/cache/entities/CacheRecord.ts","../../src/utils/ProtocolUtils.ts","../../src/cache/entities/AppMetadataEntity.ts","../../src/cache/persistence/TokenCacheContext.ts","../../src/response/ResponseHandler.ts","../../src/client/AuthorizationCodeClient.ts","../../src/client/RefreshTokenClient.ts","../../src/client/SilentFlowClient.ts","../../src/cache/entities/ServerTelemetryEntity.ts","../../src/telemetry/server/ServerTelemetryManager.ts","../../src/cache/entities/ThrottlingEntity.ts","../../src/cache/BrowserStorage.ts","../../src/cache/MemoryStorage.ts","../../src/utils/BrowserProtocolUtils.ts","../../src/cache/BrowserCacheManager.ts","../../src/network/INetworkModule.ts","../../src/network/FetchClient.ts","../../src/network/XhrClient.ts","../../src/utils/BrowserUtils.ts","../../src/navigation/NavigationClient.ts","../../src/config/Configuration.ts","../../src/interaction_handler/InteractionHandler.ts","../../src/interaction_handler/RedirectHandler.ts","../../src/utils/PopupUtils.ts","../../src/interaction_handler/PopupHandler.ts","../../src/interaction_handler/SilentHandler.ts","../../src/app/PublicClientApplication.ts","../../src/app/ClientApplication.ts","../../src/lib/utils/assert.js","../../src/lib/category-api/image-type.js","../../src/lib/category-api/parsed-image-api.js","../../src/lib/parsers/svg-utils.js","../../src/lib/parsers/parse-to-image.js","../../src/lib/parsers/parse-to-image-bitmap.js","../../src/lib/category-api/binary-image-api.js","../../src/lib/parsers/parse-to-node-image.js","../../src/lib/parsers/parse-image.js","../../src/image-loader.js","../../src/lib/binary-utils/get-first-characters.js","../../src/lib/parser-utils/parse-json.js","../../src/lib/binary-utils/memory-copy-utils.js","../../src/lib/gltf-utils/resolve-url.js","../../src/lib/gltf-utils/get-typed-array.js","../../src/lib/draco-module-loader.js","../../src/lib/library-utils/library-utils.js","../../src/categories/mesh/mesh-utils.js","../../src/lib/draco-parser.js","../../src/draco-loader.js","../../src/lib/gltf-utils/gltf-utils.js","../../src/lib/gltf-scenegraph.js","../../src/lib/deprecated/binary-image-api-deprecated.js","../../src/lib/gltf-constants.js","../../src/lib/gltf-utils/gltf-attribute-utils.js","../../src/lib/extensions/KHR_draco_mesh_compression.js","../../src/lib/extensions/KHR_lights_punctual.js","../../src/lib/extensions/KHR_materials_unlit.js","../../src/lib/extensions/KHR_techniques_webgl.js","../../src/lib/extensions/gltf-extensions.js","../../src/lib/parse-glb.js","../../src/lib/normalize-gltf-v1.js","../../src/lib/extensions/KHR_binary_gltf.js","../../src/lib/post-process-gltf.js","../../src/lib/parse-gltf.js","../../src/gltf-loader.js","../../src/lib/worker-loader-utils/validate-loader-version.js","../../src/lib/loader-utils/normalize-loader.js","../../src/javascript-utils/is-type.js","../../src/lib/path-utils/file-aliases.js","../../src/lib/utils/mime-type-utils.js","../../src/lib/utils/resource-utils.js","../../src/lib/utils/response-utils.js","../../src/lib/fetch/fetch-error-message.js","../../src/lib/fetch/fetch-file.js","../../src/lib/loader-utils/loggers.js","../../src/lib/loader-utils/option-utils.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../../src/lib/iterator-utils/async-iteration.js","../../src/iterator-utils/make-iterator/string-iterator.js","../../src/iterator-utils/make-iterator/array-buffer-iterator.js","../node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../../src/iterator-utils/make-iterator/blob-iterator.js","../../src/iterator-utils/make-iterator/stream-iterator.js","../../src/iterator-utils/make-iterator/make-iterator.js","../../src/lib/loader-utils/get-data.js","../../src/lib/loader-utils/context-utils.js","../../src/lib/worker-utils/get-worker-url.js","../../src/lib/worker-utils/get-transfer-list.js","../../src/lib/worker-utils/worker-thread.js","../../src/lib/worker-utils/worker-pool.js","../../src/lib/worker-utils/worker-farm.js","../../src/lib/loader-utils/parse-with-worker.js","../../src/lib/api/register-loaders.js","../../src/lib/api/select-loader.js","../../src/lib/api/parse.js","../node_modules/@material-ui/system/esm/css.js","../node_modules/@material-ui/system/esm/compose.js","../node_modules/@material-ui/system/esm/style.js","../node_modules/@material-ui/system/esm/borders.js","../node_modules/@material-ui/system/esm/display.js","../node_modules/@material-ui/system/esm/flexbox.js","../node_modules/@material-ui/system/esm/grid.js","../node_modules/@material-ui/system/esm/positions.js","../node_modules/@material-ui/system/esm/palette.js","../node_modules/@material-ui/system/esm/shadows.js","../node_modules/@material-ui/system/esm/sizing.js","../node_modules/@material-ui/system/esm/typography.js","../node_modules/@material-ui/styles/esm/styled/styled.js","../node_modules/@material-ui/core/esm/styles/styled.js","../node_modules/@material-ui/core/esm/Box/Box.js","../node_modules/@material-ui/core/esm/Select/SelectInput.js","../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js","../node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js","../node_modules/@material-ui/core/esm/Select/Select.js","../node_modules/react-query/es/core/query.js","../node_modules/react-query/es/core/queryCache.js","../node_modules/react-query/es/core/mutationCache.js","../node_modules/react-query/es/core/infiniteQueryBehavior.js","../node_modules/react-query/es/core/queryClient.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@material-ui/core/esm/Modal/ModalManager.js","../node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","../node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","../node_modules/@material-ui/core/esm/Modal/Modal.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@material-ui/core/esm/internal/svg-icons/CheckBox.js","../node_modules/@material-ui/core/esm/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@material-ui/core/esm/Checkbox/Checkbox.js","../node_modules/react-query/es/core/queryObserver.js","../node_modules/react-query/es/react/QueryErrorResetBoundary.js","../node_modules/react-query/es/react/useBaseQuery.js","../node_modules/react-query/es/react/useQuery.js","../node_modules/@material-ui/core/esm/Fade/Fade.js","../node_modules/@material-ui/core/esm/Backdrop/Backdrop.js","../node_modules/@material-ui/core/esm/Dialog/Dialog.js","../node_modules/@material-ui/core/esm/FormLabel/FormLabel.js","../node_modules/@material-ui/core/esm/InputLabel/InputLabel.js","../node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js","../node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js","../node_modules/@material-ui/core/esm/Popper/Popper.js","../node_modules/@material-ui/core/esm/Tooltip/Tooltip.js","../node_modules/@material-ui/core/esm/Slider/ValueLabel.js","../node_modules/@material-ui/core/esm/Slider/Slider.js","../node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js","../node_modules/@material-ui/core/esm/TextField/TextField.js","../node_modules/react-query/es/core/mutationObserver.js","../node_modules/react-query/es/react/useMutation.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js"],"names":["EPSILON","ARRAY_TYPE","Float32Array","Array","RANDOM","Math","random","PI","create","out","glMatrix","fromMat4","a","clone","copy","fromValues","m00","m01","m02","m10","m11","m12","m20","m21","m22","set","identity","transpose","a01","a02","a12","invert","a00","a10","a11","a20","a21","a22","b01","b11","b21","det","adjoint","determinant","multiply","b","b00","b02","b10","b12","b20","b22","translate","v","x","y","rotate","rad","s","sin","c","cos","scale","fromTranslation","fromRotation","fromScaling","fromMat2d","fromQuat","q","z","w","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","projection","width","height","str","frob","hypot","add","subtract","multiplyScalar","multiplyScalarAndAdd","exactEquals","equals","a0","a1","a2","a3","a4","a5","a6","a7","a8","b0","b1","b2","b3","b4","b5","b6","b7","b8","abs","max","i","arguments","length","sqrt","mul","sub","m03","m13","m23","m30","m31","m32","m33","axis","t","len","rotateX","rotateY","rotateZ","fromXRotation","fromYRotation","fromZRotation","fromRotationTranslation","xy","xz","yz","fromQuat2","translation","bx","by","bz","bw","ax","ay","az","aw","magnitude","getTranslation","mat","getScaling","getRotation","scaling","is1","is2","is3","sm11","sm12","sm13","sm21","sm22","sm23","sm31","sm32","sm33","trace","S","fromRotationTranslationScale","sx","sy","sz","fromRotationTranslationScaleOrigin","o","ox","oy","oz","out0","out1","out2","out4","out5","out6","out8","out9","out10","frustum","left","right","bottom","top","near","far","rl","tb","nf","perspective","fovy","aspect","f","tan","Infinity","perspectiveFromFieldOfView","fov","upTan","upDegrees","downTan","downDegrees","leftTan","leftDegrees","rightTan","rightDegrees","xScale","yScale","ortho","lr","bt","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","targetTo","target","a9","a14","a15","b9","b13","b14","b15","divide","ceil","floor","min","round","scaleAndAdd","distance","squaredDistance","squaredLength","negate","inverse","normalize","dot","cross","lerp","hermite","d","factorTimes2","factor1","factor2","factor3","factor4","bezier","inverseFactor","inverseFactorTimesTwo","r","zScale","transformMat4","m","transformMat3","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","p","angle","mag","cosine","acos","zero","div","dist","sqrDist","sqrLen","forEach","vec","stride","offset","count","fn","arg","l","u","A","B","C","D","E","F","G","H","I","J","v1","v2","v3","v4","s1","s2","ix","iy","iz","iw","setAxisAngle","getAxisAngle","out_axis","getAngle","dotproduct","calculateW","exp","et","ln","atan2","log","pow","slerp","omega","cosom","sinom","scale0","scale1","u1","u2","u3","sqrt1MinusU1","sqrtU1","invDot","conjugate","fromMat3","fRoot","fTrace","j","k","fromEuler","halfToRad","cx","cy","cz","vec4","rotationTo","tmpvec3","vec3","xUnitVec3","yUnitVec3","sqlerp","temp1","temp2","setAxes","matr","mat3","view","transformMat2","transformMat2d","p0","p1","sinC","cosC","module","exports","require","_extends","Object","assign","source","key","prototype","hasOwnProperty","call","apply","this","HeaderNames","PersistentCacheKeys","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","ADFS","AAD_INSTANCE_DISCOVERY_ENDPT","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","KNOWN_PUBLIC_CLOUDS","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","SSOTypes","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheSchemaType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","ClientInfo","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","CACHE_KEY","REFRESH_TIME_SECONDS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","ThrottlingConstants","DEFAULT_THROTTLE_TIME_SECONDS","DEFAULT_MAX_THROTTLE_TIME_SECONDS","THROTTLING_PREFIX","X_MS_LIB_CAPABILITY_VALUE","Errors","INVALID_GRANT_ERROR","CLIENT_MISMATCH_ERROR","wMath","azimuth","theta","res","vec2","tmp","asin","ang","MathConst","fTWO_PI","vFrom","vTo","result","quat","console","edge0","edge1","clamp","v0","minValue","maxValue","valueRange","vertexArray","index","matAdd","m0","m1","mat4","m3","n","u0","e0","vectorProjection","e1","e2","minVal","maxVal","vOut","indices","symMat3","eigenValues","eigenVectors","fEps","u2p1","temp","sortedIndices","getSortedIndices","tmp0","tmp1","sortedEigenVectors","bits","Uint32Array","radicalInverse_VdC","log2","line0x0","line0y0","line0x1","line0y1","line1x0","line1y0","line1x1","line1y1","invDet","l2T","point","polygon","L0","L1","windingNumber","P0","P1","lineLineIntersection","P","vertexCount","isPointLeft","pos","planeEq","origo","signedDistToPlane","getSignedDistanceToPlane","vec3Add","lat","lng","tileSize","lambda2","fDegToRad","phi2","fPI","fPI_QUARTER","atan","fRadToDeg","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","ApiId","InteractionType","InteractionStatus","BrowserConstants","INTERACTION_IN_PROGRESS_VALUE","POPUP_WIDTH","POPUP_HEIGHT","POPUP_NAME_PREFIX","POLL_INTERVAL_MS","MSAL_SKU","WrapperSKU","DEFAULT_REQUEST","scopes","KEY_FORMAT_JWK","_objectWithoutProperties","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","toVal","mix","isArray","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","value","error","done","Promise","then","_asyncToGenerator","self","args","err","undefined","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_createClass","protoProps","staticProps","withStyles","stylesOrCreator","options","Component","defaultTheme","_options$withTheme","withTheme","name","stylesOptions","classNamePrefix","useStyles","makeStyles","displayName","WithStyles","React","forwardRef","ref","classes","theme","innerRef","other","defaultProps","more","useTheme","getThemeProps","createElement","hoistNonReactStatics","withStylesWithoutDefault","Vec4Colors","White","Black","Red","DarkRed","Green","DarkGreen","Blue","DarkBlue","Yellow","Orange","DarkGrey","Grey","LightGrey","Vec3Basics","Zero","X","Y","Z","fEps2","fPI_HALF","fInvPi","fInvTwoPi","fSqrt2","fSqrt3","fE","fGoldenRatio","fOneMinusEps","isServer","window","noop","functionalUpdate","updater","input","isValidTimeout","ensureQueryKeyArray","timeUntilStale","updatedAt","staleTime","Date","now","parseQueryArgs","arg1","arg2","arg3","isQueryKey","queryKey","queryFn","parseMutationArgs","mutationKey","mutationFn","parseFilterArgs","matchQuery","filters","query","isActive","active","exact","fetching","inactive","predicate","stale","queryHash","hashQueryKeyByOptions","partialMatchKey","isStale","isFetching","matchMutation","mutation","hashQueryKey","state","status","queryKeyHashFn","asArray","JSON","stringify","_","val","isPlainObject","keys","sort","reduce","partialDeepEqual","some","replaceEqualDeep","array","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","constructor","prot","toString","sleep","timeout","setTimeout","scheduleMicrotask","callback","catch","ClientAuthErrorMessage","clientInfoDecodingError","code","desc","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","unableToGetOpenidConfigError","hashNotDeserialized","blankGuidGenerated","invalidStateError","stateMismatchError","stateNotFoundError","nonceMismatchError","nonceNotFoundError","noTokensFoundError","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","tokenRequestCannotBeMade","appendEmptyScopeError","removeEmptyScopeError","appendScopeSetError","emptyInputScopeSetError","DeviceCodePollingCancelled","DeviceCodeExpired","NoAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","CachePluginError","noCryptoObj","invalidCacheType","unexpectedAccountType","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsRequired","noAuthorizationCodeFromServer","noAzureRegionDetected","accessTokenEntityNullError","errorCode","errorMessage","setPrototypeOf","ClientAuthError","createClientInfoDecodingError","caughtError","createClientInfoEmptyError","createTokenParsingError","caughtExtractionError","createTokenNullOrEmptyError","invalidRawTokenString","createEndpointDiscoveryIncompleteError","errDetail","createNetworkError","endpoint","split","createUnableToGetOpenidConfigError","createHashNotDeserializedError","hashParamObj","createInvalidStateError","invalidState","errorString","createStateMismatchError","createStateNotFoundError","missingState","createNonceMismatchError","createNonceNotFoundError","missingNonce","createNoTokensFoundError","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","createAppendEmptyScopeToSetError","givenScope","createRemoveEmptyScopeFromSetError","createAppendScopeSetError","appendError","createEmptyInputScopeSetError","givenScopeSet","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","createNoCryptoObjectError","operationName","createInvalidCacheTypeError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","decodeAuthToken","authToken","StringUtils","isEmpty","matches","exec","header","JWSPayload","JWSSig","isEmptyObj","strObj","obj","parse","e","startsWith","search","endsWith","lastIndexOf","queryStringToObject","match","pl","decode","decodeURIComponent","replace","trimArrayEntries","arr","map","entry","trim","removeEmptyStringsFromArray","filter","jsonParseHelper","matchPattern","pattern","RegExp","test","_slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","push","unsupportedIterableToArray","BrowserAuthErrorMessage","BrowserAuthError","createPkceNotGeneratedError","createCryptoNotAvailableError","createHttpMethodNotImplementedError","method","createEmptyNavigationUriError","createEmptyHashError","hashValue","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createPopupWindowError","createEmptyWindowCreatedError","createUserCancelledError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentSSOInsufficientInfoError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createNoNetworkConnectivityError","createPostRequestFailedError","errorDesc","createGetRequestFailedError","createFailedToParseNetworkResponseError","capitalize","string","Error","_formatMuiErrorMessage","charAt","toUpperCase","slice","EventType","_defineProperty","AuthErrorMessage","suberror","AuthError","subError","createUnexpectedError","errDesc","useForkRef","refA","refB","refValue","setRef","ownKeys","object","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_typeof","_inheritsLoose","subClass","superClass","notifyManager","NotifyManager","queue","transactions","notifyFn","batchNotifyFn","_proto","batch","flush","schedule","_this","batchCalls","_this2","_len","_key","_this3","setNotifyFunction","setBatchNotifyFunction","decomposeColor","color","type","substr","re","concat","colors","parseInt","join","hexToRgb","marker","substring","values","parseFloat","recomposeColor","getContrastRatio","foreground","background","lumA","getLuminance","lumB","rgb","h","hslToRgb","Number","toFixed","fade","darken","coefficient","lighten","_inherits","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Reflect","construct","ownerDocument","node","document","useEnhancedEffect","useEventCallback","current","historyContext","context","createContext","createNamedContext","Router","location","computeRootMatch","path","url","params","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","unlisten","render","RouterContext","history","staticContext","HistoryContext","children","cache","cacheCount","matchPath","strict","sensitive","matched","cacheKey","pathCache","regexp","pathToRegexp","compilePath","end","memo","Route","component","addLeadingSlash","stripBasename","basename","base","createURL","createPath","staticHandler","methodName","invariant","Switch","child","element","computedMatch","useContext","useParams","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","has","get","newObj","hasPropertyDescriptor","_utils","createSvgIcon","arrayWithHoles","nonIterableRest","_toConsumableArray","arrayLikeToArray","iterableToArray","wgResourceType","wgUnknown","wgBuffer","wgVertexBuffer","wgElementsVertexBuffer","wgUniformBuffer","wgStorageBuffer","wgShader","wgMaterial","wgTexture","wgMesh","wgFbo","wgPrimitiveRender","wgUiRender","wgScene","wgMeshBuilder","wgResource","context_","name_","type_","BrowserConfigurationAuthErrorMessage","BrowserConfigurationAuthError","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","createStorageNotSupportedError","givenStorageLocation","createInvalidCallbackObjectError","callbackObject","createRedirectCallbacksNotSetError","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","wHitRecord","validHit_","hitTimes_","hitId_","byteSizeOfFloat","BYTES_PER_ELEMENT","VertexType","VT_Vertex2","VT_Vertex3","VT_Vertex3Normal3Color3","VT_Vertex3Normal3","VT_Vertex3Normal3BatchID1","VT_Vertex3Normal3Color3BatchID1","VT_Vertex4","VT_VertexColor4","VT_VertexColorNormal4","VT_VertexColorUv4","VT_VertexNormalUv3","wgVertexLayout","attLocation","attDimension","attDataType","attLocation_","attDimension_","attDataType_","stride_","offset_","attType_","wgVertexDescriptor","vertexType","gl","vertexType_","vertexLayout_","sizeInBytes_","FLOAT","bufferHandle_","numberOfElements_","elementSize_","size_","usage_","deleteBuffer","bindBuffer","usage","numElements","elementSize","data","validType","validUsage","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","UNIFORM_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","STREAM_DRAW","createBuffer","bind","bufferData","unbind","getContext","bufferSubData","wgVertexBufferType","wgIndexType","wgUnsignedByte","wgUnsignedShort","wgUnsignedInt","vertexBufferType_","vertexBuffer_","indexBuffer_","indexType_","indexGlType_","hasIndexBuffer_","vertexArrayObject_","vertexAtributes_","vertexCount_","deleteVertexArray","vertexSizeInBytes_","bindVertexArray","primitiveType","drawElements","getGlIndexType","drawArrays","vertexLayouts","numberOfVertices","vertexSize","vertexData","createVertexArray","va","enableVertexAttribArray","vertexAttribPointer","getStride","getOffset","indexType","indexData","indexBytesSize","UNSIGNED_BYTE","UNSIGNED_SHORT","UNSIGNED_INT","getVertexByteSize","updateBuffer","BrowserRouter","createHistory","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","LinkAnchor","navigate","onClick","rest","event","ex","isModifiedEvent","forwardedRef","Link","href","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","style","toLocation","escapedPath","classnames","joinClassnames","_objectWithoutPropertiesLoose","sourceKeys","wgTextureFiltering","wgTextureWrapping","width_","height_","depth_","activeTexture_","textureHandle_","textureType_","textureFormat_","textureDataType_","textureFiltering_","textureWrapS_","textureWrapT_","textureWrapU_","activeTextureChannel","textureType","validTextureType","TEXTURE_2D","TEXTURE_CUBE_MAP","TEXTURE_2D_ARRAY","TEXTURE_3D","TEXTURE0","createTexture","deleteTexture","getWidth","getHeight","tfNearest","tfMipMap","create2D","activeTexture","bindTexture","getTextureHandle","texParameteri","TEXTURE_WRAP_S","REPEAT","TEXTURE_WRAP_T","glTextureHandle","internalFormat","layers","nearestfiltering","createTextureHandle","texStorage3D","CLAMP_TO_EDGE","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","LINEAR","createMipMap","texStorage2D","isPowerOfTwo","LINEAR_MIPMAP_LINEAR","generateMipmap","image","imageFormat","dataType","texImage2D","DEPTH_COMPONENT32F","DEPTH_COMPONENT","TEXTURE_COMPARE_FUNC","LEQUAL","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","dataFormat","texSubImage2D","texSubImage3D","wTriangle","p2","p0_","p1_","p2_","ray","hitRecord","p1p0","p2p0","tVec","pVec","getOrigin","getDirection","fU","qVec","fV","wGizmoMode","TRANSLATE","ROTATE","SCALE","TRACKBALL","INACTIVE","wGizmoAxis","NO_AXIS","X_AXIS","Y_AXIS","Z_AXIS","wGizmo","size","gizmoSize_","intersectionTolerance_","grappingPivotPoint_","pivot_","gizmoMode_","axisLines_","axisCircles_","selectedAxis_","hoverAxis_","isDragging_","isHovering_","isActive_","transform_","translation_","startTranslation_","translationDelta_","rotationPivot_","rotation_","deltaAngle_","circlePoint_","snapToAngle_","snapAngle_","rotationUpdateStartPoint_","rotationUpdatePoint_","scalePivot_","scale_","mousePivotNdc_","uniformScaleFactor_","uniformScaling_","minScaling_","maxScaling_","cameraRay_","wRay","createGizmoGeometry","mode","vX","vY","vZ","vXs","vYs","vZs","vGs","wLine","wCircle","triVertices","axisLine","getAxisLine","getPoint","scaleTriangle_","idx","setLine","axisCircle","getCenterPoint","getNormal","getRadius","tri","scaleTri","mouseRay","mousePos","isLeftMouseDown","transformUpdated","updateTranslation","updateHover","updateRotation","updateScale","updateTransform","pivot","resetGizmo","lineIntersections","rayT","rayLineClosestDistance","closestPointOnLine","distToCamera","distToCameraEps","evaluateRay","isecAxis","getIndexOfMinComponent","isIntersectingLine","isecPoint","circleIntersections","getAxisCircle","rayCircleClosestDistance","circleCenter","tmp2","tmp3","v0v1","sign","nV0","nV1","rotationAxis","getRotationAxis","numSamples","mouseNdc","getScaleTriangle","rayIntersect","isValidHit","mm","mProj","vectorProjectionV2","projLen","uniformScaleDelta","sc","deltaVec","scaleDelta","sgn","getLineDirection","scaleDeltaVec","t1","t2","rot","rot1","negP","intersections","selected","invR","useFormControl","FormControlContext","prefix","condition","message","Subscribable","listeners","subscribe","listener","onSubscribe","onUnsubscribe","hasListeners","useThemeWithoutDefault","formControlState","_ref","states","muiFormControl","acc","isAbsolute","spliceOne","list","pop","resolvePathname","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","part","unshift","valueOf","valueEqual","every","item","aValue","bValue","stripLeadingSlash","toLowerCase","hasBasename","stripTrailingSlash","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","splice","canGo","_getPrototypeOf","getPrototypeOf","__proto__","useControlled","controlled","defaultProp","default","isControlled","_React$useState","valueState","setValue","newValue","SvgIcon","_props$color","_props$component","_props$fontSize","fontSize","htmlColor","titleAccess","_props$viewBox","viewBox","clsx","root","focusable","role","muiName","userSelect","display","fill","flexShrink","typography","pxToRem","transition","transitions","duration","shorter","colorPrimary","palette","primary","main","colorSecondary","secondary","colorAction","colorError","colorDisabled","disabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","createChainedFunction","funcs","func","_len2","_key2","assert","generateAccountId","homeAccountId","environment","CACHE_KEY_SEPARATOR","generateAccountKey","AccountEntity","generateAccountCacheKey","tenantId","realm","username","localAccountId","generateType","authorityType","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","getAccountInfo","idTokenClaims","accountInterface","createAccount","clientInfo","authority","idToken","oboAssertion","cloudGraphHostName","msGraphHost","account","env","getPreferredCache","claims","tid","oid","preferred_username","emails","createGenericAccount","Adfs","upn","generateHomeAccountId","serverClientInfo","authType","logger","cryptoObj","accountId","uid","utid","CLIENT_INFO_SEPARATOR","verbose","isAccountEntity","entity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","defaultRetryDelay","failureCount","isCancelable","cancel","CancelledError","revert","silent","isCancelledError","Retryer","config","cancelFn","continueFn","promiseResolve","promiseReject","cancelRetry","cancelOptions","continue","isPaused","isResolved","isTransportCancelable","promise","outerResolve","outerReject","onSuccess","onError","run","promiseOrValue","_unused","_config$retry","_config$retryDelay","retry","retryDelay","delay","shouldRetry","onFail","focusManager","isFocused","onlineManager","isOnline","continueResolve","onPause","onContinue","vertexShader_","fragmentShader_","shaderProgram_","uniformLocationMap_","Map","attribLocationMap_","useProgram","deleteShader","deleteProgram","clear","vertexShaderSrc","fragmentShaderSrc","attribLocations","compileShader","VERTEX_SHADER","FRAGMENT_SHADER","createProgram","attachShader","attribName","bindAttribLocation","linkProgram","getProgramParameter","LINK_STATUS","errLog","getProgramInfoLog","numAttribs","ACTIVE_ATTRIBUTES","getActiveAttrib","aLoc","getAttribLocation","shaderSource","shaderType","shader","createShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fmt","formatCompilerError","warn","long","short","createShaderProgram","attributeName","attribLoc","uniformName","uniformLoc","uLoc","getUniformLocation","textureUnit","uniform1i","textureUnits","uniform1iv","uniform1f","uniform2f","uniform3f","uniform3fv","uniform4f","uniform4iv","i0","i1","i2","i3","uniform4i","uniform4fv","uniformMatrix3fv","uniformMatrix4fv","defaultVariantMapping","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","Typography","_props$align","align","_props$display","_props$gutterBottom","gutterBottom","_props$noWrap","noWrap","_props$paragraph","paragraph","_props$variant","variant","_props$variantMapping","variantMapping","margin","caption","button","overline","srOnly","position","overflow","alignLeft","textAlign","alignCenter","alignRight","alignJustify","textOverflow","whiteSpace","marginBottom","colorInherit","colorTextPrimary","text","colorTextSecondary","displayInline","displayBlock","warning","ServerError","AuthorityType","_interopRequireDefault","_interopRequireWildcard","_default","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","tagName","readOnly","isContentEditable","focusTriggersKeyboardModality","handleBlurVisible","clearTimeout","useIsFocusVisible","onBlurVisible","doc","ReactDOM","merge","deepmerge","createMuiTheme","isMuiElement","muiNames","easing","easeInOut","easeOut","easeIn","sharp","shortest","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","animatedProp","getAutoHeightDuration","constant","_Subscribable","FocusManager","setDefaultEventListener","setEventListener","setup","focused","setFocused","onFocus","includes","_window","ListContext","iter","stubbedPublicClientApplication","acquireTokenPopup","acquireTokenRedirect","acquireTokenSilent","getAllAccounts","getAccountByHomeId","getAccountByUsername","getAccountByLocalId","handleRedirectPromise","loginPopup","loginRedirect","logout","logoutRedirect","logoutPopup","ssoSilent","addEventCallback","removeEventCallback","getLogger","setLogger","setActiveAccount","getActiveAccount","initializeWrapperLibrary","setNavigationClient","getInteractionStatusFromEvent","eventType","LOGIN_START","Login","SSO_SILENT_START","SsoSilent","ACQUIRE_TOKEN_START","interactionType","Redirect","Popup","AcquireToken","HANDLE_REDIRECT_START","HandleRedirect","LOGOUT_START","Logout","LOGIN_SUCCESS","SSO_SILENT_SUCCESS","HANDLE_REDIRECT_END","LOGIN_FAILURE","SSO_SILENT_FAILURE","LOGOUT_END","None","ACQUIRE_TOKEN_SUCCESS","ACQUIRE_TOKEN_FAILURE","defaultMsalContext","inProgress","accounts","Logger","MsalContext","Consumer","getChildrenOrFunction","version","MsalProvider","useEffect","useMemo","useState","callbackId","currentAccounts","arrayA","arrayB","comparisonArray","elementA","elementB","accountArraysAreEqual","setAccounts","EventMessageUtils","setInProgress","contextValue","useMsal","getAccount","allAccounts","accountIdentifiers","accountObj","matchedAccounts","useAccount","initialStateValue","currentAccount","setAccount","matchAccount","useIsAuthenticated","isAuthenticated","setHasAuthenticated","UnauthenticatedTemplate","MsalAuthenticationTemplate","loadingComponent","errorComponent","accountIdentifier","msalAuthResult","authenticationRequest","login","useCallback","loginType","callbackInteractionType","loginRequest","callbackRequest","setResponse","hasBeenCalled","setHasBeenCalled","useMsalAuthentication","reflow","scrollTop","getTransitionProps","_props$style","transitionDuration","transitionDelay","globals","global","global_","isBrowser","String","process","isWorker","importScripts","nodeVersion","hasValue","isFilled","SSR","defaultValue","isAdornedStart","startAdornment","debounce","wait","debounced","that","later","ownerWindow","defaultView","_unsupportedIterableToArray","minLen","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_setPrototypeOf","wGeoSphereBuilder","vdata","tindices","spherePoints","depth","vec3Scale","v12","v23","v31","subdivideGeosphere","numSubDivisions","vertices","OnlineManager","online","setOnline","onOnline","onLine","tp","vec3Sub","Cs","pProj","Bs","V1","V2","S1","S2","s2s1","v1v2","closestLineDistanceToPoint","s2s1v1","s2s1v2","P2","getLength","dir","dotProd","projVec","MouseButtons","LeftButton","MiddleButton","RightButton","MouseEventHandler","mouseClicked_","mouseDoubleClicked_","mouseDown_","screenX_","screenY_","clientX_","clientY_","lastX_","lastY_","deltaMouseX_","deltaMouseY_","mouseInside_","mouseButton","wheelDelta_","normX_","normY_","screenX","screenY","offsetX","offsetY","rect","getBoundingClientRect","deltaY","resetMouseState","wPlane","planeNormal","pointInPlane","normal_","dp","planeEq_","planeOrigo_","N","O","DN","hitPos","hitDir","centerPosition","normal","radius","slices","center_","radius_","slices_","planePoint","circleProjectedPoint","cProj","fboWidth_","fboHeight_","attachedTextures_","hasDepthStencil_","hasFixedSize_","fboHandle_","createFramebuffer","renderBufferHandle_","texture","attachIndex","textureAttachment","COLOR_ATTACHMENT0","framebufferTexture2D","FRAMEBUFFER","bindFramebuffer","deleteRenderbuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT24","framebufferRenderbuffer","DEPTH_ATTACHMENT","shadowMapWidth","shadowMapHeight","shadowMapDepthTexture","createShadowMapDepthTexture","drawBuffers","readBuffer","numberOfCascades","setActiveTexture","resizeTextures","resize2D","createDepthStencilBuffer","_arrayLikeToArray","arr2","_assertThisInitialized","ReferenceError","origin","direction","origin_","dir_","indDir_","updateRay","invDir","rayPos","dirT","matrix","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthError","isInteractionRequiredError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","g","Function","useId","idOverride","defaultId","setDefaultId","id","LogLevel","loggerOptions","packageName","packageVersion","level","Info","localCallback","loggerCallback","piiLoggingEnabled","logLevel","logMessage","containsPii","timestamp","toUTCString","correlationId","executeCallback","errorPii","Warning","warningPii","infoPii","Verbose","verbosePii","Trace","tracePii","isPiiLoggingEnabled","buildClientInfo","rawClientInfo","crypto","decodedClientInfo","base64Decode","xs","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","breakpoints","_themeBreakpoints","breakpoint","ThemeContext","hasSymbol","for","zIndex","mobileStepper","speedDial","appBar","drawer","modal","snackbar","tooltip","u8","Uint8Array","u16","Uint16Array","u32","fleb","fdeb","clim","freb","eb","start","_a","fl","revfl","_b","fd","revfd","rev","hMap","cd","mb","co","le","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits16","shft","slc","subarray","ec","ind","msg","nt","captureStackTrace","inflt","dat","buf","st","sl","noBuf","noSt","cbuf","bl","nbuf","final","lm","dm","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","lt","dt","lms","dms","lpos","dsym","wbits","wbits16","hTree","maxSym","tr","mbt","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","wblk","syms","lf","df","li","bs","dlt","mlb","ddt","mdb","_c","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","ll","dl","flen","ftlen","dtlen","llm","lcts","it","clct","dst","deo","dflt","lvl","plvl","pre","post","lst","opt","msk_1","prev","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","ti","lin","din","crct","Int32Array","crc","cr","dopt","mem","wbytes","gzh","filename","mtime","charCodeAt","gzs","flg","zs","gzl","gzhl","gzipSync","opts","gunzipSync","td","TextDecoder","stream","queueMicrotask","Mutation","defaultOptions","mutationId","mutationCache","observers","getDefaultState","dispatch","addObserver","observer","removeObserver","retryer","execute","restored","variables","onMutate","executeMutation","onSettled","_this$options$retry","reducer","onMutationUpdate","notify","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","useQueryClient","queryClient","QueryClientProvider","client","_ref$contextSharing","mount","unmount","Context","Provider","getScrollbarSize","scrollDiv","body","appendChild","scrollbarSize","offsetWidth","clientWidth","removeChild","_isNativeReflectConstruct","sham","Proxy","toArrayBuffer","ArrayBuffer","TextEncoder","encode","compareArrayBuffers","arrayBuffer1","arrayBuffer2","byteLength","array1","array2","concatenateArrayBuffers","sources","sourceArrays","source2","typedArray","sourceArray","sliceArrayBuffer","arrayBuffer","byteOffset","subArray","SwitchBase","autoFocus","checkedProp","checked","checkedIcon","defaultChecked","disabledProp","icon","inputProps","inputRef","onBlur","onChange","required","tabIndex","_useControlled","Boolean","_useControlled2","setCheckedState","hasLabelFor","IconButton","newChecked","padding","cursor","opacity","Parent","Class","isNativeReflectConstruct","_cache","Wrapper","grey","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","propIsEnumerable","toObject","test1","test2","fromCharCode","test3","letter","shouldUseNative","requirePropFactory","componentNameInError","_possibleConstructorReturn","KeyboardEventHandler","numKeys_","keyDown_","keyPressed_","keyValue","TouchEventHandler","isDown_","deltaX_","deltaY_","inside_","startNewPath_","preventDefault","touches","stopImmediatePropagation","touchObj","changedTouches","clientX","clientY","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","createEventEmitter","handlers","on","handler","off","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","emitter","getChildContext","componentWillReceiveProps","nextProps","oldValue","PropTypes","isRequired","_Component2","getValue","onUpdate","observedBits","_proto2","isarray","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","flags","pretty","encodeURIComponent","token","segment","attachKeys","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","getChildMapping","mapFn","Children","isValidElement","mapper","getProp","prop","getNextChildMapping","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","cloneElement","exit","enter","TransitionGroup","_React$Component","handleExited","isMounting","firstRender","mounted","appear","currentChildMapping","_this$props","childFactory","TransitionGroupContext","Ripple","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","inProp","_props$onExited","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","_props$center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","container","startCommit","cb","oldRipples","_options$pulsate","_options$center","_options$fakeElement","fakeElement","sizeX","sizeY","clientHeight","stop","persist","pointerEvents","borderRadius","transform","animation","animationDuration","backgroundColor","flip","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$disabled","_props$disableRipple","disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","focusRipple","focusVisibleClassName","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","onDragLeave","_props$tabIndex","TouchRippleProps","_props$type","rippleRef","focusVisible","setFocusVisible","_useIsFocusVisible","focusVisibleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","focus","handleMouseDown","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","currentTarget","isNonNativeButton","keydownRef","handleKeyUp","defaultPrevented","ComponentProp","buttonProps","handleUserRef","handleOwnRef","handleRef","_React$useState2","mountedState","setMountedState","enableTouchRipple","alignItems","justifyContent","WebkitTapHighlightColor","outline","border","verticalAlign","textDecoration","borderStyle","colorAdjust","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","isGeneratorFunction","genFun","mark","awrap","async","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","nextTick","title","browser","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","_iterableToArray","_arrayWithHoles","_nonIterableRest","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","step","_e2","_wrapRegExp","BabelRegExp","_RegExp","_super","_groups","buildGroups","substitution","wgResourceCache","resourceMap_","resource","getName","resourceName","delete","sprintf","glConstants","shaderName","addLineNumbers","src","typeName","longForm","shortForm","errorStrings","errors","lineNo","lines","line","quadName","vertexBuffer","vertexDescriptor","createVertexBuffer","getVertexSizeInBytes","meshName","wBox","boxTriangles","getTriangulation","addVec3ToFloatArray","geoSphereBuilder_","triangles","buildGeoSphere","v0_","v1_","v2_","wcyl","wOrbitCamera","view_","projection_","jitterProjection_","viewProjection_","nearPlane_","farPlane_","fov_","viewPortWidth_","viewPortHeight_","aspectRatio_","pivotTarget_","cameraUp_","cameraPosition_","moveThreshold_","zoom_","zoomTarget_","minZoom_","yaw_","yawTarget_","pitch_","pitchTarget_","minPitch_","maxPitch_","rotationrotStiffness_","moveStiffenss_","cameraRotationSpeed_","cameraMovementSpeed_","cameraZoomSpeed_","toYUpSpace_","toUpSpace_","jitterEnabled_","jitterCount_","pixelX_","pixelY_","pixelSampleCount_","cameraOnb_","fovInDeg","perspectiveZO","cameraPos","toCamera","yawPitch","cartesianToPolar","upvec","getQuatFromUnitVectors","speed","zoom","getPosition","getDir","fx","fy","ndcX","ndcY","invViewProj","worldPos","normDir","deltaTime","mouseEventHandler","keyboardEventHandler","touchEventHandler","isDown","yawUpdate","pitchUpdate","deltaX","getDeltaX","getMouseDeltaX","getDeltaY","getMouseDeltaY","pivotUpdateX","pivotUpdateY","tmpx","tmpy","getRight","getUp","getMouseWheelDelta","zoomFactor","zoomUpdate","rotStiffness","clampF","moveStiffness","pivotDelta","isUpdated","polarToCartesian","polarOffset","crossTmp","hs","hammersley","jitter","jitterMat","resetJitter","pixelIndex","currentPixelIndex","timeoutDuration","longerTimeoutBrowsers","called","scheduled","isFunction","functionToCheck","getType","getStyleComputedProperty","property","css","getParentNode","getScrollParent","overflowX","overflowY","getReferenceNode","reference","isIE11","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nodeName","getRoot","findCommonOffsetParent","element1","element2","order","Node","range","commonAncestorContainer","isOffsetContainer","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","scrollLeft","getBordersSize","styles","sideA","sideB","getSize","computedStyle","getWindowSizes","getComputedStyle","getClientRect","offsets","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","parent","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","parentNode","getFixedPositionOffsetParent","el","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","isPaddingNumber","getArea","computeAutoPlacement","placement","rects","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","check","runModifiers","modifiers","ends","findIndex","cur","update","positionFixed","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","scrollElement","enableEventListeners","disableEventListeners","removeEventListeners","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requesting","requested","validPlacements","placements","clockwise","counter","BEHAVIORS","parseOffset","useHeight","basePlacement","fragments","frag","divider","splitRegex","ops","mergeWithPrevious","op","toValue","index2","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","bothOddWidth","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","attributes","Popper","requestAnimationFrame","modifierOptions","eventsEnabled","Utils","PopperUtils","Defaults","Fragment","createBreakpoints","_breakpoints$values","_breakpoints$unit","_breakpoints$step","between","endIndex","down","upperbound","only","createMixins","spacing","_toolbar","gutters","paddingLeft","paddingRight","toolbar","minHeight","common","black","white","indigo","pink","red","orange","blue","green","light","hint","paper","hover","hoverOpacity","selectedOpacity","disabledBackground","disabledOpacity","focusOpacity","activatedOpacity","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","createPalette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","_palette$info","_palette$success","success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","getContrastText","augmentColor","mainShade","lightShade","darkShade","contrastText","types","caseAllCaps","textTransform","defaultFontFamily","createTypography","_ref$fontFamily","fontFamily","_ref$fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","coef","buildVariant","fontWeight","lineHeight","letterSpacing","casing","variants","createShadow","shadows","shape","createSpacing","spacingInput","mui","createUnarySpacing","argument","output","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typographyInput","muiTheme","overrides","receiver","wPrimType","wPrim","wSphere","lats","longs","lats_","longs_","r0","rD","verts","trianglution","polar","sp","cp","sa","aStart","bStart","wgPrimRender","maxNumberOfPrims_","points_","lines_","triangles_","screenNdcVerts_","texture2DVerts_","texture3DVerts_","textures2D_","textures3D_","pointsUpdated_","linesUpdated_","trianglesUpdated_","screenNdcQuadUpdated_","texture2dUpdate_","texture3dUpdate_","numPoints_","numLines_","numTriangles_","numNdcVerts_","numTexture2d_","numTexture3d_","vertexT","vertexDescriptor_","pointVertexBuffer_","lineVertexBuffer_","triangleVertexBuffer_","ndcVertexBuffer_","texture2dVertexBuffer_","geoSphereGeometryTrianglesLod0_","geoSphereGeometryTrianglesLod1_","MaxNumberOfTextures","createShaders","primShader_","primTexture2dShader_","c0","c1","ellipsoid","ellipsoidVerts","addTriangle","vec4FromVec3","addLine","sphere","lod","dimension","v5","v6","v7","box","dim","planeOrigin","getPlaneOrigin","vec3Normalize","planeUp","planeRight","normColor","frustumPoints_","circle","points","getNumberOfSlices","angleStep","TB","frisvadONB","matEs","gramOrthonomalization","vr0","vec4Add","computeCirclePoints","vr1","cylinder","gizmo","getGizmoMode","gizmoColors","hoverAxis","getHoverAxis","selectedAxis","getSelectedAxis","isDragging","isHovering","addSphere","addCircleP","addPoint","addTrianglePrimitive","isUniformScaling","quad","qc","getQuadCorner","triangle","getPoints","c2","xpos","lineLength","p3","pX","pY","pZ","xmin","xmax","ymin","ymax","textureHandle","toNdc","c3","xAxis","yAxis","zAxis","tempBuffer","updateVertexBufferData","buffer","viewProjectionMatrix","bindProgram","setUniformMat4fv","POINTS","LINES","TRIANGLES","unbindProgram","disable","DEPTH_TEST","setTextureUniform","enable","getOffsetTop","vertical","getOffsetLeft","horizontal","getTransformOriginValue","transformOrigin","getAnchorEl","anchorEl","Popover","_props$anchorOrigin","anchorOrigin","anchorPosition","_props$anchorReferenc","anchorReference","containerProp","_props$elevation","elevation","getContentAnchorEl","_props$marginThreshol","marginThreshold","onEnter","onEntered","onEntering","onExit","onExiting","open","_props$PaperProps","PaperProps","_props$transformOrigi","_props$TransitionComp","TransitionComponent","Grow","_props$transitionDura","transitionDurationProp","_props$TransitionProp","TransitionProps","paperRef","getAnchorOffset","contentAnchorOffset","resolvedAnchorEl","anchorRect","nodeType","anchorVertical","getContentAnchorOffset","contentAnchorEl","contains","parentElement","offsetTop","getTransformOrigin","elemRect","getPositioningStyle","offsetHeight","elemTransformOrigin","anchorOffset","containerWindow","heightThreshold","innerHeight","widthThreshold","innerWidth","diff","_diff","_diff2","_diff3","setPositioningStyles","positioning","handlePaperRef","updatePosition","handleResize","muiSupportAuto","Modal","BackdropProps","invisible","isAppearing","Paper","minWidth","maxWidth","maxHeight","nextItem","disableListWrap","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","innerText","textContent","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","hasAttribute","MenuList","actions","_props$autoFocus","_props$autoFocusItem","autoFocusItem","_props$disabledItemsF","_props$disableListWra","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","containerElement","noExplicitWidth","activeItemIndex","items","newChildProps","List","activeElement","criteria","lowerKey","currTime","performance","keepFocusOnCurrent","RTL_ORIGIN","LTR_ORIGIN","Menu","_props$disableAutoFoc","disableAutoFocusItem","_props$MenuListProps","MenuListProps","onClose","PopoverClasses","menuListActionsRef","contentAnchorRef","WebkitOverflowScrolling","wgRenderState","blendingEnabled_","cullFaceEnabled_","depthTestEnabled_","multiSamplingEnabled_","scissorTestEnabled_","stencilTestEnabled_","polygonFillOffsetEnabled_","glDebugOutputEnabled_","pointSize_","lineWidth_","wgContext","canvas","gl_","canvas_","glState_","getParameter","MAX_SAMPLES","formatMuiErrorMessage","_props$square","square","outlined","rounded","elevations","shadow","boxShadow","getStyleValue","visibility","TextareaAutosize","rows","rowsMax","_props$rowsMin","rowsMin","rowsMinProp","shadowRef","renders","syncHeight","inputShallow","placeholder","boxSizing","scrollHeight","singleRowHeight","outerHeight","outerHeightStyle","prevState","InputBase","ariaDescribedby","autoComplete","endAdornment","_props$fullWidth","fullWidth","_props$inputComponent","inputComponent","_props$inputProps","inputPropsProp","inputRefProp","_props$multiline","multiline","renderSuffix","valueProp","handleInputRefWarning","handleInputPropsRefProp","handleInputRefProp","handleInputRef","fcs","onFilled","onEmpty","checkDirty","InputComponent","setAdornedStart","formControl","adornedStart","adornedEnd","marginDense","onAnimationStart","animationName","inputMultiline","hiddenLabel","inputHiddenLabel","inputAdornedStart","inputAdornedEnd","inputTypeSearch","inputMarginDense","stopPropagation","placeholderHidden","placeholderVisible","paddingTop","font","resize","StrictMode","Profiler","Suspense","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","L","M","escape","K","Q","_status","_result","R","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","toArray","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","lazy","_payload","_init","useDebugValue","useImperativeHandle","useLayoutEffect","useReducer","useRef","aa","ba","Set","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","stack","Oa","Pa","prepareStackTrace","Qa","tag","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","_wrapperState","initialChecked","Za","initialValue","$a","ab","bb","db","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","nb","ob","namespaceURI","innerHTML","MSApp","execUnsafeLocalFunction","pb","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","setProperty","ub","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","fc","gc","hc","ic","jc","kc","mc","nc","oc","pc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","shift","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","LN2","dd","unstable_UserBlockingPriority","ed","gd","hd","uc","jd","kd","ld","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","returnValue","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","pageX","pageY","shiftKey","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","elapsedTime","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","Xd","Zd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","mf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","fh","gh","hh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ii","ji","ki","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","extend","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","jsx","jsxs","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","bool","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","checkPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","not_string","json","not_json","modulo","key_access","index_access","format","parse_tree","pad","pad_character","pad_length","tree_length","node_type","is_positive","get_type","toExponential","toPrecision","_fmt","arg_names","SyntaxError","field_list","replacement_field","field_match","variable","vsprintf","_argv","gl10","0","1","2","3","4","5","6","256","512","513","514","515","516","517","518","519","768","769","770","771","772","773","774","775","776","1024","1028","1029","1032","1280","1281","1282","1285","1286","2304","2305","2849","2884","2885","2886","2928","2929","2930","2931","2932","2960","2961","2962","2963","2964","2965","2966","2967","2968","2978","3024","3042","3088","3089","3106","3107","3317","3333","3379","3386","3408","3410","3411","3412","3413","3414","3415","3553","4352","4353","4354","5120","5121","5122","5123","5124","5125","5126","5386","5890","6401","6402","6406","6407","6408","6409","6410","7680","7681","7682","7683","7936","7937","7938","9728","9729","9984","9985","9986","9987","10240","10241","10242","10243","10497","10752","16384","32769","32770","32771","32772","32773","32774","32777","32778","32779","32819","32820","32823","32824","32854","32855","32873","32926","32928","32936","32937","32938","32939","32968","32969","32970","32971","33071","33170","33189","33306","33635","33648","33901","33902","33984","33985","33986","33987","33988","33989","33990","33991","33992","33993","33994","33995","33996","33997","33998","33999","34000","34001","34002","34003","34004","34005","34006","34007","34008","34009","34010","34011","34012","34013","34014","34015","34016","34024","34041","34055","34056","34067","34068","34069","34070","34071","34072","34073","34074","34076","34338","34339","34340","34341","34342","34373","34466","34467","34660","34661","34816","34817","34818","34819","34877","34921","34922","34930","34962","34963","34964","34965","34975","35040","35044","35048","35632","35633","35660","35661","35663","35664","35665","35666","35667","35668","35669","35670","35671","35672","35673","35674","35675","35676","35678","35680","35712","35713","35714","35715","35716","35717","35718","35719","35720","35721","35722","35724","35725","36003","36004","36005","36006","36007","36048","36049","36050","36051","36053","36054","36055","36057","36061","36064","36096","36128","36160","36161","36162","36163","36164","36168","36176","36177","36178","36179","36180","36181","36194","36336","36337","36338","36339","36340","36341","36346","36347","36348","36349","37440","37441","37442","37443","37444","tokenize","atob","b64","total","NORMAL","content","isnum","isoperator","allBuiltins","builtins100","allLiterals","literals100","builtins300es","literals300es","builtinsDict","literalsDict","chunk","block_comment","line_comment","preprocessor","operator","integer","hex","decimal","TOKEN","readtoken","whitespace","write","column","determine_operator","is_composite_operator","operators","contentstr","v100","padLeft","delim","totalDigits","digits","num","deprecatedPropType","validator","reason","unsupportedProp","ListItem","_props$alignItems","_props$button","childrenProp","componentProp","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$dense","dense","_props$disableGutters","disableGutters","_props$divider","_props$selected","childContext","listItemRef","hasSecondaryAction","componentProps","alignItemsFlexStart","secondaryAction","paddingBottom","borderBottom","backgroundClip","_props$edge","edge","_props$disableFocusRi","disableFocusRipple","_props$size","edgeStart","edgeEnd","label","marginRight","sizeSmall","plainObjectConstrurctor","cloneStyle","newStyle","createRule","decl","jss","declCopy","rule","plugins","onCreateRule","toCssValue","ignoreImportant","cssValue","indentStr","indent","toCss","selector","_options$indent","fallbacks","_prop","_value","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","BaseStyleRule","isProcessed","renderer","renderable","sheet","Renderer","force","onChangeValue","isDefined","remove","removeProperty","attached","StyleRule","_BaseStyleRule","selectorText","scoped","generateId","applyTo","toJSON","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","at","rules","atMatch","RuleList","getRule","addRule","onProcessRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","plugin","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","defaultUpdateOptions","forceUpdateOptions","raw","ruleOptions","_this$options","register","unregister","updateOne","_this$options2","styleRule","nextValue","_nextValue","_prevValue","StyleSheet","deployed","attach","deploy","detach","insertRule","addRules","added","deleteRule","_this$rules","PluginsRegistry","internal","external","registry","onProcessSheet","processedValue","use","newPlugin","SheetsRegistry","_temp","globalThis$1","ns","moduleId","createGenerateId","ruleCounter","jssId","minify","memoize","getPropertyValue","cssRule","attributeStyleMap","getHead","findPrevNode","registry$1","insertionPoint","findHigherSheet","findHighestSheet","comment","childNodes","findCommentNode","getNonce","_insertRule","appendRule","cssRules","getValidRuleInsertionIndex","maxIndex","DomRenderer","hasInsertedRules","media","createStyle","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","isInBrowser","createStyleSheet","removeStyleSheet","getDynamicStyles","extracted","hasCSSTOMSupport","multiKeyStore","key1","key2","subCache","pseudoClasses","fnValuesNs","fnRuleNs","functionPlugin","fnValues","fnRule","atPrefix","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","scope","jssGlobal","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","parentRegExp","jssNested","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","nested","getOptions","prevOptions","nestingLevel","isNested","isNestedConditional","uppercasePattern","msPattern","toHyphenLower","hyphenateStyleName","hName","convertCase","converted","hyphenate","camelCase","hyphenatedProp","px","ms","percent","addCamelCasedVersion","regExp","units","inset","motion","gap","grid","iterate","innerProp","_innerProp","defaultUnit","camelCasedOptions","js","vendor","isTouch","jsCssMap","Moz","Webkit","appearence","noPrefill","supportedProperty","toUpper","camelize","pascalize","mask","longhand","textOrientation","writingMode","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","propKeys","prefixCss","propertyDetectors","computed","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","jssVendorPrefixer","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","jssPropsSort","prop0","prop1","jssPreset","functions","vendorPrefixer","propsSort","disableGeneration","generateClassName","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seed","seedPrefix","getNextCounterId","styleSheet","createGenerateClassName","sheetsCache","sheetsManager","sheetsRegistry","StylesContext","indexCounter","increment","getStylesCreator","themingEnabled","stylesWithOverrides","noopTheme","getClasses","cacheClasses","lastProp","lastJSS","generate","mergeClasses","baseClasses","newClasses","_ref2","stylesCreator","sheetManager","staticSheet","dynamicStyles","serverGenerateClassName","dynamicSheet","_ref3","_ref4","useSynchronousEffect","currentKey","classNamePrefixOption","_options$defaultTheme","stylesOptions2","shouldUpdate","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","nextClasses","makeStylesWithoutDefault","Card","_props$raised","raised","CardContent","_props$disablePadding","disablePadding","subheader","listStyle","ListItemText","_props$disableTypogra","disableTypography","_props$inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","getScale","entering","entered","_props$disableStrictM","disableStrictModeCompat","_props$timeout","timer","autoTimeout","enableStrictModeCompat","unstable_strictMode","foreignRef","normalizedTransitionCallback","nodeOrAppearing","handleEntering","handleEnter","_getTransitionProps","handleEntered","handleExiting","handleExit","_getTransitionProps2","nodeOrNext","maybeNext","_props$disablePortal","disablePortal","onRendered","mountNode","setMountNode","getContainer","MenuItem","ListItemClasses","_props$role","tabIndexProp","AppBar","_props$position","backgroundColorDefault","flexDirection","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorTransparent","Toolbar","regular","Button","_props$disableElevati","disableElevation","endIconProp","endIcon","startIconProp","startIcon","textPrimary","textSecondary","outlinedPrimary","outlinedSecondary","contained","containedPrimary","containedSecondary","borderColor","textSizeSmall","textSizeLarge","outlinedSizeSmall","outlinedSizeLarge","containedSizeSmall","containedSizeLarge","sizeLarge","iconSizeSmall","iconSizeMedium","iconSizeLarge","SIZE","CircularProgress","_props$disableShrink","disableShrink","_props$thickness","thickness","_props$value","circleStyle","rootStyle","rootProps","circumference","determinate","indeterminate","static","svg","circleDisableShrink","circleDeterminate","circleIndeterminate","circleStatic","stroke","DialogTitle","FormControl","_props$error","visuallyFocused","_props$hiddenLabel","_props$margin","_props$required","initialAdornedStart","initialFilled","filled","setFilled","_React$useState3","_focused","registerEffect","marginNormal","Input","disableUnderline","underline","bottomLineColor","borderBottomColor","borderBottomStyle","FilledInput","borderTopLeftRadius","borderTopRightRadius","WebkitBoxShadow","WebkitTextFillColor","caretColor","DialogContent","_props$dividers","dividers","borderTop","DialogActions","_props$disableSpacing","disableSpacing","FormControlLabel","control","_props$labelPlacement","labelPlacement","controlProps","labelPlacementStart","labelPlacementTop","labelPlacementBottom","SPACINGS","GRID_SIZES","Grid","_props$alignContent","alignContent","_props$container","_props$direction","_props$item","_props$justify","justify","_props$lg","_props$md","_props$sm","_props$spacing","_props$wrap","_props$xl","_props$xs","_props$zeroMinWidth","zeroMinWidth","StyledGrid","flexWrap","themeSpacing","generateGutter","accumulator","globalStyles","flexBasis","generateGrid","thumb","switchBase","CardHeader","avatar","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","alignSelf","ThemeProvider","localTheme","outerTheme","mergeOuterLocalTheme","ProtocolMode","decimalToHex","generateGuid","getRandomValues","MathUtils","guidHolder","guidResponse","isGuid","guid","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","stringToArrayBuffer","dataString","dataView","utf8ArrToString","sView","nPart","nLen","urlEncode","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","BrowserStringUtils","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","encodedString","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","base64Encode","generateCodes","codeVerifier","generateCodeVerifier","generateCodeChallengeFromVerifier","codeChallenge","verifier","challenge","pkceCodeVerifier","sha256Digest","pkceHashedCodeVerifier","S256_HASH_ALG","PUBLIC_EXPONENT","hasCryptoAPI","_keygenAlgorithmOptions","modulusLength","publicExponent","hasIECrypto","getMSCryptoDigest","getSubtleCryptoDigest","dataBuffer","generateKeyPair","extractable","usages","msCryptoGenerateKey","subtle","generateKey","exportJwk","msCryptoExportJwk","exportKey","importJwk","keyString","BrowserCrypto","getJwkString","keyBuffer","msCryptoImportKey","importKey","msCryptoSign","hasBrowserCrypto","algorithm","digest","digestOperation","msGenerateKey","msExportKey","resultBuffer","resultString","msImportKey","msSign","jwk","dbName","tableName","dbOpen","openDB","indexedDB","createObjectStore","dbGet","transaction","objectStore","put","dbPut","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","CryptoOps","DB_NAME","TABLE_NAME","DB_VERSION","createNewGuid","generatePkceCodes","getPublicKeyThumbprint","request","EXTRACTABLE","POP_KEY_USAGES","keyPair","publicKey","publicKeyJwk","pubKeyThumprintObj","kty","publicJwkString","publicJwkBuffer","publicJwkHash","privateKey","privateKeyJwk","unextractablePrivateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","signJwt","kid","cachedKeyPair","publicKeyJwkString","alg","encodedHeader","cnf","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","DEFAULT_CRYPTO_IMPLEMENTATION","ClientConfigurationErrorMessage","ClientConfigurationError","createClaimsRequestParsingError","claimsRequestParseError","createInsecureAuthorityUriError","urlString","createUrlParseError","urlParseError","createUrlEmptyError","createScopesNonArrayError","inputScopes","createEmptyScopesArrayError","createClientIdSingleScopeError","createInvalidPromptError","promptValue","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAuthorityMetadataError","createUntrustedAuthorityError","_urlString","getHash","UrlString","canonicalizeUri","validateAsUri","components","getUrlComponents","HostNameAndPort","PathSegments","Protocol","urlRemoveQueryStringParameter","regex","appendQueryString","queryString","removeHashFromUrl","replaceTenantPath","urlObject","pathArray","COMMON","ORGANIZATIONS","constructAuthorityUriFromObject","parseHash","regEx","urlComponents","AbsolutePath","QueryString","pathSegments","getDomainFromUrl","getAbsoluteUrl","relativeUrl","baseUrl","baseComponents","hashString","hashIndex1","hashIndex2","getDeserializedHash","parsedHash","deserializedHash","hashContainsKnownProperties","parameters","error_description","generateThrottlingStorageKey","thumbprint","preProcess","cacheManager","ThrottlingUtils","getThrottlingCache","throttleTime","removeItem","THROTTLING","errorCodes","postProcess","response","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","headers","RETRY_AFTER","error_codes","setThrottlingCache","currentSeconds","removeThrottle","clientId","homeAccountIdentifier","isOpenIdConfigResponse","nowSeconds","getTime","isTokenExpired","expiresOn","expirationSec","TimeUtils","expiresAt","updateCloudDiscoveryMetadata","metadata","fromNetwork","aliases","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","updateCanonicalAuthority","canonical_authority","resetExpiresAt","isExpired","isAuthorityMetadataEntity","networkInterface","detectRegion","environmentRegion","autodetectedRegionName","getRegionFromIMDS","httpSuccess","httpBadRequest","getCurrentVersion","latestIMDSVersion","sendGetRequestAsync","RegionDiscovery","IMDS_OPTIONS","authorityOptions","canonicalAuthority","_canonicalAuthority","regionDiscovery","canonicalAuthorityUrlComponents","Default","protocolMode","_canonicalAuthorityUrlComponents","discoveryComplete","replacePath","replaceTenant","tenant","cachedAuthorityParts","currentPart","cachedPart","OIDC","resolveEndpointsAsync","metadataEntity","getAuthorityMetadataByAlias","hostnameAndPort","cloudDiscoverySource","endpointSource","CACHE","generateAuthorityMetadataCacheKey","setAuthorityMetadata","getEndpointMetadataFromConfig","CONFIG","isAuthoritySameType","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","Authority","replaceWithRegionalInformation","NETWORK","defaultOpenIdConfigurationEndpoint","authorityMetadata","getCloudDiscoveryMetadataFromConfig","getCloudDiscoveryMetadataFromNetwork","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","createCloudDiscoveryMetadataFromHost","instanceDiscoveryEndpoint","isCloudInstanceDiscoveryResponse","knownAuthorities","host","isAlias","isPublicCloudAuthority","buildRegionalAuthorityString","region","authorityUrlInstance","authorityUrlParts","hostNameAndPort","createDiscoveredInstance","authorityUri","networkClient","acquireTokenAuthority","AuthorityFactory","createInstance","authorityUrl","CredentialEntity","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","ID_TOKEN","ACCESS_TOKEN","REFRESH_TOKEN","getCredentialType","ACCESS_TOKEN_WITH_AUTH_SCHEME","scopeArr","filteredInput","validateInputScopes","fromString","inputScopeString","ScopeSet","containsScope","lowerCaseScopesSet","printScopesLowerCase","containsScopeSet","scopeSet","containsOnlyOIDCScopes","defaultScopeCount","defaultScope","appendScope","newScope","appendScopes","newScopes","removeScope","removeOIDCScopes","unionScopeSets","otherScopes","unionScopes","intersectingScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","rawToken","AuthToken","extractTokenClaims","encodedToken","decodedToken","base64TokenPayload","base64Decoded","cryptoImpl","getAccountsFilteredBy","accountValues","accountKey","accountInfo","CacheManager","readIdTokenFromCache","saveCacheRecord","cacheRecord","setIdTokenCredential","accessToken","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","currentTokenCache","getCredentialsFilteredBy","currentScopes","currentAccessTokens","accessTokens","tokenEntity","removeCredential","setAccessTokenCredential","accountFilter","getAccountsFilteredByInternal","allCacheKeys","getKeys","matchingAccounts","matchHomeAccountId","matchEnvironment","matchRealm","getCredentialsFilteredByInternal","matchingCredentials","idTokens","refreshTokens","credType","getSpecificCredential","matchOboAssertion","matchCredentialType","matchClientId","matchFamilyId","matchTarget","getAppMetadataFilteredBy","getAppMetadataFilteredByInternal","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","removeAllAccounts","removeAccount","removeAccountContext","ACCOUNT","cacheEntity","CREDENTIAL","removeAppMetadata","readCacheRecord","authScheme","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","readAccessTokenFromCache","cachedRefreshToken","readRefreshTokenFromCache","cachedAppMetadata","readAppMetadataFromCache","idTokenFilter","credentialCache","numIdTokens","POP","accessTokenFilter","numAccessTokens","familyRT","refreshTokenFilter","appMetadataFilter","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cloudMetadata","entityScopeSet","requestTargetScopeSet","getIdTokenCredential","getAccessTokenCredential","getRefreshTokenCredential","setServerTelemetry","getServerTelemetry","containsKey","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_NETWORK_IMPLEMENTATION","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","os","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","KeyLocation","sendPostRequest","tokenEndpoint","configuration","authOptions","systemOptions","storageInterface","cryptoInterface","clientCredentials","libraryInfo","serverTelemetryManager","persistencePlugin","serializableCache","userAuthOptions","clientCapabilities","userSystemOptions","userLoggerOption","storageImplementation","networkImplementation","cryptoImplementation","buildClientConfiguration","cryptoUtils","networkManager","createDefaultTokenRequestHeaders","CONTENT_TYPE","executePostToTokenEndpoint","clearTelemetryCache","updateAuthority","updatedAuthority","validateRedirectUri","redirectUri","validatePrompt","validateClaims","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","sanitizeEQParams","eQParams","queryParams","addResponseTypeCode","RESPONSE_TYPE","addResponseMode","responseMode","RESPONSE_MODE","QUERY","addScopes","addOidcScopes","requestScopes","SCOPE","addClientId","CLIENT_ID","addRedirectUri","REDIRECT_URI","addPostLogoutRedirectUri","POST_LOGOUT_URI","addIdTokenHint","idTokenHint","ID_TOKEN_HINT","addDomainHint","domainHint","DOMAIN_HINT","addLoginHint","loginHint","LOGIN_HINT","addSid","sid","SID","addClaims","mergedClaims","addClientCapabilitiesToClaims","addCorrelationId","CLIENT_REQUEST_ID","addLibraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","addPrompt","PROMPT","addState","STATE","addNonce","NONCE","addCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","addAuthorizationCode","CODE","addDeviceCode","DEVICE_CODE","addRefreshToken","addCodeVerifier","CODE_VERIFIER","addClientSecret","CLIENT_SECRET","addClientAssertion","CLIENT_ASSERTION","addClientAssertionType","clientAssertionType","CLIENT_ASSERTION_TYPE","addOboAssertion","OBO_ASSERTION","addRequestTokenUse","tokenUse","REQUESTED_TOKEN_USE","addGrantType","grantType","GRANT_TYPE","addClientInfo","addExtraQueryParameters","eQparams","XMS_CC","addUsername","addPassword","addPopToken","cnfString","TOKEN_TYPE","REQ_CNF","addServerTelemetry","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","addThrottling","X_MS_LIB_CAPABILITY","createQueryString","queryParameterArray","createIdTokenEntity","idTokenEntity","IdTokenEntity","isIdTokenEntity","createAccessTokenEntity","extExpiresOn","refreshOn","tokenType","atEntity","AccessTokenEntity","currentTime","cachedAt","extendedExpiresOn","BEARER","tokenClaims","keyId","isAccessTokenEntity","createRefreshTokenEntity","rtEntity","RefreshTokenEntity","isRefreshTokenEntity","accountEntity","accessTokenEntity","refreshTokenEntity","appMetadataEntity","setRequestState","userState","libraryState","ProtocolUtils","generateLibraryState","stateObj","stateString","parseRequestState","splitState","libraryStateString","libraryStateObj","userRequestState","generateCnf","kidThumbprint","reqCnf","xms_ksl","SW","signPopToken","shrClaims","resourceUrlString","resourceUrlComponents","ts","client_claims","generateAppMetadataKey","AppMetadataEntity","generateAppMetadataCacheKey","createAppMetadataEntity","isAppMetadataEntity","tokenCache","hasChanged","cacheStorage","validateServerAuthorizationCodeResponse","serverResponseHash","cachedState","client_info","validateTokenResponse","serverResponse","errString","correlation_id","trace_id","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","id_token","idTokenObj","requestStateObj","generateCacheRecord","cacheContext","TokenCacheContext","beforeCacheAccess","ResponseHandler","generateAuthenticationResult","afterCacheAccess","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","CacheRecord","cloud_graph_host_name","msGraphhost","msgraph_host","fromTokenCache","requestState","uniqueId","fromCache","getAuthCodeUrl","createAuthCodeUrlQueryString","authorizationEndpoint","acquireToken","executeTokenRequest","responseHandler","handleFragmentResponse","hashFragment","hashUrlString","serverParams","getLogoutUri","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","createTokenRequestBody","requestBody","queryParameters","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","assertion","assertionType","AUTHORIZATION_CODE_GRANT","authenticationScheme","extraScopesToConsent","accountSid","extractAccountSid","extraQueryParameters","postLogoutRedirectUri","acquireTokenByRefreshToken","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenRequest","REFRESH_TOKEN_GRANT","popTokenGenerator","acquireCachedToken","incrementCacheHits","generateResultFromCacheRecord","failedRequests","cacheHits","isServerTelemetryEntity","validateKey","validateEntity","telemetryRequest","apiId","wrapperSKU","wrapperVer","telemetryCacheKey","forceRefreshInt","platformFields","lastRequests","getLastRequests","maxErrors","ServerTelemetryManager","maxErrorsToSend","errorCount","cacheFailedRequest","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","isThrottlingEntity","cacheLocation","validateWindowStorage","windowStorage","LocalStorage","SessionStorage","getItem","setItem","cacheKeys","extractBrowserRequestState","parseServerResponseFromHash","locationHash","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","MemoryStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","idTokenKey","clientInfoKey","CLIENT_INFO","errorKey","ERROR","errorDescKey","ERROR_DESC","migrateCacheEntry","newKey","setTemporaryCache","validateAndParseJson","jsonValue","parsedJson","parsedAccount","parsedIdToken","accessTokenKey","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","parsedMetadata","serverTelemetryKey","serverTelemetry","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","generateCacheKey","storeAuthStateInCookie","itemCookie","getItemCookie","setItemCookie","clearItemCookie","cookieName","cookieValue","expires","cookieStr","getCookieExpirationTime","secureCookies","cookie","cookieList","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","today","getCache","setCache","ADAL_ID_TOKEN","generateAuthorityKey","AUTHORITY","stateId","generateNonceKey","NONCE_IDTOKEN","generateStateKey","REQUEST_STATE","getCachedAuthority","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","INTERACTION_STATUS_KEY","cleanRequestByState","stateKey","cleanRequestByInteractionType","stateValue","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","StubbedNetworkModule","fetch","GET","getFetchHeaders","getHeaderDict","reqBody","POST","Headers","optionsHeaders","append","headerDict","sendRequestAsync","xhr","XMLHttpRequest","setXhrHeaders","onload","jsonResponse","responseText","networkResponse","onerror","send","setRequestHeader","headerArr","getAllResponseHeaders","headerName","headerVal","clearHash","replaceHash","urlParts","isInIframe","getCurrentUri","getHomepage","getBrowserNetworkClient","blockReloadInHiddenIframes","BrowserUtils","blockRedirectInIframe","allowRedirectInIframe","isIframedApp","blockAcquireTokenInPopups","opener","blockNonBrowserEnvironment","isBrowserEnvironment","detectIEOrEdge","msie","msie11","msedge","navigateInternal","NavigationClient","defaultNavigateWindow","navigateExternal","noHistory","DEFAULT_IFRAME_TIMEOUT_MS","authCodeModule","storageImpl","authModule","handleCodeResponse","networkModule","authCodeResponse","nonceKey","cachedNonce","cloud_instance_host_name","updateTokenEndpointAuthority","tokenResponse","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","initiateAuthRequest","requestUrl","redirectStartPage","navigationOptions","redirectTimeout","onRedirectNavigate","navigationClient","unloadWindow","openPopup","urlNavigate","popupName","popup","popupWindow","PopupUtils","openSizedPopup","currentWindow","winLeft","screenLeft","winTop","screenTop","close","cleanPopup","monitorPopupForSameOrigin","intervalId","setInterval","closed","clearInterval","generatePopupName","generateLogoutPopupName","popupUtils","monitorPopupForHash","contentHash","navigateFrameWait","loadFrame","loadFrameSync","monitorIframeForHash","iframe","timeoutMark","removeHiddenIframe","frameHandle","createHiddenIframe","authFrame","getElementsByTagName","preflightBrowserEnvironmentCheck","Silent","silentRequest","initializeBaseRequest","emitEvent","initializeServerTelemetryManager","acquireTokenSilent_silentFlow","createSilentFlowClient","cachedToken","tokenRenewalResult","auth","system","DEFAULT_AUTH_OPTIONS","navigateToLoginRequestUrl","AAD","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","loadFrameTimeout","windowHashTimeout","userInputSystem","iframeHashTimeout","redirectNavigationTimeout","asyncPopups","userInputAuth","userInputCache","buildConfiguration","activeLocalAccountId","eventCallbacks","redirectResponse","cacheOptions","loggedInAccounts","redirectResponseKey","handleRedirectResponse","interactionInProgress","responseHash","getRedirectResponseHash","validateAndExtractStateFromHash","loginRequestUrl","loginRequestUrlNormalized","currentUrlNormalized","handleHash","handleHashResult","processHashOnRedirect","homepage","isResponseHash","cachedHash","platformStateObj","cachedRequest","currentAuthority","createAuthCodeClient","authClient","isLoggedIn","validRequest","preflightInteractiveRequest","initializeAuthorizationCodeRequest","interactionHandler","navigateUrl","getRedirectStartPage","acquireTokenPopupAsync","popupParameters","POPUP_OPENED","acquireTokenByIframe","silentTokenResult","initializeAuthorizationRequest","silentTokenHelper","ACQUIRE_TOKEN_NETWORK_START","createRefreshTokenClient","isServerError","isInvalidGrantError","acquireTokenSilent_authCode","silentHandler","msalFrame","validLogoutRequest","initializeLogoutRequest","logoutUri","LOGOUT_SUCCESS","LOGOUT_FAILURE","mainWindowRedirectUri","logoutPopupAsync","requestAuthority","absoluteUrl","userName","getRedirectUri","requestRedirectUri","requestStartPage","getDiscoveredAuthority","getClientConfiguration","clientConfig","discoveredAuthority","telemetryPayload","browserState","validatedRequest","FRAGMENT","adalIdTokenString","adalIdToken","generatedPkceParams","_parseImageNode","IMAGE_SUPPORTED","Image","IMAGE_BITMAP_SUPPORTED","ImageBitmap","NODE_IMAGE_SUPPORTED","DATA_SUPPORTED","getImageType","getImageTypeOrNull","getImageData","SVG_DATA_URL_PATTERN","SVG_URL_PATTERN","isSVG","getBlobOrSVGDataUrl","xmlText","textDecoder","btoa","getBlob","Blob","blobOrDataUrl","URL","objectUrl","loadToImage","EMPTY_OBJECT","imagebitmapOptionsSupported","parseToImage","blob","imagebitmapOptions","safeCreateImageBitmap","isEmptyObject","createImageBitmap","BIG_ENDIAN","LITTLE_ENDIAN","getBinaryImageMetadata","binaryData","toDataView","mimeType","getPngMetadata","tableMarkers","sofMarkers","getJpegMarkers","getJpegMetadata","getGifMetadata","getBmpMetadata","DataView","parseToNodeImage","imageOptions","imageType","loadType","getLoadableImageType","parseToImageBitmap","getDefaultImageType","isImageTypeSupported","mimeTypes","extensions","tests","getMagicString","magic","parseJSON","getFirstCharacters","padTo4Bytes","getZeroOffsetArrayBuffer","copyToArray","targetOffset","srcByteOffset","srcByteLength","resolveUrl","bufferView","binChunk","buffers","loadLibraryPromises","moduleName","libraryUrl","getLibraryUrl","loadLibraryFromFile","library","modules","scriptSource","loadLibraryFromString","eval","script","loadDecoderPromise","draco","onModuleLoaded","loadDracoDecoder","loadLibrary","DracoDecoderModule","wasmBinary","initializeDracoDecoder","getMeshBoundingBox","minX","minY","minZ","maxX","maxY","maxZ","positions","GEOMETRY_TYPE","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","DracoParser","dracoGeometry","Int8Array","decoder","geometryType","dracoStatus","faceCount","attributeCount","_getGeometryMetadata","boundingBox","geometry","_getAttributes","drawMode","_getMeshStripIndices","_getMeshFaceIndices","positionAttribute","posTransform","numPoints","attributeId","dracoAttribute","attributeMetadata","_getAttributeMetadata","attributeData","attributeType","numComponents","byteStride","normalized","_deduceAttributeName","_getAttributeTypedArray","numFaces","dracoArray","numValues","Int16Array","extraAttributes","entryName","dracoMetadata","_queryDracoMetadata","numEntries","metadataQuerier","NumEntries","entryIndex","GetEntryName","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","intArray","GetIntEntryArray","parseSync","VERSION","DracoLoader","binary","decoderType","libraryPath","workerUrl","localWorkerUrl","loadDracoDecoderModule","dracoParser","TYPES","ARRAY_TO_COMPONENT_TYPE","ATTRIBUTE_TYPE_TO_COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE","ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY","getAccessorTypeFromSize","getComponentTypeFromArray","componentType","getAccessorArrayTypeAndLength","accessor","ArrayType","bytesPerComponent","GLTFScenegraph","gltf","asset","extras","extensionName","isExtension","getUsedExtensions","getRequiredExtensions","getExtension","extensionsRequired","extensionsUsed","getObject","bufferIndex","getBufferView","getAccessor","getBuffer","extension","extensionData","ext","accessors","_addAttributes","glTFMesh","primitives","meshes","imageData","getBinaryImageMIMEType","glTFImage","addBufferView","images","sourceBuffers","glTFBufferView","bufferViews","bufferViewIndex","glTFAccessor","sourceBuffer","accessorDefaults","addAccessor","totalByteLength","targetArray","dstByteOffset","found","KHR_BINARY_GLTF","KHR_DRACO_MESH_COMPRESSION","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_UNLIT","KHR_TECHNIQUES_WEBGL","getGLTFAccessors","jsonAccessors","attribute","getGLTFAccessor","jsonAccessor","getAccessorData","convertTypedArrays","toTypedArray","makeMeshPrimitiveIterator","scenegraph","promises","primitive","decompressPrimitive","gltfData","mesh","compressMesh","compressedPrimitive","bufferCopy","dracoOptions","decodedData","originalAccessors","checkPrimitive","compressedData","fauxAccessors","gltfScenegraph","nodeExtension","material","techniques","programs","shaders","program","technique","resolveTechniques","materialExtension","resolveValues","uniform","EXTENSIONS","KHR_draco_mesh_compression","KHR_lights_punctual","KHR_materials_unlit","KHR_techniques_webgl","excludes","MAGIC_glTF","GLB_CHUNK_TYPE_JSON","GLB_CHUNK_TYPE_BIN","LE","isGLB","magic1","parseGLBV1","glb","GLB_FILE_HEADER_SIZE","contentLength","contentFormat","parseJSONChunk","parseBINChunk","parseGLBV2","chunkLength","chunkFormat","parseGLBChunksSync","jsonChunk","jsonText","GLTF_ARRAYS","animations","materials","nodes","samplers","scenes","skins","textures","GLTF_KEYS","sampler","scene","skin","GLTFV1Normalizer","KHR_binary_glTF","mapName","objectMap","_convertIdToIndex","topLevelArrayName","arrayName","idToIndexMap","normalizeGLTFV1","COMPONENTS","BYTES","GL_SAMPLER","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER","GLTFPostProcessor","baseUri","_get","getMesh","getCamera","getSkin","getTexture","mr","getSampler","getImage","glEnum","_enumSamplerParameter","preloadedImage","camera","postProcessGLTF","parseGLTFContainerSync","arrayBufferOrString","loadBuffers","loadImages","decodeExtensions","parseGLBSync","binChunks","uri","loadImage","getTypedArrayForBufferView","parsedImage","GLTFLoader","decompressMeshes","deprecatedOptions","fetchImages","createImages","decompress","addDeprecatedGLTFOptions","parseGLTF","validateLoaderVersion","loader","coreVersion","loaderVersion","parseVersion","major","minor","isLoaderObject","hasParser","loaderOptions","normalizeLoader","isBoolean","isObject","isPureObject","isIterable","isAsyncIterable","isResponse","Response","isBlob","isReadableStream","ReadableStream","isReadableDOMStream","isReadableNodeStream","pathPrefix","fileAliases","resolvePath","replacement","DATA_URL_PATTERN","MIME_TYPE_PATTERN","parseMIMETypeFromURL","dataUrl","QUERY_STRING_PATTERN","getResourceUrlAndType","contentType","mimeString","parseMIMEType","urlType","stripQueryString","getResourceContentLength","getInitialDataUrl","initialDataUrl","getResponseError","INITIAL_DATA_LENGTH","blobSlice","reader","base64","arrayBufferToBase64","bytes","makeResponse","getErrorMessageFromResponse","NullLog","DEFAULT_LOADER_OPTIONS","CDN","worker","transforms","reuseWorkers","DEPRECATED_LOADER_OPTIONS","credentials","redirect","referrer","referrerPolicy","integrity","keepalive","signal","getGlobalLoaderState","loaders","getGlobalLoaderOptions","normalizeOptions","validateOptionsObject","idOptions","validateOptions","normalizeOptionsInternal","getFetchFunction","globalOptions","fetchFile","loaderName","isSubOptions","suggestion","findSimilarOption","optionKey","lowerCaseOptionKey","bestSuggestion","lowerCaseKey","mergedOptions","mergeNestedFields","addUrlOptions","_asyncIterator","arrayBuffers","strings","makeStringIterator","chunkSize","textEncoder","makeArrayBufferIterator","chunkByteLength","chunkArray","_AwaitValue","wrapped","_awaitAsyncGenerator","AsyncGenerator","front","back","resume","wrappedAwait","settle","_wrapAsyncGenerator","DEFAULT_CHUNK_SIZE","file","readFileSlice","fileReader","makeStreamIterator","makeToArrayBufferIterator","makeBrowserStreamIterator","makeNodeStreamIterator","onceReadable","makeIterator","makeBlobIterator","ERR_DATA","getArrayBufferOrStringFromDataSync","isArrayBuffer","checkResponse","concatenateChunksAsync","getLoaderContext","previousContext","getLoaders","candidateLoaders","contextLoaders","workerURLCache","buildScript","getTransferList","recursive","transfers","transfersSet","isTransferable","MessagePort","OffscreenCanvas","defaultOnMessage","WorkerThread","onMessage","workerSource","workerURL","getWorkerURL","Worker","betterError","transferList","WorkerPool","maxConcurrency","onDebug","jobName","jobQueue","_getAvailableWorker","job","backlog","idleQueue","WorkerFarm","workerPool","workerName","_getWorkerPool","workerPools","onWorkerMessage","canParseWithWorker","parseWithWorker","workerFarm","_workerFarm","getWorkerFarm","arraybuffer","getGlobalLoaderRegistry","getRegisteredLoaders","EXT_PATTERN","selectLoaderSync","nothrow","getNoValidLoaderMessage","normalizeLoaders","findLoaderByUrl","findLoaderByContentType","findLoaderByExamingInitialData","loaderExtension","findLoaderByExtension","testDataAgainstText","testDataAgainstBinary","testBinary","selectLoader","parseWithLoader","getArrayBufferOrStringFromData","styleFunction","newStyleFunction","fields","omit","filterProps","compose","getPath","_options$cssProperty","cssProperty","themeKey","themeMapping","propValueFinal","getBorder","borders","flexbox","sizing","styled","componentCreator","StyledComponent","spread","FinalComponent","styledWithoutDefault","Box","areEqualValues","SelectInput","ariaLabel","autoWidth","displayEmpty","IconComponent","labelId","_props$MenuProps","MenuProps","onOpen","openProp","renderValue","_props$SelectDisplayP","SelectDisplayProps","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","openState","setOpenState","getElementById","isCollapsed","displaySingle","childrenArray","handleItemClick","itemIndex","displayMultiple","computeDisplay","menuMinWidth","buttonId","select","selectMenu","nativeInput","iconOpen","NativeSelectInput","iconFilled","iconOutlined","defaultInput","NativeSelect","_props$IconComponent","ArrowDropDownIcon","_props$input","nativeSelectStyles","Select","_props$autoWidth","_props$displayEmpty","_props$labelWidth","labelWidth","_props$multiple","_props$native","native","variantProps","OutlinedInput","Query","setOptions","initialState","scheduleGc","_this$options$cacheTi","cacheTime","setDefaultOptions","clearGcTimeout","gcTimeout","optionalRemove","setData","_this$options$isDataE","prevData","isDataEqual","structuralSharing","dataUpdatedAt","setStateOptions","_this$retryer","enabled","isInvalidated","getCurrentResult","isStaleByTime","_this$retryer2","shouldFetchOnWindowFocus","refetch","_this$retryer3","shouldFetchOnReconnect","getObserversCount","invalidate","fetchOptions","_this$options$behavio","_context$fetchOptions","cancelRefetch","_this$options$behavio2","_context$fetchOptions2","queryFnContext","pageParam","fetchFn","behavior","onFetch","revertState","fetchMeta","onQueryUpdate","initialData","initialDataUpdatedAt","hasData","dataUpdateCount","errorUpdateCount","errorUpdatedAt","fetchFailureCount","_action$meta","_action$dataUpdatedAt","QueryCache","queries","queriesMap","build","_options$queryHash","defaultQueryOptions","getQueryDefaults","queryInMap","getAll","findAll","_this5","MutationCache","mutations","defaultMutationOptions","getMutationDefaults","resumePausedMutations","pausedMutations","getNextPageParam","pages","getPreviousPageParam","QueryClient","queryCache","queryDefaults","mutationDefaults","unsubscribeFocus","unsubscribeOnline","_this$unsubscribeFocu","_this$unsubscribeOnli","isMutating","getQueryData","_this$queryCache$find","setQueryData","parsedOptions","defaultedOptions","setQueriesData","queryKeyOrFilters","getQueryCache","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","_parseFilterArgs3","refetchFilters","refetchQueries","cancelQueries","_parseFilterArgs4","_parseFilterArgs4$","all","invalidateQueries","_filters$refetchActiv","_parseFilterArgs5","refetchActive","refetchInactive","_this6","_parseFilterArgs6","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","_context$state$data","_context$state$data2","fetchMore","isFetchingNextPage","isFetchingPreviousPage","oldPages","oldPageParams","pageParams","newPageParams","cancelled","fetchPage","manual","previous","queryFnResult","page","_manual","_param","_loop","finalPromise","prefetchInfiniteQuery","cancelMutations","_this7","getMutationCache","getDefaultOptions","setQueryDefaults","_this$queryDefaults$f","setMutationDefaults","_this$mutationDefault","_defaulted","defaultQueryObserverOptions","rnds8","rng","msCrypto","validate","uuid","REGEX","byteToHex","rnds","ariaHidden","show","getPaddingRight","ariaHiddenSiblings","currentNode","nodesToExclude","blacklistTagNames","findIndexOf","handleContainer","fixedNodes","restoreStyle","restorePaddings","disableScrollLock","isOverflowing","scrollContainer","ModalManager","modals","containers","modalIndex","modalRef","hiddenSiblingNodes","hiddenSiblings","getHiddenSiblings","containerIndex","restore","nextTop","Unstable_TrapFocus","disableAutoFocus","_props$disableEnforce","disableEnforceFocus","_props$disableRestore","disableRestoreFocus","getDoc","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","rootRef","prevOpenRef","contain","hasFocus","loopFocus","interval","SimpleBackdrop","_props$invisible","defaultManager","inProps","_props$BackdropCompon","BackdropComponent","_props$closeAfterTran","closeAfterTransition","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$disableScrollL","_props$hideBackdrop","hideBackdrop","_props$keepMounted","keepMounted","_props$manager","manager","onBackdropClick","onEscapeKeyDown","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","handleMounted","handleOpen","resolvedContainer","isTopModal","handlePortalRef","handleClose","inlineStyle","hidden","TrapFocus","defaultCheckedIcon","CheckBoxIcon","defaultIcon","CheckBoxOutlineBlankIcon","defaultIndeterminateIcon","IndeterminateCheckBoxIcon","Checkbox","_props$checkedIcon","_props$icon","iconProp","_props$indeterminate","_props$indeterminateI","indeterminateIcon","indeterminateIconProp","QueryObserver","trackedProps","previousSelectError","bindMethods","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","refetchOnReconnect","refetchOnWindowFocus","clearTimers","notifyOptions","prevQuery","updateQuery","shouldFetchOptionally","updateResult","updateStaleTimeout","refetchInterval","updateRefetchInterval","getOptimisticResult","createResult","currentResult","trackResult","trackedResult","typedKey","getNextResult","unsubscribe","isError","getCurrentQuery","fetchOptimistic","clearStaleTimeout","staleTimeoutId","clearRefetchInterval","refetchIntervalId","refetchIntervalInBackground","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","isSuccess","selectError","placeholderData","isLoading","isIdle","isFetched","isFetchedAfterMount","isLoadingError","isRefetchError","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsExclusions","includedProps","changed","isIncluded","isExcluded","defaultNotifyOptions","_this8","retryOnMount","shouldLoadOnMount","refetchOnMount","shouldRefetchOnMount","createValue","_isReset","clearReset","isReset","QueryErrorResetBoundaryContext","useBaseQuery","Observer","mountedRef","errorResetBoundary","suspense","useErrorBoundary","useQuery","defaultTimeout","Fade","transitionProps","webkitTransition","Backdrop","defaultTransitionDuration","Dialog","_props$fullScreen","fullScreen","_props$maxWidth","_props$PaperComponent","PaperComponent","_props$scroll","scroll","ariaLabelledby","mouseDownTarget","paperFullScreen","paperFullWidth","scrollPaper","scrollBody","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","FormLabel","InputLabel","_props$disableAnimati","disableAnimation","shrinkProp","shrink","animated","NotchedOutline","labelWidthProp","notched","legendLabelled","legendNotched","legend","borderWidth","notchedOutline","defaultPopperOptions","_props$placement","initialPlacement","_props$popperOptions","popperOptions","popperRefProp","popperRef","_props$transition","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","handlePopperUpdate","PopperJs","preventOverflow","onCreate","hystersisOpen","hystersisTimer","Tooltip","_props$arrow","arrow","_props$disableFocusLi","disableFocusListener","_props$disableHoverLi","disableHoverListener","_props$disableTouchLi","disableTouchListener","_props$enterDelay","enterDelay","_props$enterNextDelay","enterNextDelay","_props$enterTouchDela","enterTouchDelay","idProp","_props$interactive","interactive","_props$leaveDelay","leaveDelay","_props$leaveTouchDela","leaveTouchDelay","_props$PopperComponen","PopperComponent","PopperProps","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","forward","childrenProps","onMouseOver","childIsFocusVisible","setChildIsFocusVisible","handleLeave","detectTouchStart","handleUseRef","handleFocusRef","shouldShowNativeTitle","interactiveWrapperListeners","mergedPopperProps","popperInteractive","popperArrow","placementInner","TransitionPropsInner","touch","tooltipArrow","wordWrap","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","valueLabelDisplay","asc","findClosest","currentValue","trackFinger","touchId","identifier","valueToPercent","roundValueToStep","nearest","matissaDecimalPart","decimalPart","getDecimalPrecision","setValueIndex","focusThumb","sliderRef","activeIndex","setActive","axisProps","leap","Identity","Slider","ariaValuetext","getAriaLabel","getAriaValueText","_props$marks","marks","marksProp","_props$max","_props$min","onChangeCommitted","_props$orientation","orientation","_props$scale","_props$step","_props$ThumbComponent","ThumbComponent","_props$track","_props$ValueLabelComp","ValueLabelComponent","ValueLabel","_props$valueLabelDisp","_props$valueLabelForm","valueLabelFormat","setOpen","valueDerived","setValueState","handleMouseOver","isRtl","tenPercents","marksValues","marksIndex","increaseKey","decreaseKey","previousValue","previousIndex","getFingerNewValue","finger","_ref3$move","move","values2","_slider$getBoundingCl","percentToValue","_getFingerNewValue","_getFingerNewValue3","slider","_getFingerNewValue4","trackOffset","trackLeap","trackStyle","marked","trackFalse","trackInverted","rail","markActive","markLabel","markLabelActive","valueLabel","touchAction","thumbColorPrimary","thumbColorSecondary","FormHelperText","variantComponent","TextField","FormHelperTextProps","helperText","InputLabelProps","InputProps","_props$select","SelectProps","InputMore","_InputLabelProps$requ","displayRequired","helperTextId","inputLabelId","InputElement","htmlFor","MutationObserver","mutate","_this$currentMutation","currentMutation","mutateOptions","useMutation","obsRef","mutateAsync","properties","directions","marginX","marginY","paddingX","paddingY","getCssProperties","_prop$split","_prop$split2","spacingKeys","getStyleFromPropValue","cssProperties","transformer","transformed"],"mappings":";8iVAKO,IAAIA,EAAU,KACVC,EAAqC,qBAAjBC,aAA+BA,aAAeC,MAClEC,EAASC,KAAKC,OAUZD,KAAKE,GCLX,SAASC,IACd,IAAIC,EAAM,IAAIC,EAAoB,GAclC,OAZIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGXA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAUF,SAASE,EAASF,EAAKG,GAU5B,OATAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,IACJH,EASF,SAASI,EAAMD,GACpB,IAAIH,EAAM,IAAIC,EAAoB,GAUlC,OATAD,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAUF,SAASK,EAAKL,EAAKG,GAUxB,OATAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAiBF,SAASM,EAAWC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GACjE,IAAIf,EAAM,IAAIC,EAAoB,GAUlC,OATAD,EAAI,GAAKO,EACTP,EAAI,GAAKQ,EACTR,EAAI,GAAKS,EACTT,EAAI,GAAKU,EACTV,EAAI,GAAKW,EACTX,EAAI,GAAKY,EACTZ,EAAI,GAAKa,EACTb,EAAI,GAAKc,EACTd,EAAI,GAAKe,EACFf,EAkBF,SAASgB,EAAIhB,EAAKO,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAU/D,OATAf,EAAI,GAAKO,EACTP,EAAI,GAAKQ,EACTR,EAAI,GAAKS,EACTT,EAAI,GAAKU,EACTV,EAAI,GAAKW,EACTX,EAAI,GAAKY,EACTZ,EAAI,GAAKa,EACTb,EAAI,GAAKc,EACTd,EAAI,GAAKe,EACFf,EASF,SAASiB,EAASjB,GAUvB,OATAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAUF,SAASkB,EAAUlB,EAAKG,GAE7B,GAAIH,IAAQG,EAAG,CACb,IAAIgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRkB,EAAMlB,EAAE,GACZH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKmB,EACTnB,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKoB,EACTpB,EAAI,GAAKqB,OAETrB,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GAGb,OAAOH,EAUF,SAASsB,EAAOtB,EAAKG,GAC1B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GACR0B,EAAMD,EAAMH,EAAMJ,EAAMM,EACxBG,GAAOF,EAAMJ,EAAMH,EAAMK,EACzBK,EAAMJ,EAAMH,EAAMC,EAAMC,EAExBM,EAAMT,EAAMM,EAAMV,EAAMW,EAAMV,EAAMW,EAExC,OAAKC,GAILA,EAAM,EAAMA,EACZhC,EAAI,GAAK6B,EAAMG,EACfhC,EAAI,KAAO4B,EAAMT,EAAMC,EAAMO,GAAOK,EACpChC,EAAI,IAAMqB,EAAMF,EAAMC,EAAMK,GAAOO,EACnChC,EAAI,GAAK8B,EAAME,EACfhC,EAAI,IAAM4B,EAAML,EAAMH,EAAMM,GAAOM,EACnChC,EAAI,KAAOqB,EAAME,EAAMH,EAAMI,GAAOQ,EACpChC,EAAI,GAAK+B,EAAMC,EACfhC,EAAI,KAAO2B,EAAMJ,EAAMJ,EAAMO,GAAOM,EACpChC,EAAI,IAAMyB,EAAMF,EAAMJ,EAAMK,GAAOQ,EAC5BhC,GAbE,KAuBJ,SAASiC,EAAQjC,EAAKG,GAC3B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GAUZ,OATAH,EAAI,GAAKyB,EAAMG,EAAMP,EAAMM,EAC3B3B,EAAI,GAAKoB,EAAMO,EAAMR,EAAMS,EAC3B5B,EAAI,GAAKmB,EAAME,EAAMD,EAAMK,EAC3BzB,EAAI,GAAKqB,EAAMK,EAAMF,EAAMI,EAC3B5B,EAAI,GAAKuB,EAAMK,EAAMR,EAAMM,EAC3B1B,EAAI,GAAKoB,EAAMI,EAAMD,EAAMF,EAC3BrB,EAAI,GAAKwB,EAAMG,EAAMF,EAAMC,EAC3B1B,EAAI,GAAKmB,EAAMO,EAAMH,EAAMI,EAC3B3B,EAAI,GAAKuB,EAAME,EAAMN,EAAMK,EACpBxB,EASF,SAASkC,EAAY/B,GAC1B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GACZ,OAAOoB,GAAOK,EAAMH,EAAMJ,EAAMM,GAAOR,IAAQS,EAAMJ,EAAMH,EAAMK,GAAON,GAAOO,EAAMH,EAAMC,EAAMC,GAW5F,SAASS,EAASnC,EAAKG,EAAGiC,GAC/B,IAAIb,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GACRkC,EAAMD,EAAE,GACRP,EAAMO,EAAE,GACRE,EAAMF,EAAE,GACRG,EAAMH,EAAE,GACRN,EAAMM,EAAE,GACRI,EAAMJ,EAAE,GACRK,EAAML,EAAE,GACRL,EAAMK,EAAE,GACRM,EAAMN,EAAE,GAUZ,OATApC,EAAI,GAAKqC,EAAMd,EAAMM,EAAML,EAAMc,EAAMZ,EACvC1B,EAAI,GAAKqC,EAAMlB,EAAMU,EAAMJ,EAAMa,EAAMX,EACvC3B,EAAI,GAAKqC,EAAMjB,EAAMS,EAAMR,EAAMiB,EAAMV,EACvC5B,EAAI,GAAKuC,EAAMhB,EAAMO,EAAMN,EAAMgB,EAAMd,EACvC1B,EAAI,GAAKuC,EAAMpB,EAAMW,EAAML,EAAMe,EAAMb,EACvC3B,EAAI,GAAKuC,EAAMnB,EAAMU,EAAMT,EAAMmB,EAAMZ,EACvC5B,EAAI,GAAKyC,EAAMlB,EAAMQ,EAAMP,EAAMkB,EAAMhB,EACvC1B,EAAI,GAAKyC,EAAMtB,EAAMY,EAAMN,EAAMiB,EAAMf,EACvC3B,EAAI,GAAKyC,EAAMrB,EAAMW,EAAMV,EAAMqB,EAAMd,EAChC5B,EAWF,SAAS2C,EAAU3C,EAAKG,EAAGyC,GAChC,IAAIrB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GACR0C,EAAID,EAAE,GACNE,EAAIF,EAAE,GAUV,OATA5C,EAAI,GAAKuB,EACTvB,EAAI,GAAKmB,EACTnB,EAAI,GAAKoB,EACTpB,EAAI,GAAKwB,EACTxB,EAAI,GAAKyB,EACTzB,EAAI,GAAKqB,EACTrB,EAAI,GAAK6C,EAAItB,EAAMuB,EAAItB,EAAME,EAC7B1B,EAAI,GAAK6C,EAAI1B,EAAM2B,EAAIrB,EAAME,EAC7B3B,EAAI,GAAK6C,EAAIzB,EAAM0B,EAAIzB,EAAMO,EACtB5B,EAWF,SAAS+C,EAAO/C,EAAKG,EAAG6C,GAC7B,IAAIzB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,GACR8C,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GAUjB,OATAhD,EAAI,GAAKmD,EAAI5B,EAAM0B,EAAIzB,EACvBxB,EAAI,GAAKmD,EAAIhC,EAAM8B,EAAIxB,EACvBzB,EAAI,GAAKmD,EAAI/B,EAAM6B,EAAI5B,EACvBrB,EAAI,GAAKmD,EAAI3B,EAAMyB,EAAI1B,EACvBvB,EAAI,GAAKmD,EAAI1B,EAAMwB,EAAI9B,EACvBnB,EAAI,GAAKmD,EAAI9B,EAAM4B,EAAI7B,EACvBpB,EAAI,GAAK0B,EACT1B,EAAI,GAAK2B,EACT3B,EAAI,GAAK4B,EACF5B,EAWF,SAASqD,EAAMrD,EAAKG,EAAGyC,GAC5B,IAAIC,EAAID,EAAE,GACNE,EAAIF,EAAE,GAUV,OATA5C,EAAI,GAAK6C,EAAI1C,EAAE,GACfH,EAAI,GAAK6C,EAAI1C,EAAE,GACfH,EAAI,GAAK6C,EAAI1C,EAAE,GACfH,EAAI,GAAK8C,EAAI3C,EAAE,GACfH,EAAI,GAAK8C,EAAI3C,EAAE,GACfH,EAAI,GAAK8C,EAAI3C,EAAE,GACfH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAcF,SAASsD,EAAgBtD,EAAK4C,GAUnC,OATA5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK,EACFA,EAcF,SAASuD,EAAavD,EAAKgD,GAChC,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GAUjB,OATAhD,EAAI,GAAKmD,EACTnD,EAAI,GAAKiD,EACTjD,EAAI,GAAK,EACTA,EAAI,IAAMiD,EACVjD,EAAI,GAAKmD,EACTnD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAcF,SAASwD,EAAYxD,EAAK4C,GAU/B,OATA5C,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAUF,SAASyD,EAAUzD,EAAKG,GAU7B,OATAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAK,EACTA,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAK,EACTA,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAK,EACFA,EAWF,SAAS0D,EAAS1D,EAAK2D,GAC5B,IAAId,EAAIc,EAAE,GACNb,EAAIa,EAAE,GACNC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNG,EAAKjB,EAAIA,EACTkB,EAAKjB,EAAIA,EACTkB,EAAKJ,EAAIA,EACTK,EAAKpB,EAAIiB,EACTI,EAAKpB,EAAIgB,EACTK,EAAKrB,EAAIiB,EACTK,EAAKR,EAAIE,EACTO,EAAKT,EAAIG,EACTO,EAAKV,EAAII,EACTO,EAAKV,EAAIC,EACTU,EAAKX,EAAIE,EACTU,EAAKZ,EAAIG,EAUb,OATAhE,EAAI,GAAK,EAAImE,EAAKG,EAClBtE,EAAI,GAAKkE,EAAKO,EACdzE,EAAI,GAAKoE,EAAKI,EACdxE,EAAI,GAAKkE,EAAKO,EACdzE,EAAI,GAAK,EAAIiE,EAAKK,EAClBtE,EAAI,GAAKqE,EAAKE,EACdvE,EAAI,GAAKoE,EAAKI,EACdxE,EAAI,GAAKqE,EAAKE,EACdvE,EAAI,GAAK,EAAIiE,EAAKE,EACXnE,EAWF,SAAS0E,EAAe1E,EAAKG,GAClC,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACR2E,EAAM3E,EAAE,IACR4E,EAAM5E,EAAE,IACR6E,EAAM7E,EAAE,IACR8E,EAAM9E,EAAE,IACRkC,EAAMd,EAAME,EAAMN,EAAMK,EACxBK,EAAMN,EAAMF,EAAMD,EAAMI,EACxBc,EAAMf,EAAMqD,EAAMD,EAAMnD,EACxB0D,EAAM/D,EAAME,EAAMD,EAAMK,EACxB0D,EAAMhE,EAAMyD,EAAMD,EAAMlD,EACxB2D,EAAMhE,EAAMwD,EAAMD,EAAMtD,EACxBgE,EAAM3D,EAAMqD,EAAMpD,EAAMmD,EACxBQ,EAAM5D,EAAMsD,EAAMpD,EAAMkD,EACxBS,EAAM7D,EAAMuD,EAAMJ,EAAMC,EACxBU,EAAM7D,EAAMqD,EAAMpD,EAAMmD,EACxBxC,EAAMZ,EAAMsD,EAAMJ,EAAME,EACxBjD,EAAMF,EAAMqD,EAAMJ,EAAMG,EAExBhD,EAAMK,EAAMP,EAAMD,EAAMU,EAAMD,EAAMkD,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAE5E,OAAKrD,GAILA,EAAM,EAAMA,EACZhC,EAAI,IAAMyB,EAAMK,EAAMT,EAAMkB,EAAMqC,EAAMY,GAAOxD,EAC/ChC,EAAI,IAAMqB,EAAMkE,EAAM/D,EAAMM,EAAM8C,EAAMU,GAAOtD,EAC/ChC,EAAI,IAAMwB,EAAMe,EAAMd,EAAM8D,EAAMX,EAAMS,GAAOrD,EAC/ChC,EAAI,IAAMoB,EAAMmB,EAAMpB,EAAMW,EAAM6C,EAAMa,GAAOxD,EAC/ChC,EAAI,IAAMuB,EAAMO,EAAMV,EAAMmE,EAAMZ,EAAMW,GAAOtD,EAC/ChC,EAAI,IAAMmB,EAAMoE,EAAMhE,EAAMgB,EAAMoC,EAAMU,GAAOrD,EAC/ChC,EAAI,IAAM+E,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,GAAOlD,EAC/ChC,EAAI,IAAMgF,EAAM1C,EAAMwC,EAAMM,EAAMH,EAAMpD,GAAOG,EAC/ChC,EAAI,IAAM8E,EAAMK,EAAMJ,EAAMzC,EAAM2C,EAAM5C,GAAOL,EACxChC,GAbE,KAwBJ,SAASyF,EAAWzF,EAAK0F,EAAOC,GAUrC,OATA3F,EAAI,GAAK,EAAI0F,EACb1F,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EAAI2F,EACd3F,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EASF,SAAS4F,EAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,IASnI,SAAS0F,EAAK1F,GACnB,OAAOP,KAAKkG,MAAM3F,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAW/D,SAAS4F,EAAI/F,EAAKG,EAAGiC,GAU1B,OATApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASgG,EAAShG,EAAKG,EAAGiC,GAU/B,OATApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASiG,EAAejG,EAAKG,EAAGiC,GAUrC,OATApC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EACTpC,EAYF,SAASkG,EAAqBlG,EAAKG,EAAGiC,EAAGiB,GAU9C,OATArD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EAChBrD,EAUF,SAASmG,EAAYhG,EAAGiC,GAC7B,OAAOjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,GAUrJ,SAASgE,EAAOjG,EAAGiC,GACxB,IAAIiE,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACPoG,EAAKpG,EAAE,GACPqG,EAAKrG,EAAE,GACPsG,EAAKtG,EAAE,GACPuG,EAAKvG,EAAE,GACPwG,EAAKxG,EAAE,GACPyG,EAAKzG,EAAE,GACP0G,EAAK1G,EAAE,GACP2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACP6E,EAAK7E,EAAE,GACP8E,EAAK9E,EAAE,GACP+E,EAAK/E,EAAE,GACPgF,EAAKhF,EAAE,GACPiF,EAAKjF,EAAE,GACPkF,EAAKlF,EAAE,GACX,OAAOxC,KAAK2H,IAAIlB,EAAKS,IAAO7G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlB,GAAKzG,KAAK2H,IAAIT,KAAQlH,KAAK2H,IAAIjB,EAAKS,IAAO9G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIjB,GAAK1G,KAAK2H,IAAIR,KAAQnH,KAAK2H,IAAIhB,EAAKS,IAAO/G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIhB,GAAK3G,KAAK2H,IAAIP,KAAQpH,KAAK2H,IAAIf,EAAKS,IAAOhH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIf,GAAK5G,KAAK2H,IAAIN,KAAQrH,KAAK2H,IAAId,EAAKS,IAAOjH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAId,GAAK7G,KAAK2H,IAAIL,KAAQtH,KAAK2H,IAAIb,EAAKS,IAAOlH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIb,GAAK9G,KAAK2H,IAAIJ,KAAQvH,KAAK2H,IAAIZ,EAAKS,IAAOnH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIZ,GAAK/G,KAAK2H,IAAIH,KAAQxH,KAAK2H,IAAIX,EAAKS,IAAOpH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIX,GAAKhH,KAAK2H,IAAIF,KAAQzH,KAAK2H,IAAIV,EAAKS,IAAOrH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIV,GAAKjH,KAAK2H,IAAID,IDptBzvB1H,KAAKkG,QAAOlG,KAAKkG,MAAQ,WAI5B,IAHA,IAAIhD,EAAI,EACJ2E,EAAIC,UAAUC,OAEXF,KACL3E,GAAK4E,UAAUD,GAAKC,UAAUD,GAGhC,OAAO7H,KAAKgI,KAAK9E,KCmtBZ,IAAI+E,EAAM1F,EAMN2F,EAAM9B,EC7vBV,SAASjG,IACd,IAAIC,EAAM,IAAIC,EAAoB,IAqBlC,OAnBIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,GAGZA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EASF,SAASI,EAAMD,GACpB,IAAIH,EAAM,IAAIC,EAAoB,IAiBlC,OAhBAD,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACLH,EAUF,SAASK,EAAKL,EAAKG,GAiBxB,OAhBAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACLH,EAwBF,SAASM,EAAWC,EAAKC,EAAKC,EAAKsH,EAAKrH,EAAKC,EAAKC,EAAKoH,EAAKnH,EAAKC,EAAKC,EAAKkH,EAAKC,EAAKC,EAAKC,EAAKC,GACpG,IAAIrI,EAAM,IAAIC,EAAoB,IAiBlC,OAhBAD,EAAI,GAAKO,EACTP,EAAI,GAAKQ,EACTR,EAAI,GAAKS,EACTT,EAAI,GAAK+H,EACT/H,EAAI,GAAKU,EACTV,EAAI,GAAKW,EACTX,EAAI,GAAKY,EACTZ,EAAI,GAAKgI,EACThI,EAAI,GAAKa,EACTb,EAAI,GAAKc,EACTd,EAAI,IAAMe,EACVf,EAAI,IAAMiI,EACVjI,EAAI,IAAMkI,EACVlI,EAAI,IAAMmI,EACVnI,EAAI,IAAMoI,EACVpI,EAAI,IAAMqI,EACHrI,EAyBF,SAASgB,EAAIhB,EAAKO,EAAKC,EAAKC,EAAKsH,EAAKrH,EAAKC,EAAKC,EAAKoH,EAAKnH,EAAKC,EAAKC,EAAKkH,EAAKC,EAAKC,EAAKC,EAAKC,GAiBlG,OAhBArI,EAAI,GAAKO,EACTP,EAAI,GAAKQ,EACTR,EAAI,GAAKS,EACTT,EAAI,GAAK+H,EACT/H,EAAI,GAAKU,EACTV,EAAI,GAAKW,EACTX,EAAI,GAAKY,EACTZ,EAAI,GAAKgI,EACThI,EAAI,GAAKa,EACTb,EAAI,GAAKc,EACTd,EAAI,IAAMe,EACVf,EAAI,IAAMiI,EACVjI,EAAI,IAAMkI,EACVlI,EAAI,IAAMmI,EACVnI,EAAI,IAAMoI,EACVpI,EAAI,IAAMqI,EACHrI,EASF,SAASiB,EAASjB,GAiBvB,OAhBAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAUF,SAASkB,EAAUlB,EAAKG,GAE7B,GAAIH,IAAQG,EAAG,CACb,IAAIgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACR0E,EAAM1E,EAAE,IACZH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,IACXH,EAAI,GAAKmB,EACTnB,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,IACXH,EAAI,GAAKoB,EACTpB,EAAI,GAAKqB,EACTrB,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAM2E,EACV3E,EAAI,IAAM4E,EACV5E,EAAI,IAAM6E,OAEV7E,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,IACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,IACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IAGd,OAAOH,EAUF,SAASsB,EAAOtB,EAAKG,GAC1B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACR2E,EAAM3E,EAAE,IACR4E,EAAM5E,EAAE,IACR6E,EAAM7E,EAAE,IACR8E,EAAM9E,EAAE,IACRkC,EAAMd,EAAME,EAAMN,EAAMK,EACxBK,EAAMN,EAAMF,EAAMD,EAAMI,EACxBc,EAAMf,EAAMqD,EAAMD,EAAMnD,EACxB0D,EAAM/D,EAAME,EAAMD,EAAMK,EACxB0D,EAAMhE,EAAMyD,EAAMD,EAAMlD,EACxB2D,EAAMhE,EAAMwD,EAAMD,EAAMtD,EACxBgE,EAAM3D,EAAMqD,EAAMpD,EAAMmD,EACxBQ,EAAM5D,EAAMsD,EAAMpD,EAAMkD,EACxBS,EAAM7D,EAAMuD,EAAMJ,EAAMC,EACxBU,EAAM7D,EAAMqD,EAAMpD,EAAMmD,EACxBxC,EAAMZ,EAAMsD,EAAMJ,EAAME,EACxBjD,EAAMF,EAAMqD,EAAMJ,EAAMG,EAExBhD,EAAMK,EAAMP,EAAMD,EAAMU,EAAMD,EAAMkD,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAE5E,OAAKrD,GAILA,EAAM,EAAMA,EACZhC,EAAI,IAAMyB,EAAMK,EAAMT,EAAMkB,EAAMqC,EAAMY,GAAOxD,EAC/ChC,EAAI,IAAMoB,EAAMmB,EAAMpB,EAAMW,EAAM6C,EAAMa,GAAOxD,EAC/ChC,EAAI,IAAM+E,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,GAAOlD,EAC/ChC,EAAI,IAAM4B,EAAMuD,EAAMxD,EAAMyD,EAAMP,EAAMK,GAAOlD,EAC/ChC,EAAI,IAAMqB,EAAMkE,EAAM/D,EAAMM,EAAM8C,EAAMU,GAAOtD,EAC/ChC,EAAI,IAAMuB,EAAMO,EAAMV,EAAMmE,EAAMZ,EAAMW,GAAOtD,EAC/ChC,EAAI,IAAMgF,EAAM1C,EAAMwC,EAAMM,EAAMH,EAAMpD,GAAOG,EAC/ChC,EAAI,IAAM0B,EAAM0D,EAAMxD,EAAMU,EAAMuC,EAAMhD,GAAOG,EAC/ChC,EAAI,IAAMwB,EAAMe,EAAMd,EAAM8D,EAAMX,EAAMS,GAAOrD,EAC/ChC,EAAI,IAAMmB,EAAMoE,EAAMhE,EAAMgB,EAAMoC,EAAMU,GAAOrD,EAC/ChC,EAAI,KAAO8E,EAAMK,EAAMJ,EAAMzC,EAAM2C,EAAM5C,GAAOL,EAChDhC,EAAI,KAAO2B,EAAMW,EAAMZ,EAAMyD,EAAMN,EAAMxC,GAAOL,EAChDhC,EAAI,KAAOyB,EAAM6D,EAAM9D,EAAMgE,EAAMnE,EAAMgE,GAAOrD,EAChDhC,EAAI,KAAOuB,EAAMiE,EAAMrE,EAAMmE,EAAMlE,EAAMiE,GAAOrD,EAChDhC,EAAI,KAAO+E,EAAMlD,EAAMiD,EAAMI,EAAMF,EAAM3C,GAAOL,EAChDhC,EAAI,KAAO0B,EAAMwD,EAAMvD,EAAME,EAAMD,EAAMS,GAAOL,EACzChC,GApBE,KA8BJ,SAASiC,EAAQjC,EAAKG,GAC3B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACR2E,EAAM3E,EAAE,IACR4E,EAAM5E,EAAE,IACR6E,EAAM7E,EAAE,IACR8E,EAAM9E,EAAE,IAiBZ,OAhBAH,EAAI,GAAKyB,GAAOG,EAAMqD,EAAMJ,EAAMG,GAAOrD,GAAON,EAAM4D,EAAML,EAAMI,GAAOD,GAAO1D,EAAMwD,EAAMD,EAAMhD,GAClG5B,EAAI,KAAOmB,GAAOS,EAAMqD,EAAMJ,EAAMG,GAAOrD,GAAOP,EAAM6D,EAAMN,EAAMK,GAAOD,GAAO3D,EAAMyD,EAAMF,EAAM/C,IACpG5B,EAAI,GAAKmB,GAAOE,EAAM4D,EAAML,EAAMI,GAAOvD,GAAOL,EAAM6D,EAAMN,EAAMK,GAAOD,GAAO3D,EAAMwD,EAAMD,EAAMtD,GAClGrB,EAAI,KAAOmB,GAAOE,EAAMwD,EAAMD,EAAMhD,GAAOH,GAAOL,EAAMyD,EAAMF,EAAM/C,GAAOD,GAAOP,EAAMwD,EAAMD,EAAMtD,IACpGrB,EAAI,KAAOwB,GAAOI,EAAMqD,EAAMJ,EAAMG,GAAOtD,GAAOL,EAAM4D,EAAML,EAAMI,GAAOF,GAAOzD,EAAMwD,EAAMD,EAAMhD,IACpG5B,EAAI,GAAKuB,GAAOK,EAAMqD,EAAMJ,EAAMG,GAAOtD,GAAON,EAAM6D,EAAMN,EAAMK,GAAOF,GAAO1D,EAAMyD,EAAMF,EAAM/C,GAClG5B,EAAI,KAAOuB,GAAOF,EAAM4D,EAAML,EAAMI,GAAOxD,GAAOJ,EAAM6D,EAAMN,EAAMK,GAAOF,GAAO1D,EAAMwD,EAAMD,EAAMtD,IACpGrB,EAAI,GAAKuB,GAAOF,EAAMwD,EAAMD,EAAMhD,GAAOJ,GAAOJ,EAAMyD,EAAMF,EAAM/C,GAAOF,GAAON,EAAMwD,EAAMD,EAAMtD,GAClGrB,EAAI,GAAKwB,GAAOG,EAAMsD,EAAMJ,EAAME,GAAOrD,GAAOD,EAAMwD,EAAML,EAAMG,GAAOD,GAAOrD,EAAMoD,EAAMD,EAAMjD,GAClG3B,EAAI,KAAOuB,GAAOI,EAAMsD,EAAMJ,EAAME,GAAOrD,GAAOP,EAAM8D,EAAMN,EAAMI,GAAOD,GAAO3D,EAAM0D,EAAMF,EAAMhD,IACpG3B,EAAI,IAAMuB,GAAOE,EAAMwD,EAAML,EAAMG,GAAOvD,GAAOL,EAAM8D,EAAMN,EAAMI,GAAOD,GAAO3D,EAAMyD,EAAMD,EAAMlD,GACnGzB,EAAI,MAAQuB,GAAOE,EAAMoD,EAAMD,EAAMjD,GAAOH,GAAOL,EAAM0D,EAAMF,EAAMhD,GAAOD,GAAOP,EAAMyD,EAAMD,EAAMlD,IACrGzB,EAAI,MAAQwB,GAAOG,EAAMqD,EAAMpD,EAAMmD,GAAOrD,GAAOD,EAAMuD,EAAM3D,EAAM0D,GAAOD,GAAOrD,EAAMG,EAAMP,EAAMM,IACrG3B,EAAI,IAAMuB,GAAOI,EAAMqD,EAAMpD,EAAMmD,GAAOrD,GAAOP,EAAM6D,EAAM5D,EAAM2D,GAAOD,GAAO3D,EAAMS,EAAMR,EAAMO,GACnG3B,EAAI,MAAQuB,GAAOE,EAAMuD,EAAM3D,EAAM0D,GAAOvD,GAAOL,EAAM6D,EAAM5D,EAAM2D,GAAOD,GAAO3D,EAAME,EAAMD,EAAMK,IACrGzB,EAAI,IAAMuB,GAAOE,EAAMG,EAAMP,EAAMM,GAAOH,GAAOL,EAAMS,EAAMR,EAAMO,GAAOD,GAAOP,EAAME,EAAMD,EAAMK,GAC5FzB,EASF,SAASkC,EAAY/B,GAC1B,IAAIoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACR2E,EAAM3E,EAAE,IACR4E,EAAM5E,EAAE,IACR6E,EAAM7E,EAAE,IACR8E,EAAM9E,EAAE,IAcZ,OAbUoB,EAAME,EAAMN,EAAMK,IAWlBI,EAAMqD,EAAMJ,EAAMG,IAVlBzD,EAAMF,EAAMD,EAAMI,IASlBG,EAAMsD,EAAMJ,EAAME,IARlBxD,EAAMqD,EAAMD,EAAMnD,IAOlBG,EAAMqD,EAAMpD,EAAMmD,IANlB5D,EAAME,EAAMD,EAAMK,IAKlBC,EAAMuD,EAAMJ,EAAMC,IAJlB3D,EAAMyD,EAAMD,EAAMlD,IAGlBC,EAAMsD,EAAMpD,EAAMkD,IAFlB1D,EAAMwD,EAAMD,EAAMtD,IAClBK,EAAMqD,EAAMpD,EAAMmD,GAkBvB,SAAS3C,GAASnC,EAAKG,EAAGiC,GAC/B,IAAIb,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACR2E,EAAM3E,EAAE,IACR4E,EAAM5E,EAAE,IACR6E,EAAM7E,EAAE,IACR8E,EAAM9E,EAAE,IAER2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACP6E,EAAK7E,EAAE,GA6BX,OA5BApC,EAAI,GAAK8G,EAAKvF,EAAMwF,EAAKvF,EAAMwF,EAAKtF,EAAMuF,EAAKnC,EAC/C9E,EAAI,GAAK8G,EAAK3F,EAAM4F,EAAKtF,EAAMuF,EAAKrF,EAAMsF,EAAKlC,EAC/C/E,EAAI,GAAK8G,EAAK1F,EAAM2F,EAAK1F,EAAM2F,EAAKpF,EAAMqF,EAAKjC,EAC/ChF,EAAI,GAAK8G,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKhC,EAC/C6B,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACP6E,EAAK7E,EAAE,GACPpC,EAAI,GAAK8G,EAAKvF,EAAMwF,EAAKvF,EAAMwF,EAAKtF,EAAMuF,EAAKnC,EAC/C9E,EAAI,GAAK8G,EAAK3F,EAAM4F,EAAKtF,EAAMuF,EAAKrF,EAAMsF,EAAKlC,EAC/C/E,EAAI,GAAK8G,EAAK1F,EAAM2F,EAAK1F,EAAM2F,EAAKpF,EAAMqF,EAAKjC,EAC/ChF,EAAI,GAAK8G,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKhC,EAC/C6B,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,IACP6E,EAAK7E,EAAE,IACPpC,EAAI,GAAK8G,EAAKvF,EAAMwF,EAAKvF,EAAMwF,EAAKtF,EAAMuF,EAAKnC,EAC/C9E,EAAI,GAAK8G,EAAK3F,EAAM4F,EAAKtF,EAAMuF,EAAKrF,EAAMsF,EAAKlC,EAC/C/E,EAAI,IAAM8G,EAAK1F,EAAM2F,EAAK1F,EAAM2F,EAAKpF,EAAMqF,EAAKjC,EAChDhF,EAAI,IAAM8G,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKhC,EAChD6B,EAAK1E,EAAE,IACP2E,EAAK3E,EAAE,IACP4E,EAAK5E,EAAE,IACP6E,EAAK7E,EAAE,IACPpC,EAAI,IAAM8G,EAAKvF,EAAMwF,EAAKvF,EAAMwF,EAAKtF,EAAMuF,EAAKnC,EAChD9E,EAAI,IAAM8G,EAAK3F,EAAM4F,EAAKtF,EAAMuF,EAAKrF,EAAMsF,EAAKlC,EAChD/E,EAAI,IAAM8G,EAAK1F,EAAM2F,EAAK1F,EAAM2F,EAAKpF,EAAMqF,EAAKjC,EAChDhF,EAAI,IAAM8G,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKnC,EAAMoC,EAAKhC,EACzCjF,EAWF,SAAS2C,GAAU3C,EAAKG,EAAGyC,GAChC,IAGIrB,EAAKJ,EAAKC,EAAKuD,EACfnD,EAAKC,EAAKJ,EAAKuD,EACflD,EAAKC,EAAKC,EAAKiD,EALfhC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNgB,EAAIhB,EAAE,GAyCV,OApCIzC,IAAMH,GACRA,EAAI,IAAMG,EAAE,GAAK0C,EAAI1C,EAAE,GAAK2C,EAAI3C,EAAE,GAAKyD,EAAIzD,EAAE,IAC7CH,EAAI,IAAMG,EAAE,GAAK0C,EAAI1C,EAAE,GAAK2C,EAAI3C,EAAE,GAAKyD,EAAIzD,EAAE,IAC7CH,EAAI,IAAMG,EAAE,GAAK0C,EAAI1C,EAAE,GAAK2C,EAAI3C,EAAE,IAAMyD,EAAIzD,EAAE,IAC9CH,EAAI,IAAMG,EAAE,GAAK0C,EAAI1C,EAAE,GAAK2C,EAAI3C,EAAE,IAAMyD,EAAIzD,EAAE,MAE9CoB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IACRH,EAAI,GAAKuB,EACTvB,EAAI,GAAKmB,EACTnB,EAAI,GAAKoB,EACTpB,EAAI,GAAK2E,EACT3E,EAAI,GAAKwB,EACTxB,EAAI,GAAKyB,EACTzB,EAAI,GAAKqB,EACTrB,EAAI,GAAK4E,EACT5E,EAAI,GAAK0B,EACT1B,EAAI,GAAK2B,EACT3B,EAAI,IAAM4B,EACV5B,EAAI,IAAM6E,EACV7E,EAAI,IAAMuB,EAAMsB,EAAIrB,EAAMsB,EAAIpB,EAAMkC,EAAIzD,EAAE,IAC1CH,EAAI,IAAMmB,EAAM0B,EAAIpB,EAAMqB,EAAInB,EAAMiC,EAAIzD,EAAE,IAC1CH,EAAI,IAAMoB,EAAMyB,EAAIxB,EAAMyB,EAAIlB,EAAMgC,EAAIzD,EAAE,IAC1CH,EAAI,IAAM2E,EAAM9B,EAAI+B,EAAM9B,EAAI+B,EAAMjB,EAAIzD,EAAE,KAGrCH,EAWF,SAASqD,GAAMrD,EAAKG,EAAGyC,GAC5B,IAAIC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNgB,EAAIhB,EAAE,GAiBV,OAhBA5C,EAAI,GAAKG,EAAE,GAAK0C,EAChB7C,EAAI,GAAKG,EAAE,GAAK0C,EAChB7C,EAAI,GAAKG,EAAE,GAAK0C,EAChB7C,EAAI,GAAKG,EAAE,GAAK0C,EAChB7C,EAAI,GAAKG,EAAE,GAAK2C,EAChB9C,EAAI,GAAKG,EAAE,GAAK2C,EAChB9C,EAAI,GAAKG,EAAE,GAAK2C,EAChB9C,EAAI,GAAKG,EAAE,GAAK2C,EAChB9C,EAAI,GAAKG,EAAE,GAAKyD,EAChB5D,EAAI,GAAKG,EAAE,GAAKyD,EAChB5D,EAAI,IAAMG,EAAE,IAAMyD,EAClB5D,EAAI,IAAMG,EAAE,IAAMyD,EAClB5D,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACLH,EAYF,SAAS+C,GAAO/C,EAAKG,EAAG6C,EAAKsF,GAClC,IAIIrF,EAAGE,EAAGoF,EACNhH,EAAKJ,EAAKC,EAAKuD,EACfnD,EAAKC,EAAKJ,EAAKuD,EACflD,EAAKC,EAAKC,EAAKiD,EACfxC,EAAKR,EAAKS,EACVC,EAAKT,EAAKU,EACVC,EAAKV,EAAKW,EAVVG,EAAIyF,EAAK,GACTxF,EAAIwF,EAAK,GACT1E,EAAI0E,EAAK,GACTE,EAAM5I,KAAKkG,MAAMjD,EAAGC,EAAGc,GAS3B,OAAI4E,EAAMvI,EACD,MAIT4C,GADA2F,EAAM,EAAIA,EAEV1F,GAAK0F,EACL5E,GAAK4E,EACLvF,EAAIrD,KAAKsD,IAAIF,GAEbuF,EAAI,GADJpF,EAAIvD,KAAKwD,IAAIJ,IAEbzB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IAERkC,EAAMQ,EAAIA,EAAI0F,EAAIpF,EAClBtB,EAAMiB,EAAID,EAAI0F,EAAI3E,EAAIX,EACtBX,EAAMsB,EAAIf,EAAI0F,EAAIzF,EAAIG,EACtBV,EAAMM,EAAIC,EAAIyF,EAAI3E,EAAIX,EACtBnB,EAAMgB,EAAIA,EAAIyF,EAAIpF,EAClBX,EAAMoB,EAAId,EAAIyF,EAAI1F,EAAII,EACtBR,EAAMI,EAAIe,EAAI2E,EAAIzF,EAAIG,EACtBlB,EAAMe,EAAIc,EAAI2E,EAAI1F,EAAII,EACtBP,EAAMkB,EAAIA,EAAI2E,EAAIpF,EAElBnD,EAAI,GAAKuB,EAAMc,EAAMb,EAAMK,EAAMH,EAAMY,EACvCtC,EAAI,GAAKmB,EAAMkB,EAAMZ,EAAMI,EAAMF,EAAMW,EACvCtC,EAAI,GAAKoB,EAAMiB,EAAMhB,EAAMQ,EAAMD,EAAMU,EACvCtC,EAAI,GAAK2E,EAAMtC,EAAMuC,EAAM/C,EAAMgD,EAAMvC,EACvCtC,EAAI,GAAKuB,EAAMgB,EAAMf,EAAMM,EAAMJ,EAAMc,EACvCxC,EAAI,GAAKmB,EAAMoB,EAAMd,EAAMK,EAAMH,EAAMa,EACvCxC,EAAI,GAAKoB,EAAMmB,EAAMlB,EAAMS,EAAMF,EAAMY,EACvCxC,EAAI,GAAK2E,EAAMpC,EAAMqC,EAAM9C,EAAM+C,EAAMrC,EACvCxC,EAAI,GAAKuB,EAAMkB,EAAMjB,EAAMO,EAAML,EAAMgB,EACvC1C,EAAI,GAAKmB,EAAMsB,EAAMhB,EAAMM,EAAMJ,EAAMe,EACvC1C,EAAI,IAAMoB,EAAMqB,EAAMpB,EAAMU,EAAMH,EAAMc,EACxC1C,EAAI,IAAM2E,EAAMlC,EAAMmC,EAAM7C,EAAM8C,EAAMnC,EAEpCvC,IAAMH,IAERA,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,KAGPH,GAWF,SAASyI,GAAQzI,EAAKG,EAAG6C,GAC9B,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GACbxB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IAuBZ,OArBIA,IAAMH,IAERA,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,KAIdH,EAAI,GAAKwB,EAAM2B,EAAIzB,EAAMuB,EACzBjD,EAAI,GAAKyB,EAAM0B,EAAIxB,EAAMsB,EACzBjD,EAAI,GAAKqB,EAAM8B,EAAIvB,EAAMqB,EACzBjD,EAAI,GAAK4E,EAAMzB,EAAI0B,EAAM5B,EACzBjD,EAAI,GAAK0B,EAAMyB,EAAI3B,EAAMyB,EACzBjD,EAAI,GAAK2B,EAAMwB,EAAI1B,EAAMwB,EACzBjD,EAAI,IAAM4B,EAAMuB,EAAI9B,EAAM4B,EAC1BjD,EAAI,IAAM6E,EAAM1B,EAAIyB,EAAM3B,EACnBjD,EAWF,SAAS0I,GAAQ1I,EAAKG,EAAG6C,GAC9B,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GACbzB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRuB,EAAMvB,EAAE,GACRwB,EAAMxB,EAAE,GACRyB,EAAMzB,EAAE,IACR0E,EAAM1E,EAAE,IAuBZ,OArBIA,IAAMH,IAERA,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,KAIdH,EAAI,GAAKuB,EAAM4B,EAAIzB,EAAMuB,EACzBjD,EAAI,GAAKmB,EAAMgC,EAAIxB,EAAMsB,EACzBjD,EAAI,GAAKoB,EAAM+B,EAAIvB,EAAMqB,EACzBjD,EAAI,GAAK2E,EAAMxB,EAAI0B,EAAM5B,EACzBjD,EAAI,GAAKuB,EAAM0B,EAAIvB,EAAMyB,EACzBnD,EAAI,GAAKmB,EAAM8B,EAAItB,EAAMwB,EACzBnD,EAAI,IAAMoB,EAAM6B,EAAIrB,EAAMuB,EAC1BnD,EAAI,IAAM2E,EAAM1B,EAAI4B,EAAM1B,EACnBnD,EAWF,SAAS2I,GAAQ3I,EAAKG,EAAG6C,GAC9B,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GACbzB,EAAMpB,EAAE,GACRgB,EAAMhB,EAAE,GACRiB,EAAMjB,EAAE,GACRwE,EAAMxE,EAAE,GACRqB,EAAMrB,EAAE,GACRsB,EAAMtB,EAAE,GACRkB,EAAMlB,EAAE,GACRyE,EAAMzE,EAAE,GAuBZ,OArBIA,IAAMH,IAERA,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,IACZH,EAAI,IAAMG,EAAE,KAIdH,EAAI,GAAKuB,EAAM4B,EAAI3B,EAAMyB,EACzBjD,EAAI,GAAKmB,EAAMgC,EAAI1B,EAAMwB,EACzBjD,EAAI,GAAKoB,EAAM+B,EAAI9B,EAAM4B,EACzBjD,EAAI,GAAK2E,EAAMxB,EAAIyB,EAAM3B,EACzBjD,EAAI,GAAKwB,EAAM2B,EAAI5B,EAAM0B,EACzBjD,EAAI,GAAKyB,EAAM0B,EAAIhC,EAAM8B,EACzBjD,EAAI,GAAKqB,EAAM8B,EAAI/B,EAAM6B,EACzBjD,EAAI,GAAK4E,EAAMzB,EAAIwB,EAAM1B,EAClBjD,EAcF,SAASsD,GAAgBtD,EAAK4C,GAiBnC,OAhBA5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM,EACHA,EAcF,SAASwD,GAAYxD,EAAK4C,GAiB/B,OAhBA5C,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK4C,EAAE,GACX5C,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAeF,SAASuD,GAAavD,EAAKgD,EAAKsF,GACrC,IAIIrF,EAAGE,EAAGoF,EAJN1F,EAAIyF,EAAK,GACTxF,EAAIwF,EAAK,GACT1E,EAAI0E,EAAK,GACTE,EAAM5I,KAAKkG,MAAMjD,EAAGC,EAAGc,GAG3B,OAAI4E,EAAMvI,EACD,MAIT4C,GADA2F,EAAM,EAAIA,EAEV1F,GAAK0F,EACL5E,GAAK4E,EACLvF,EAAIrD,KAAKsD,IAAIF,GAEbuF,EAAI,GADJpF,EAAIvD,KAAKwD,IAAIJ,IAGbhD,EAAI,GAAK6C,EAAIA,EAAI0F,EAAIpF,EACrBnD,EAAI,GAAK8C,EAAID,EAAI0F,EAAI3E,EAAIX,EACzBjD,EAAI,GAAK4D,EAAIf,EAAI0F,EAAIzF,EAAIG,EACzBjD,EAAI,GAAK,EACTA,EAAI,GAAK6C,EAAIC,EAAIyF,EAAI3E,EAAIX,EACzBjD,EAAI,GAAK8C,EAAIA,EAAIyF,EAAIpF,EACrBnD,EAAI,GAAK4D,EAAId,EAAIyF,EAAI1F,EAAII,EACzBjD,EAAI,GAAK,EACTA,EAAI,GAAK6C,EAAIe,EAAI2E,EAAIzF,EAAIG,EACzBjD,EAAI,GAAK8C,EAAIc,EAAI2E,EAAI1F,EAAII,EACzBjD,EAAI,IAAM4D,EAAIA,EAAI2E,EAAIpF,EACtBnD,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,GAcF,SAAS4I,GAAc5I,EAAKgD,GACjC,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GAkBjB,OAhBAhD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKmD,EACTnD,EAAI,GAAKiD,EACTjD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAMiD,EACVjD,EAAI,IAAMmD,EACVnD,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAcF,SAAS6I,GAAc7I,EAAKgD,GACjC,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GAkBjB,OAhBAhD,EAAI,GAAKmD,EACTnD,EAAI,GAAK,EACTA,EAAI,IAAMiD,EACVjD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKiD,EACTjD,EAAI,GAAK,EACTA,EAAI,IAAMmD,EACVnD,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAcF,SAAS8I,GAAc9I,EAAKgD,GACjC,IAAIC,EAAIrD,KAAKsD,IAAIF,GACbG,EAAIvD,KAAKwD,IAAIJ,GAkBjB,OAhBAhD,EAAI,GAAKmD,EACTnD,EAAI,GAAKiD,EACTjD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAMiD,EACVjD,EAAI,GAAKmD,EACTnD,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAkBF,SAAS+I,GAAwB/I,EAAK2D,EAAGf,GAE9C,IAAIC,EAAIc,EAAE,GACNb,EAAIa,EAAE,GACNC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNG,EAAKjB,EAAIA,EACTkB,EAAKjB,EAAIA,EACTkB,EAAKJ,EAAIA,EACTK,EAAKpB,EAAIiB,EACTkF,EAAKnG,EAAIkB,EACTkF,EAAKpG,EAAImB,EACTG,EAAKrB,EAAIiB,EACTmF,EAAKpG,EAAIkB,EACTM,EAAKV,EAAII,EACTO,EAAKV,EAAIC,EACTU,EAAKX,EAAIE,EACTU,EAAKZ,EAAIG,EAiBb,OAhBAhE,EAAI,GAAK,GAAKmE,EAAKG,GACnBtE,EAAI,GAAKgJ,EAAKvE,EACdzE,EAAI,GAAKiJ,EAAKzE,EACdxE,EAAI,GAAK,EACTA,EAAI,GAAKgJ,EAAKvE,EACdzE,EAAI,GAAK,GAAKiE,EAAKK,GACnBtE,EAAI,GAAKkJ,EAAK3E,EACdvE,EAAI,GAAK,EACTA,EAAI,GAAKiJ,EAAKzE,EACdxE,EAAI,GAAKkJ,EAAK3E,EACdvE,EAAI,IAAM,GAAKiE,EAAKE,GACpBnE,EAAI,IAAM,EACVA,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM,EACHA,EAUF,SAASmJ,GAAUnJ,EAAKG,GAC7B,IAAIiJ,EAAc,IAAInJ,EAAoB,GACtCoJ,GAAMlJ,EAAE,GACRmJ,GAAMnJ,EAAE,GACRoJ,GAAMpJ,EAAE,GACRqJ,EAAKrJ,EAAE,GACPsJ,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACP0J,EAAYR,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAanD,OAXIK,EAAY,GACdT,EAAY,GAA+C,GAAzCK,EAAKD,EAAKI,EAAKP,EAAKK,EAAKH,EAAKI,EAAKL,GAAUO,EAC/DT,EAAY,GAA+C,GAAzCM,EAAKF,EAAKI,EAAKN,EAAKK,EAAKN,EAAKI,EAAKF,GAAUM,EAC/DT,EAAY,GAA+C,GAAzCO,EAAKH,EAAKI,EAAKL,EAAKE,EAAKH,EAAKI,EAAKL,GAAUQ,IAE/DT,EAAY,GAA+C,GAAzCK,EAAKD,EAAKI,EAAKP,EAAKK,EAAKH,EAAKI,EAAKL,GACrDF,EAAY,GAA+C,GAAzCM,EAAKF,EAAKI,EAAKN,EAAKK,EAAKN,EAAKI,EAAKF,GACrDH,EAAY,GAA+C,GAAzCO,EAAKH,EAAKI,EAAKL,EAAKE,EAAKH,EAAKI,EAAKL,IAGvDN,GAAwB/I,EAAKG,EAAGiJ,GACzBpJ,EAYF,SAAS8J,GAAe9J,EAAK+J,GAIlC,OAHA/J,EAAI,GAAK+J,EAAI,IACb/J,EAAI,GAAK+J,EAAI,IACb/J,EAAI,GAAK+J,EAAI,IACN/J,EAaF,SAASgK,GAAWhK,EAAK+J,GAC9B,IAAIpJ,EAAMoJ,EAAI,GACVnJ,EAAMmJ,EAAI,GACV/B,EAAM+B,EAAI,GACVjJ,EAAMiJ,EAAI,GACVhJ,EAAMgJ,EAAI,GACV9B,EAAM8B,EAAI,GACV5B,EAAM4B,EAAI,GACV3B,EAAM2B,EAAI,GACV1B,EAAM0B,EAAI,IAId,OAHA/J,EAAI,GAAKJ,KAAKkG,MAAMnF,EAAKC,EAAKoH,GAC9BhI,EAAI,GAAKJ,KAAKkG,MAAMhF,EAAKC,EAAKkH,GAC9BjI,EAAI,GAAKJ,KAAKkG,MAAMqC,EAAKC,EAAKC,GACvBrI,EAYF,SAASiK,GAAYjK,EAAK+J,GAC/B,IAAIG,EAAU,IAAIjK,EAAoB,GACtC+J,GAAWE,EAASH,GACpB,IAAII,EAAM,EAAID,EAAQ,GAClBE,EAAM,EAAIF,EAAQ,GAClBG,EAAM,EAAIH,EAAQ,GAClBI,EAAOP,EAAI,GAAKI,EAChBI,EAAOR,EAAI,GAAKK,EAChBI,EAAOT,EAAI,GAAKM,EAChBI,EAAOV,EAAI,GAAKI,EAChBO,EAAOX,EAAI,GAAKK,EAChBO,EAAOZ,EAAI,GAAKM,EAChBO,EAAOb,EAAI,GAAKI,EAChBU,EAAOd,EAAI,GAAKK,EAChBU,EAAOf,EAAI,IAAMM,EACjBU,EAAQT,EAAOI,EAAOI,EACtBE,EAAI,EA4BR,OA1BID,EAAQ,GACVC,EAA6B,EAAzBpL,KAAKgI,KAAKmD,EAAQ,GACtB/K,EAAI,GAAK,IAAOgL,EAChBhL,EAAI,IAAM2K,EAAOE,GAAQG,EACzBhL,EAAI,IAAM4K,EAAOJ,GAAQQ,EACzBhL,EAAI,IAAMuK,EAAOE,GAAQO,GAChBV,EAAOI,GAAQJ,EAAOQ,GAC/BE,EAA0C,EAAtCpL,KAAKgI,KAAK,EAAM0C,EAAOI,EAAOI,GAClC9K,EAAI,IAAM2K,EAAOE,GAAQG,EACzBhL,EAAI,GAAK,IAAOgL,EAChBhL,EAAI,IAAMuK,EAAOE,GAAQO,EACzBhL,EAAI,IAAM4K,EAAOJ,GAAQQ,GAChBN,EAAOI,GAChBE,EAA0C,EAAtCpL,KAAKgI,KAAK,EAAM8C,EAAOJ,EAAOQ,GAClC9K,EAAI,IAAM4K,EAAOJ,GAAQQ,EACzBhL,EAAI,IAAMuK,EAAOE,GAAQO,EACzBhL,EAAI,GAAK,IAAOgL,EAChBhL,EAAI,IAAM2K,EAAOE,GAAQG,IAEzBA,EAA0C,EAAtCpL,KAAKgI,KAAK,EAAMkD,EAAOR,EAAOI,GAClC1K,EAAI,IAAMuK,EAAOE,GAAQO,EACzBhL,EAAI,IAAM4K,EAAOJ,GAAQQ,EACzBhL,EAAI,IAAM2K,EAAOE,GAAQG,EACzBhL,EAAI,GAAK,IAAOgL,GAGXhL,EAoBF,SAASiL,GAA6BjL,EAAK2D,EAAGf,EAAGK,GAEtD,IAAIJ,EAAIc,EAAE,GACNb,EAAIa,EAAE,GACNC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNG,EAAKjB,EAAIA,EACTkB,EAAKjB,EAAIA,EACTkB,EAAKJ,EAAIA,EACTK,EAAKpB,EAAIiB,EACTkF,EAAKnG,EAAIkB,EACTkF,EAAKpG,EAAImB,EACTG,EAAKrB,EAAIiB,EACTmF,EAAKpG,EAAIkB,EACTM,EAAKV,EAAII,EACTO,EAAKV,EAAIC,EACTU,EAAKX,EAAIE,EACTU,EAAKZ,EAAIG,EACTkH,EAAKjI,EAAE,GACPkI,EAAKlI,EAAE,GACPmI,EAAKnI,EAAE,GAiBX,OAhBAjD,EAAI,IAAM,GAAKmE,EAAKG,IAAO4G,EAC3BlL,EAAI,IAAMgJ,EAAKvE,GAAMyG,EACrBlL,EAAI,IAAMiJ,EAAKzE,GAAM0G,EACrBlL,EAAI,GAAK,EACTA,EAAI,IAAMgJ,EAAKvE,GAAM0G,EACrBnL,EAAI,IAAM,GAAKiE,EAAKK,IAAO6G,EAC3BnL,EAAI,IAAMkJ,EAAK3E,GAAM4G,EACrBnL,EAAI,GAAK,EACTA,EAAI,IAAMiJ,EAAKzE,GAAM4G,EACrBpL,EAAI,IAAMkJ,EAAK3E,GAAM6G,EACrBpL,EAAI,KAAO,GAAKiE,EAAKE,IAAOiH,EAC5BpL,EAAI,IAAM,EACVA,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM4C,EAAE,GACZ5C,EAAI,IAAM,EACHA,EAuBF,SAASqL,GAAmCrL,EAAK2D,EAAGf,EAAGK,EAAGqI,GAE/D,IAAIzI,EAAIc,EAAE,GACNb,EAAIa,EAAE,GACNC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNG,EAAKjB,EAAIA,EACTkB,EAAKjB,EAAIA,EACTkB,EAAKJ,EAAIA,EACTK,EAAKpB,EAAIiB,EACTkF,EAAKnG,EAAIkB,EACTkF,EAAKpG,EAAImB,EACTG,EAAKrB,EAAIiB,EACTmF,EAAKpG,EAAIkB,EACTM,EAAKV,EAAII,EACTO,EAAKV,EAAIC,EACTU,EAAKX,EAAIE,EACTU,EAAKZ,EAAIG,EACTkH,EAAKjI,EAAE,GACPkI,EAAKlI,EAAE,GACPmI,EAAKnI,EAAE,GACPsI,EAAKD,EAAE,GACPE,EAAKF,EAAE,GACPG,EAAKH,EAAE,GACPI,GAAQ,GAAKvH,EAAKG,IAAO4G,EACzBS,GAAQ3C,EAAKvE,GAAMyG,EACnBU,GAAQ3C,EAAKzE,GAAM0G,EACnBW,GAAQ7C,EAAKvE,GAAM0G,EACnBW,GAAQ,GAAK7H,EAAKK,IAAO6G,EACzBY,GAAQ7C,EAAK3E,GAAM4G,EACnBa,GAAQ/C,EAAKzE,GAAM4G,EACnBa,GAAQ/C,EAAK3E,GAAM6G,EACnBc,GAAS,GAAKjI,EAAKE,IAAOiH,EAiB9B,OAhBApL,EAAI,GAAK0L,EACT1L,EAAI,GAAK2L,EACT3L,EAAI,GAAK4L,EACT5L,EAAI,GAAK,EACTA,EAAI,GAAK6L,EACT7L,EAAI,GAAK8L,EACT9L,EAAI,GAAK+L,EACT/L,EAAI,GAAK,EACTA,EAAI,GAAKgM,EACThM,EAAI,GAAKiM,EACTjM,EAAI,IAAMkM,EACVlM,EAAI,IAAM,EACVA,EAAI,IAAM4C,EAAE,GAAK2I,GAAMG,EAAOH,EAAKM,EAAOL,EAAKQ,EAAOP,GACtDzL,EAAI,IAAM4C,EAAE,GAAK4I,GAAMG,EAAOJ,EAAKO,EAAON,EAAKS,EAAOR,GACtDzL,EAAI,IAAM4C,EAAE,GAAK6I,GAAMG,EAAOL,EAAKQ,EAAOP,EAAKU,EAAQT,GACvDzL,EAAI,IAAM,EACHA,EAWF,SAAS0D,GAAS1D,EAAK2D,GAC5B,IAAId,EAAIc,EAAE,GACNb,EAAIa,EAAE,GACNC,EAAID,EAAE,GACNE,EAAIF,EAAE,GACNG,EAAKjB,EAAIA,EACTkB,EAAKjB,EAAIA,EACTkB,EAAKJ,EAAIA,EACTK,EAAKpB,EAAIiB,EACTI,EAAKpB,EAAIgB,EACTK,EAAKrB,EAAIiB,EACTK,EAAKR,EAAIE,EACTO,EAAKT,EAAIG,EACTO,EAAKV,EAAII,EACTO,EAAKV,EAAIC,EACTU,EAAKX,EAAIE,EACTU,EAAKZ,EAAIG,EAiBb,OAhBAhE,EAAI,GAAK,EAAImE,EAAKG,EAClBtE,EAAI,GAAKkE,EAAKO,EACdzE,EAAI,GAAKoE,EAAKI,EACdxE,EAAI,GAAK,EACTA,EAAI,GAAKkE,EAAKO,EACdzE,EAAI,GAAK,EAAIiE,EAAKK,EAClBtE,EAAI,GAAKqE,EAAKE,EACdvE,EAAI,GAAK,EACTA,EAAI,GAAKoE,EAAKI,EACdxE,EAAI,GAAKqE,EAAKE,EACdvE,EAAI,IAAM,EAAIiE,EAAKE,EACnBnE,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EACHA,EAeF,SAASmM,GAAQnM,EAAKoM,EAAMC,EAAOC,EAAQC,EAAKC,EAAMC,GAC3D,IAAIC,EAAK,GAAKL,EAAQD,GAClBO,EAAK,GAAKJ,EAAMD,GAChBM,EAAK,GAAKJ,EAAOC,GAiBrB,OAhBAzM,EAAI,GAAY,EAAPwM,EAAWE,EACpB1M,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAY,EAAPwM,EAAWG,EACpB3M,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAMqM,EAAQD,GAAQM,EAC1B1M,EAAI,IAAMuM,EAAMD,GAAUK,EAC1B3M,EAAI,KAAOyM,EAAMD,GAAQI,EACzB5M,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAMyM,EAAMD,EAAO,EAAII,EAC3B5M,EAAI,IAAM,EACHA,EAcF,SAAS6M,GAAY7M,EAAK8M,EAAMC,EAAQP,EAAMC,GACnD,IACIG,EADAI,EAAI,EAAMpN,KAAKqN,IAAIH,EAAO,GA0B9B,OAxBA9M,EAAI,GAAKgN,EAAID,EACb/M,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKgN,EACThN,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EAEC,MAAPyM,GAAeA,IAAQS,KACzBN,EAAK,GAAKJ,EAAOC,GACjBzM,EAAI,KAAOyM,EAAMD,GAAQI,EACzB5M,EAAI,IAAM,EAAIyM,EAAMD,EAAOI,IAE3B5M,EAAI,KAAO,EACXA,EAAI,KAAO,EAAIwM,GAGVxM,EAcF,SAASmN,GAA2BnN,EAAKoN,EAAKZ,EAAMC,GACzD,IAAIY,EAAQzN,KAAKqN,IAAIG,EAAIE,UAAY1N,KAAKE,GAAK,KAC3CyN,EAAU3N,KAAKqN,IAAIG,EAAII,YAAc5N,KAAKE,GAAK,KAC/C2N,EAAU7N,KAAKqN,IAAIG,EAAIM,YAAc9N,KAAKE,GAAK,KAC/C6N,EAAW/N,KAAKqN,IAAIG,EAAIQ,aAAehO,KAAKE,GAAK,KACjD+N,EAAS,GAAOJ,EAAUE,GAC1BG,EAAS,GAAOT,EAAQE,GAiB5B,OAhBAvN,EAAI,GAAK6N,EACT7N,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK8N,EACT9N,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,KAAQyN,EAAUE,GAAYE,EAAS,GAC3C7N,EAAI,IAAMqN,EAAQE,GAAWO,EAAS,GACtC9N,EAAI,IAAMyM,GAAOD,EAAOC,GACxBzM,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAMyM,EAAMD,GAAQA,EAAOC,GAC/BzM,EAAI,IAAM,EACHA,EAeF,SAAS+N,GAAM/N,EAAKoM,EAAMC,EAAOC,EAAQC,EAAKC,EAAMC,GACzD,IAAIuB,EAAK,GAAK5B,EAAOC,GACjB4B,EAAK,GAAK3B,EAASC,GACnBK,EAAK,GAAKJ,EAAOC,GAiBrB,OAhBAzM,EAAI,IAAM,EAAIgO,EACdhO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EAAIiO,EACdjO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,IAAM,EAAI4M,EACd5M,EAAI,IAAM,EACVA,EAAI,KAAOoM,EAAOC,GAAS2B,EAC3BhO,EAAI,KAAOuM,EAAMD,GAAU2B,EAC3BjO,EAAI,KAAOyM,EAAMD,GAAQI,EACzB5M,EAAI,IAAM,EACHA,EAaF,SAASkO,GAAOlO,EAAKmO,EAAKC,EAAQC,GACvC,IAAIC,EAAIC,EAAIzK,EAAI0K,EAAIC,EAAI1K,EAAI2K,EAAIC,EAAI3K,EAAIwE,EACpCoG,EAAOT,EAAI,GACXU,EAAOV,EAAI,GACXW,EAAOX,EAAI,GACXY,EAAMV,EAAG,GACTW,EAAMX,EAAG,GACTY,EAAMZ,EAAG,GACTa,EAAUd,EAAO,GACjBe,EAAUf,EAAO,GACjBgB,EAAUhB,EAAO,GAErB,OAAIxO,KAAK2H,IAAIqH,EAAOM,GAAWjP,GAAoBL,KAAK2H,IAAIsH,EAAOM,GAAWlP,GAAoBL,KAAK2H,IAAIuH,EAAOM,GAAWnP,EACpHgB,EAASjB,IAGlB0O,EAAKE,EAAOM,EACZP,EAAKE,EAAOM,EACZnL,EAAK8K,EAAOM,EAKZd,EAAKU,GADLhL,GAHAwE,EAAM,EAAI5I,KAAKkG,MAAM4I,EAAIC,EAAI3K,IAIbiL,GAFhBN,GAAMnG,GAGN+F,EAAKU,GAJLP,GAAMlG,GAIUuG,EAAM/K,EACtBF,EAAKiL,EAAMJ,EAAKK,EAAMN,GACtBlG,EAAM5I,KAAKkG,MAAMwI,EAAIC,EAAIzK,KAQvBwK,GADA9F,EAAM,EAAIA,EAEV+F,GAAM/F,EACN1E,GAAM0E,IAPN8F,EAAK,EACLC,EAAK,EACLzK,EAAK,GAQP0K,EAAKG,EAAK7K,EAAKE,EAAKuK,EACpBE,EAAKzK,EAAKsK,EAAKI,EAAK5K,EACpBC,EAAK2K,EAAKH,EAAKI,EAAKL,GACpB9F,EAAM5I,KAAKkG,MAAM0I,EAAIC,EAAI1K,KAQvByK,GADAhG,EAAM,EAAIA,EAEViG,GAAMjG,EACNzE,GAAMyE,IAPNgG,EAAK,EACLC,EAAK,EACL1K,EAAK,GAQP/D,EAAI,GAAKsO,EACTtO,EAAI,GAAKwO,EACTxO,EAAI,GAAK0O,EACT1O,EAAI,GAAK,EACTA,EAAI,GAAKuO,EACTvO,EAAI,GAAKyO,EACTzO,EAAI,GAAK2O,EACT3O,EAAI,GAAK,EACTA,EAAI,GAAK8D,EACT9D,EAAI,GAAK+D,EACT/D,EAAI,IAAMgE,EACVhE,EAAI,IAAM,EACVA,EAAI,MAAQsO,EAAKM,EAAOL,EAAKM,EAAO/K,EAAKgL,GACzC9O,EAAI,MAAQwO,EAAKI,EAAOH,EAAKI,EAAO9K,EAAK+K,GACzC9O,EAAI,MAAQ0O,EAAKE,EAAOD,EAAKE,EAAO7K,EAAK8K,GACzC9O,EAAI,IAAM,EACHA,GAYF,SAASqP,GAASrP,EAAKmO,EAAKmB,EAAQjB,GACzC,IAAIO,EAAOT,EAAI,GACXU,EAAOV,EAAI,GACXW,EAAOX,EAAI,GACXY,EAAMV,EAAG,GACTW,EAAMX,EAAG,GACTY,EAAMZ,EAAG,GACTK,EAAKE,EAAOU,EAAO,GACnBX,EAAKE,EAAOS,EAAO,GACnBtL,EAAK8K,EAAOQ,EAAO,GACnB9G,EAAMkG,EAAKA,EAAKC,EAAKA,EAAK3K,EAAKA,EAE/BwE,EAAM,IAERkG,GADAlG,EAAM,EAAI5I,KAAKgI,KAAKY,GAEpBmG,GAAMnG,EACNxE,GAAMwE,GAGR,IAAI8F,EAAKU,EAAMhL,EAAKiL,EAAMN,EACtBJ,EAAKU,EAAMP,EAAKK,EAAM/K,EACtBF,EAAKiL,EAAMJ,EAAKK,EAAMN,EA0B1B,OAzBAlG,EAAM8F,EAAKA,EAAKC,EAAKA,EAAKzK,EAAKA,GAErB,IAERwK,GADA9F,EAAM,EAAI5I,KAAKgI,KAAKY,GAEpB+F,GAAM/F,EACN1E,GAAM0E,GAGRxI,EAAI,GAAKsO,EACTtO,EAAI,GAAKuO,EACTvO,EAAI,GAAK8D,EACT9D,EAAI,GAAK,EACTA,EAAI,GAAK2O,EAAK7K,EAAKE,EAAKuK,EACxBvO,EAAI,GAAKgE,EAAKsK,EAAKI,EAAK5K,EACxB9D,EAAI,GAAK0O,EAAKH,EAAKI,EAAKL,EACxBtO,EAAI,GAAK,EACTA,EAAI,GAAK0O,EACT1O,EAAI,GAAK2O,EACT3O,EAAI,IAAMgE,EACVhE,EAAI,IAAM,EACVA,EAAI,IAAM4O,EACV5O,EAAI,IAAM6O,EACV7O,EAAI,IAAM8O,EACV9O,EAAI,IAAM,EACHA,EASF,SAAS4F,GAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,IAAM,KAAOA,EAAE,IAAM,KAAOA,EAAE,IAAM,KAAOA,EAAE,IAAM,KAAOA,EAAE,IAAM,KAAOA,EAAE,IAAM,IAS3O,SAAS0F,GAAK1F,GACnB,OAAOP,KAAKkG,MAAM3F,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,IAAKA,EAAE,KAW9G,SAAS4F,GAAI/F,EAAKG,EAAGiC,GAiB1B,OAhBApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACbpC,EAWF,SAASgG,GAAShG,EAAKG,EAAGiC,GAiB/B,OAhBApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACpBpC,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IACbpC,EAWF,SAASiG,GAAejG,EAAKG,EAAGiC,GAiBrC,OAhBApC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,IAAMG,EAAE,IAAMiC,EAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EAClBpC,EAAI,IAAMG,EAAE,IAAMiC,EACXpC,EAYF,SAASkG,GAAqBlG,EAAKG,EAAGiC,EAAGiB,GAiB9C,OAhBArD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EAC1BrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EAC1BrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EAC1BrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EAC1BrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EAC1BrD,EAAI,IAAMG,EAAE,IAAMiC,EAAE,IAAMiB,EACnBrD,EAUF,SAASmG,GAAYhG,EAAGiC,GAC7B,OAAOjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,MAAQiC,EAAE,KAAOjC,EAAE,MAAQiC,EAAE,KAAOjC,EAAE,MAAQiC,EAAE,KAAOjC,EAAE,MAAQiC,EAAE,KAAOjC,EAAE,MAAQiC,EAAE,KAAOjC,EAAE,MAAQiC,EAAE,IAUvR,SAASgE,GAAOjG,EAAGiC,GACxB,IAAIiE,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACPoG,EAAKpG,EAAE,GACPqG,EAAKrG,EAAE,GACPsG,EAAKtG,EAAE,GACPuG,EAAKvG,EAAE,GACPwG,EAAKxG,EAAE,GACPyG,EAAKzG,EAAE,GACP0G,EAAK1G,EAAE,GACPoP,EAAKpP,EAAE,GACPqB,EAAMrB,EAAE,IACRsB,EAAMtB,EAAE,IACRkB,EAAMlB,EAAE,IACRyE,EAAMzE,EAAE,IACRqP,EAAMrP,EAAE,IACRsP,EAAMtP,EAAE,IACR2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACP6E,EAAK7E,EAAE,GACP8E,EAAK9E,EAAE,GACP+E,EAAK/E,EAAE,GACPgF,EAAKhF,EAAE,GACPiF,EAAKjF,EAAE,GACPkF,EAAKlF,EAAE,GACPsN,EAAKtN,EAAE,GACPG,EAAMH,EAAE,IACRN,EAAMM,EAAE,IACRI,EAAMJ,EAAE,IACRuN,EAAMvN,EAAE,IACRwN,EAAMxN,EAAE,IACRyN,EAAMzN,EAAE,IACZ,OAAOxC,KAAK2H,IAAIlB,EAAKS,IAAO7G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlB,GAAKzG,KAAK2H,IAAIT,KAAQlH,KAAK2H,IAAIjB,EAAKS,IAAO9G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIjB,GAAK1G,KAAK2H,IAAIR,KAAQnH,KAAK2H,IAAIhB,EAAKS,IAAO/G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIhB,GAAK3G,KAAK2H,IAAIP,KAAQpH,KAAK2H,IAAIf,EAAKS,IAAOhH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIf,GAAK5G,KAAK2H,IAAIN,KAAQrH,KAAK2H,IAAId,EAAKS,IAAOjH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAId,GAAK7G,KAAK2H,IAAIL,KAAQtH,KAAK2H,IAAIb,EAAKS,IAAOlH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIb,GAAK9G,KAAK2H,IAAIJ,KAAQvH,KAAK2H,IAAIZ,EAAKS,IAAOnH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIZ,GAAK/G,KAAK2H,IAAIH,KAAQxH,KAAK2H,IAAIX,EAAKS,IAAOpH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIX,GAAKhH,KAAK2H,IAAIF,KAAQzH,KAAK2H,IAAIV,EAAKS,IAAOrH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIV,GAAKjH,KAAK2H,IAAID,KAAQ1H,KAAK2H,IAAIgI,EAAKG,IAAOzP,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIgI,GAAK3P,KAAK2H,IAAImI,KAAQ9P,KAAK2H,IAAI/F,EAAMe,IAAQtC,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAI/F,GAAM5B,KAAK2H,IAAIhF,KAAS3C,KAAK2H,IAAI9F,EAAMK,IAAQ7B,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAI9F,GAAM7B,KAAK2H,IAAIzF,KAASlC,KAAK2H,IAAIlG,EAAMmB,IAAQvC,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlG,GAAMzB,KAAK2H,IAAI/E,KAAS5C,KAAK2H,IAAI3C,EAAM+K,IAAQ1P,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAI3C,GAAMhF,KAAK2H,IAAIoI,KAAS/P,KAAK2H,IAAIiI,EAAMI,IAAQ3P,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIiI,GAAM5P,KAAK2H,IAAIqI,KAAShQ,KAAK2H,IAAIkI,EAAMI,IAAQ5P,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIkI,GAAM7P,KAAK2H,IAAIsI,IAOj2C,IAAIhI,GAAM1F,GAMN2F,GAAM9B,GCzwDV,SAASjG,KACd,IAAIC,EAAM,IAAIC,EAAoB,GAQlC,OANIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGJA,EASF,SAASI,GAAMD,GACpB,IAAIH,EAAM,IAAIC,EAAoB,GAIlC,OAHAD,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EASF,SAAS2H,GAAOxH,GACrB,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACV,OAAOP,KAAKkG,MAAMjD,EAAGC,EAAGc,GAWnB,SAAStD,GAAWuC,EAAGC,EAAGc,GAC/B,IAAI5D,EAAM,IAAIC,EAAoB,GAIlC,OAHAD,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACT9C,EAAI,GAAK4D,EACF5D,EAUF,SAASK,GAAKL,EAAKG,GAIxB,OAHAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAYF,SAASgB,GAAIhB,EAAK6C,EAAGC,EAAGc,GAI7B,OAHA5D,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACT9C,EAAI,GAAK4D,EACF5D,EAWF,SAAS+F,GAAI/F,EAAKG,EAAGiC,GAI1B,OAHApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASgG,GAAShG,EAAKG,EAAGiC,GAI/B,OAHApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASmC,GAASnC,EAAKG,EAAGiC,GAI/B,OAHApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAAS8P,GAAO9P,EAAKG,EAAGiC,GAI7B,OAHApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAUF,SAAS+P,GAAK/P,EAAKG,GAIxB,OAHAH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACdH,EAUF,SAASgQ,GAAMhQ,EAAKG,GAIzB,OAHAH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACfH,EAWF,SAASiQ,GAAIjQ,EAAKG,EAAGiC,GAI1B,OAHApC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IACnBpC,EAWF,SAASwH,GAAIxH,EAAKG,EAAGiC,GAI1B,OAHApC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IACnBpC,EAUF,SAASkQ,GAAMlQ,EAAKG,GAIzB,OAHAH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACfH,EAWF,SAASqD,GAAMrD,EAAKG,EAAGiC,GAI5B,OAHApC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EACTpC,EAYF,SAASmQ,GAAYnQ,EAAKG,EAAGiC,EAAGiB,GAIrC,OAHArD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EAChBrD,EAUF,SAASoQ,GAASjQ,EAAGiC,GAC1B,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACbyD,EAAIxB,EAAE,GAAKjC,EAAE,GACjB,OAAOP,KAAKkG,MAAMjD,EAAGC,EAAGc,GAUnB,SAASyM,GAAgBlQ,EAAGiC,GACjC,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACbyD,EAAIxB,EAAE,GAAKjC,EAAE,GACjB,OAAO0C,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAStB,SAAS0M,GAAcnQ,GAC5B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACV,OAAO0C,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAUtB,SAAS2M,GAAOvQ,EAAKG,GAI1B,OAHAH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACLH,EAUF,SAASwQ,GAAQxQ,EAAKG,GAI3B,OAHAH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACVH,EAUF,SAASyQ,GAAUzQ,EAAKG,GAC7B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACNqI,EAAM3F,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAU9B,OARI4E,EAAM,IAERA,EAAM,EAAI5I,KAAKgI,KAAKY,IAGtBxI,EAAI,GAAKG,EAAE,GAAKqI,EAChBxI,EAAI,GAAKG,EAAE,GAAKqI,EAChBxI,EAAI,GAAKG,EAAE,GAAKqI,EACTxI,EAUF,SAAS0Q,GAAIvQ,EAAGiC,GACrB,OAAOjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAWvC,SAASuO,GAAM3Q,EAAKG,EAAGiC,GAC5B,IAAIqH,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPkJ,EAAKjH,EAAE,GACPkH,EAAKlH,EAAE,GACPmH,EAAKnH,EAAE,GAIX,OAHApC,EAAI,GAAK0J,EAAKH,EAAKI,EAAKL,EACxBtJ,EAAI,GAAK2J,EAAKN,EAAKI,EAAKF,EACxBvJ,EAAI,GAAKyJ,EAAKH,EAAKI,EAAKL,EACjBrJ,EAYF,SAAS4Q,GAAK5Q,EAAKG,EAAGiC,EAAGmG,GAC9B,IAAIkB,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GAIX,OAHAH,EAAI,GAAKyJ,EAAKlB,GAAKnG,EAAE,GAAKqH,GAC1BzJ,EAAI,GAAK0J,EAAKnB,GAAKnG,EAAE,GAAKsH,GAC1B1J,EAAI,GAAK2J,EAAKpB,GAAKnG,EAAE,GAAKuH,GACnB3J,EAcF,SAAS6Q,GAAQ7Q,EAAKG,EAAGiC,EAAGe,EAAG2N,EAAGvI,GACvC,IAAIwI,EAAexI,EAAIA,EACnByI,EAAUD,GAAgB,EAAIxI,EAAI,GAAK,EACvC0I,EAAUF,GAAgBxI,EAAI,GAAKA,EACnC2I,EAAUH,GAAgBxI,EAAI,GAC9B4I,EAAUJ,GAAgB,EAAI,EAAIxI,GAItC,OAHAvI,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EACnEnR,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EACnEnR,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EAC5DnR,EAcF,SAASoR,GAAOpR,EAAKG,EAAGiC,EAAGe,EAAG2N,EAAGvI,GACtC,IAAI8I,EAAgB,EAAI9I,EACpB+I,EAAwBD,EAAgBA,EACxCN,EAAexI,EAAIA,EACnByI,EAAUM,EAAwBD,EAClCJ,EAAU,EAAI1I,EAAI+I,EAClBJ,EAAU,EAAIH,EAAeM,EAC7BF,EAAUJ,EAAexI,EAI7B,OAHAvI,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EACnEnR,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EACnEnR,EAAI,GAAKG,EAAE,GAAK6Q,EAAU5O,EAAE,GAAK6O,EAAU9N,EAAE,GAAK+N,EAAUJ,EAAE,GAAKK,EAC5DnR,EAUF,SAASH,GAAOG,EAAKqD,GAC1BA,EAAQA,GAAS,EACjB,IAAIkO,EAAwB,EAApBtR,IAA0BL,KAAKE,GACnC8D,EAAwB,EAApB3D,IAA0B,EAC9BuR,EAAS5R,KAAKgI,KAAK,EAAMhE,EAAIA,GAAKP,EAItC,OAHArD,EAAI,GAAKJ,KAAKwD,IAAImO,GAAKC,EACvBxR,EAAI,GAAKJ,KAAKsD,IAAIqO,GAAKC,EACvBxR,EAAI,GAAK4D,EAAIP,EACNrD,EAYF,SAASyR,GAAczR,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI6N,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IAAM9N,EAAI8N,EAAE,IAK5C,OAJA7N,EAAIA,GAAK,EACT7D,EAAI,IAAM0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,KAAO7N,EACpD7D,EAAI,IAAM0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,KAAO7N,EACpD7D,EAAI,IAAM0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IAAM9N,EAAI8N,EAAE,KAAO7N,EAC9C7D,EAWF,SAAS2R,GAAc3R,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GAIV,OAHAH,EAAI,GAAK6C,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,GACrC1R,EAAI,GAAK6C,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,GACrC1R,EAAI,GAAK6C,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,GAC9B1R,EAYF,SAAS4R,GAAc5R,EAAKG,EAAGwD,GAEpC,IAAIkO,EAAKlO,EAAE,GACPmO,EAAKnO,EAAE,GACPoO,EAAKpO,EAAE,GACPqO,EAAKrO,EAAE,GACPd,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GAGN8R,EAAMH,EAAKlO,EAAImO,EAAKjP,EACpBoP,EAAMH,EAAKlP,EAAIgP,EAAKjO,EACpBuO,EAAMN,EAAK/O,EAAIgP,EAAKjP,EAEpBuP,EAAON,EAAKK,EAAMJ,EAAKG,EACvBG,EAAON,EAAKE,EAAMJ,EAAKM,EACvBG,EAAOT,EAAKK,EAAMJ,EAAKG,EAEvBM,EAAU,EAALP,EAYT,OAXAC,GAAOM,EACPL,GAAOK,EACPJ,GAAOI,EAEPH,GAAQ,EACRC,GAAQ,EACRC,GAAQ,EAERtS,EAAI,GAAK6C,EAAIoP,EAAMG,EACnBpS,EAAI,GAAK8C,EAAIoP,EAAMG,EACnBrS,EAAI,GAAK4D,EAAIuO,EAAMG,EACZtS,EAWF,SAASyI,GAAQzI,EAAKG,EAAGiC,EAAGY,GACjC,IAAIwP,EAAI,GACJjB,EAAI,GAaR,OAXAiB,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAEhBmP,EAAE,GAAKiB,EAAE,GACTjB,EAAE,GAAKiB,EAAE,GAAK5S,KAAKwD,IAAIJ,GAAOwP,EAAE,GAAK5S,KAAKsD,IAAIF,GAC9CuO,EAAE,GAAKiB,EAAE,GAAK5S,KAAKsD,IAAIF,GAAOwP,EAAE,GAAK5S,KAAKwD,IAAIJ,GAE9ChD,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GACXpC,EAWF,SAAS0I,GAAQ1I,EAAKG,EAAGiC,EAAGY,GACjC,IAAIwP,EAAI,GACJjB,EAAI,GAaR,OAXAiB,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAEhBmP,EAAE,GAAKiB,EAAE,GAAK5S,KAAKsD,IAAIF,GAAOwP,EAAE,GAAK5S,KAAKwD,IAAIJ,GAC9CuO,EAAE,GAAKiB,EAAE,GACTjB,EAAE,GAAKiB,EAAE,GAAK5S,KAAKwD,IAAIJ,GAAOwP,EAAE,GAAK5S,KAAKsD,IAAIF,GAE9ChD,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GACXpC,EAWF,SAAS2I,GAAQ3I,EAAKG,EAAGiC,EAAGY,GACjC,IAAIwP,EAAI,GACJjB,EAAI,GAaR,OAXAiB,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAChBoQ,EAAE,GAAKrS,EAAE,GAAKiC,EAAE,GAEhBmP,EAAE,GAAKiB,EAAE,GAAK5S,KAAKwD,IAAIJ,GAAOwP,EAAE,GAAK5S,KAAKsD,IAAIF,GAC9CuO,EAAE,GAAKiB,EAAE,GAAK5S,KAAKsD,IAAIF,GAAOwP,EAAE,GAAK5S,KAAKwD,IAAIJ,GAC9CuO,EAAE,GAAKiB,EAAE,GAETxS,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GAClBpC,EAAI,GAAKuR,EAAE,GAAKnP,EAAE,GACXpC,EASF,SAASyS,GAAMtS,EAAGiC,GACvB,IAAIqH,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPkJ,EAAKjH,EAAE,GACPkH,EAAKlH,EAAE,GACPmH,EAAKnH,EAAE,GAGPsQ,EAFO9S,KAAKgI,KAAK6B,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GACnC/J,KAAKgI,KAAKyB,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GAE1CoJ,EAASD,GAAOhC,GAAIvQ,EAAGiC,GAAKsQ,EAChC,OAAO9S,KAAKgT,KAAKhT,KAAKqQ,IAAIrQ,KAAK4H,IAAImL,GAAS,GAAI,IAS3C,SAASE,GAAK7S,GAInB,OAHAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EASF,SAAS4F,GAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,IAU/C,SAASgG,GAAYhG,EAAGiC,GAC7B,OAAOjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,GAU/C,SAASgE,GAAOjG,EAAGiC,GACxB,IAAIiE,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACPoG,EAAKpG,EAAE,GACP2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACX,OAAOxC,KAAK2H,IAAIlB,EAAKS,IAAO7G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlB,GAAKzG,KAAK2H,IAAIT,KAAQlH,KAAK2H,IAAIjB,EAAKS,IAAO9G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIjB,GAAK1G,KAAK2H,IAAIR,KAAQnH,KAAK2H,IAAIhB,EAAKS,IAAO/G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIhB,GAAK3G,KAAK2H,IAAIP,IAOzP,IAAIc,GAAM9B,GAMN6B,GAAM1F,GAMN2Q,GAAMhD,GAMNiD,GAAO3C,GAMP4C,GAAU3C,GAMV7H,GAAMb,GAMNsL,GAAS3C,GAcT4C,GAAU,WACnB,IAAIC,EAAMpT,KACV,OAAO,SAAUI,EAAGiT,EAAQC,EAAQC,EAAOC,EAAIC,GAC7C,IAAI/L,EAAGgM,EAgBP,IAdKL,IACHA,EAAS,GAGNC,IACHA,EAAS,GAITI,EADEH,EACE1T,KAAKqQ,IAAIqD,EAAQF,EAASC,EAAQlT,EAAEwH,QAEpCxH,EAAEwH,OAGHF,EAAI4L,EAAQ5L,EAAIgM,EAAGhM,GAAK2L,EAC3BD,EAAI,GAAKhT,EAAEsH,GACX0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf8L,EAAGJ,EAAKA,EAAKK,GACbrT,EAAEsH,GAAK0L,EAAI,GACXhT,EAAEsH,EAAI,GAAK0L,EAAI,GACfhT,EAAEsH,EAAI,GAAK0L,EAAI,GAGjB,OAAOhT,GA7BU,GCvuBd,SAASJ,KACd,IAAIC,EAAM,IAAIC,EAAoB,GASlC,OAPIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGJA,EASF,SAASI,GAAMD,GACpB,IAAIH,EAAM,IAAIC,EAAoB,GAKlC,OAJAD,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAYF,SAASM,GAAWuC,EAAGC,EAAGc,EAAGC,GAClC,IAAI7D,EAAM,IAAIC,EAAoB,GAKlC,OAJAD,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACT9C,EAAI,GAAK4D,EACT5D,EAAI,GAAK6D,EACF7D,EAUF,SAASK,GAAKL,EAAKG,GAKxB,OAJAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAaF,SAASgB,GAAIhB,EAAK6C,EAAGC,EAAGc,EAAGC,GAKhC,OAJA7D,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACT9C,EAAI,GAAK4D,EACT5D,EAAI,GAAK6D,EACF7D,EAWF,SAAS+F,GAAI/F,EAAKG,EAAGiC,GAK1B,OAJApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASgG,GAAShG,EAAKG,EAAGiC,GAK/B,OAJApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASmC,GAASnC,EAAKG,EAAGiC,GAK/B,OAJApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAAS8P,GAAO9P,EAAKG,EAAGiC,GAK7B,OAJApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAUF,SAAS+P,GAAK/P,EAAKG,GAKxB,OAJAH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACdH,EAUF,SAASgQ,GAAMhQ,EAAKG,GAKzB,OAJAH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACfH,EAWF,SAASiQ,GAAIjQ,EAAKG,EAAGiC,GAK1B,OAJApC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IACnBpC,EAWF,SAASwH,GAAIxH,EAAKG,EAAGiC,GAK1B,OAJApC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IACnBpC,EAUF,SAASkQ,GAAMlQ,EAAKG,GAKzB,OAJAH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACfH,EAWF,SAASqD,GAAMrD,EAAKG,EAAGiC,GAK5B,OAJApC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EACTpC,EAYF,SAASmQ,GAAYnQ,EAAKG,EAAGiC,EAAGiB,GAKrC,OAJArD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EAChBrD,EAUF,SAASoQ,GAASjQ,EAAGiC,GAC1B,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACbyD,EAAIxB,EAAE,GAAKjC,EAAE,GACb0D,EAAIzB,EAAE,GAAKjC,EAAE,GACjB,OAAOP,KAAKkG,MAAMjD,EAAGC,EAAGc,EAAGC,GAUtB,SAASwM,GAAgBlQ,EAAGiC,GACjC,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACbyD,EAAIxB,EAAE,GAAKjC,EAAE,GACb0D,EAAIzB,EAAE,GAAKjC,EAAE,GACjB,OAAO0C,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAAIC,EAAIA,EAS9B,SAAS8D,GAAOxH,GACrB,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GACV,OAAOP,KAAKkG,MAAMjD,EAAGC,EAAGc,EAAGC,GAStB,SAASyM,GAAcnQ,GAC5B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GACV,OAAO0C,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAAIC,EAAIA,EAU9B,SAAS0M,GAAOvQ,EAAKG,GAK1B,OAJAH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACLH,EAUF,SAASwQ,GAAQxQ,EAAKG,GAK3B,OAJAH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACVH,EAUF,SAASyQ,GAAUzQ,EAAKG,GAC7B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GACNqI,EAAM3F,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAAIC,EAAIA,EAUtC,OARI2E,EAAM,IACRA,EAAM,EAAI5I,KAAKgI,KAAKY,IAGtBxI,EAAI,GAAK6C,EAAI2F,EACbxI,EAAI,GAAK8C,EAAI0F,EACbxI,EAAI,GAAK4D,EAAI4E,EACbxI,EAAI,GAAK6D,EAAI2E,EACNxI,EAUF,SAAS0Q,GAAIvQ,EAAGiC,GACrB,OAAOjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAYrD,SAASuO,GAAM3Q,EAAK0T,EAAG9Q,EAAGiB,GAC/B,IAAI8P,EAAI/Q,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3B+P,EAAIhR,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3BgQ,EAAIjR,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3BiQ,EAAIlR,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3BkQ,EAAInR,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3BmQ,EAAIpR,EAAE,GAAKiB,EAAE,GAAKjB,EAAE,GAAKiB,EAAE,GAC3BoQ,EAAIP,EAAE,GACNQ,EAAIR,EAAE,GACNS,EAAIT,EAAE,GACNU,EAAIV,EAAE,GAKV,OAJA1T,EAAI,GAAKkU,EAAIF,EAAIG,EAAIJ,EAAIK,EAAIN,EAC7B9T,EAAI,IAAOiU,EAAID,EAAKG,EAAIN,EAAIO,EAAIR,EAChC5T,EAAI,GAAKiU,EAAIF,EAAIG,EAAIL,EAAIO,EAAIT,EAC7B3T,EAAI,IAAOiU,EAAIH,EAAKI,EAAIN,EAAIO,EAAIR,EACzB3T,EAYF,SAAS4Q,GAAK5Q,EAAKG,EAAGiC,EAAGmG,GAC9B,IAAIkB,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GAKX,OAJAH,EAAI,GAAKyJ,EAAKlB,GAAKnG,EAAE,GAAKqH,GAC1BzJ,EAAI,GAAK0J,EAAKnB,GAAKnG,EAAE,GAAKsH,GAC1B1J,EAAI,GAAK2J,EAAKpB,GAAKnG,EAAE,GAAKuH,GAC1B3J,EAAI,GAAK4J,EAAKrB,GAAKnG,EAAE,GAAKwH,GACnB5J,EAUF,SAASH,GAAOG,EAAKqD,GAK1B,IAAIgR,EAAIC,EAAIC,EAAIC,EACZC,EAAIC,EALRrR,EAAQA,GAAS,EAOjB,GAGEoR,GAFAJ,EAAyB,EAApBpU,IAAwB,GAEnBoU,GADVC,EAAyB,EAApBrU,IAAwB,GACTqU,QACbG,GAAM,GAEf,GAGEC,GAFAH,EAAyB,EAApBtU,IAAwB,GAEnBsU,GADVC,EAAyB,EAApBvU,IAAwB,GACTuU,QACbE,GAAM,GAEf,IAAI5D,EAAIlR,KAAKgI,MAAM,EAAI6M,GAAMC,GAK7B,OAJA1U,EAAI,GAAKqD,EAAQgR,EACjBrU,EAAI,GAAKqD,EAAQiR,EACjBtU,EAAI,GAAKqD,EAAQkR,EAAKzD,EACtB9Q,EAAI,GAAKqD,EAAQmR,EAAK1D,EACf9Q,EAWF,SAASyR,GAAczR,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GAKV,OAJAH,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,IAAM7N,EAClD7D,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAAK9N,EAAI8N,EAAE,IAAM7N,EAClD7D,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IAAM9N,EAAI8N,EAAE,IAAM7N,EACnD7D,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IAAM9N,EAAI8N,EAAE,IAAM7N,EAC5C7D,EAWF,SAAS4R,GAAc5R,EAAKG,EAAGwD,GACpC,IAAId,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0R,EAAKlO,EAAE,GACPmO,EAAKnO,EAAE,GACPoO,EAAKpO,EAAE,GACPqO,EAAKrO,EAAE,GAEPgR,EAAK3C,EAAKnP,EAAIiP,EAAKlO,EAAImO,EAAKjP,EAC5B8R,EAAK5C,EAAKlP,EAAIiP,EAAKlP,EAAIgP,EAAKjO,EAC5BiR,EAAK7C,EAAKpO,EAAIiO,EAAK/O,EAAIgP,EAAKjP,EAC5BiS,GAAMjD,EAAKhP,EAAIiP,EAAKhP,EAAIiP,EAAKnO,EAMjC,OAJA5D,EAAI,GAAK2U,EAAK3C,EAAK8C,GAAMjD,EAAK+C,GAAM7C,EAAK8C,GAAM/C,EAC/C9R,EAAI,GAAK4U,EAAK5C,EAAK8C,GAAMhD,EAAK+C,GAAMhD,EAAK8C,GAAM5C,EAC/C/R,EAAI,GAAK6U,EAAK7C,EAAK8C,GAAM/C,EAAK4C,GAAM7C,EAAK8C,GAAM/C,EAC/C7R,EAAI,GAAKG,EAAE,GACJH,EASF,SAAS6S,GAAK7S,GAKnB,OAJAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EASF,SAAS4F,GAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,IAU7D,SAASgG,GAAYhG,EAAGiC,GAC7B,OAAOjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,GAUhE,SAASgE,GAAOjG,EAAGiC,GACxB,IAAIiE,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACPoG,EAAKpG,EAAE,GACPqG,EAAKrG,EAAE,GACP2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACP4E,EAAK5E,EAAE,GACP6E,EAAK7E,EAAE,GACX,OAAOxC,KAAK2H,IAAIlB,EAAKS,IAAO7G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlB,GAAKzG,KAAK2H,IAAIT,KAAQlH,KAAK2H,IAAIjB,EAAKS,IAAO9G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIjB,GAAK1G,KAAK2H,IAAIR,KAAQnH,KAAK2H,IAAIhB,EAAKS,IAAO/G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIhB,GAAK3G,KAAK2H,IAAIP,KAAQpH,KAAK2H,IAAIf,EAAKS,IAAOhH,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIf,GAAK5G,KAAK2H,IAAIN,IAO9U,IAAIa,GAAM9B,GAMN6B,GAAM1F,GAMN2Q,GAAMhD,GAMNiD,GAAO3C,GAMP4C,GAAU3C,GAMV7H,GAAMb,GAMNsL,GAAS3C,GAcT4C,GAAU,WACnB,IAAIC,EAAMpT,KACV,OAAO,SAAUI,EAAGiT,EAAQC,EAAQC,EAAOC,EAAIC,GAC7C,IAAI/L,EAAGgM,EAgBP,IAdKL,IACHA,EAAS,GAGNC,IACHA,EAAS,GAITI,EADEH,EACE1T,KAAKqQ,IAAIqD,EAAQF,EAASC,EAAQlT,EAAEwH,QAEpCxH,EAAEwH,OAGHF,EAAI4L,EAAQ5L,EAAIgM,EAAGhM,GAAK2L,EAC3BD,EAAI,GAAKhT,EAAEsH,GACX0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf8L,EAAGJ,EAAKA,EAAKK,GACbrT,EAAEsH,GAAK0L,EAAI,GACXhT,EAAEsH,EAAI,GAAK0L,EAAI,GACfhT,EAAEsH,EAAI,GAAK0L,EAAI,GACfhT,EAAEsH,EAAI,GAAK0L,EAAI,GAGjB,OAAOhT,GA/BU,GCtmBd,SAASJ,KACd,IAAIC,EAAM,IAAIC,EAAoB,GASlC,OAPIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,GAGXA,EAAI,GAAK,EACFA,EASF,SAASiB,GAASjB,GAKvB,OAJAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EAYF,SAAS+U,GAAa/U,EAAKsI,EAAMtF,GACtCA,GAAY,GACZ,IAAIC,EAAIrD,KAAKsD,IAAIF,GAKjB,OAJAhD,EAAI,GAAKiD,EAAIqF,EAAK,GAClBtI,EAAI,GAAKiD,EAAIqF,EAAK,GAClBtI,EAAI,GAAKiD,EAAIqF,EAAK,GAClBtI,EAAI,GAAKJ,KAAKwD,IAAIJ,GACXhD,EAgBF,SAASgV,GAAaC,EAAUtR,GACrC,IAAIX,EAAwB,EAAlBpD,KAAKgT,KAAKjP,EAAE,IAClBV,EAAIrD,KAAKsD,IAAIF,EAAM,GAavB,OAXIC,EAAIhD,GACNgV,EAAS,GAAKtR,EAAE,GAAKV,EACrBgS,EAAS,GAAKtR,EAAE,GAAKV,EACrBgS,EAAS,GAAKtR,EAAE,GAAKV,IAGrBgS,EAAS,GAAK,EACdA,EAAS,GAAK,EACdA,EAAS,GAAK,GAGTjS,EAUF,SAASkS,GAAS/U,EAAGiC,GAC1B,IAAI+S,EAAazE,GAAIvQ,EAAGiC,GACxB,OAAOxC,KAAKgT,KAAK,EAAIuC,EAAaA,EAAa,GAW1C,SAAShT,GAASnC,EAAKG,EAAGiC,GAC/B,IAAIqH,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACPkJ,EAAKjH,EAAE,GACPkH,EAAKlH,EAAE,GACPmH,EAAKnH,EAAE,GACPoH,EAAKpH,EAAE,GAKX,OAJApC,EAAI,GAAKyJ,EAAKD,EAAKI,EAAKP,EAAKK,EAAKH,EAAKI,EAAKL,EAC5CtJ,EAAI,GAAK0J,EAAKF,EAAKI,EAAKN,EAAKK,EAAKN,EAAKI,EAAKF,EAC5CvJ,EAAI,GAAK2J,EAAKH,EAAKI,EAAKL,EAAKE,EAAKH,EAAKI,EAAKL,EAC5CrJ,EAAI,GAAK4J,EAAKJ,EAAKC,EAAKJ,EAAKK,EAAKJ,EAAKK,EAAKJ,EACrCvJ,EAWF,SAASyI,GAAQzI,EAAKG,EAAG6C,GAC9BA,GAAO,GACP,IAAIyG,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACPkJ,EAAKzJ,KAAKsD,IAAIF,GACdwG,EAAK5J,KAAKwD,IAAIJ,GAKlB,OAJAhD,EAAI,GAAKyJ,EAAKD,EAAKI,EAAKP,EACxBrJ,EAAI,GAAK0J,EAAKF,EAAKG,EAAKN,EACxBrJ,EAAI,GAAK2J,EAAKH,EAAKE,EAAKL,EACxBrJ,EAAI,GAAK4J,EAAKJ,EAAKC,EAAKJ,EACjBrJ,EAWF,SAAS0I,GAAQ1I,EAAKG,EAAG6C,GAC9BA,GAAO,GACP,IAAIyG,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACPmJ,EAAK1J,KAAKsD,IAAIF,GACdwG,EAAK5J,KAAKwD,IAAIJ,GAKlB,OAJAhD,EAAI,GAAKyJ,EAAKD,EAAKG,EAAKL,EACxBtJ,EAAI,GAAK0J,EAAKF,EAAKI,EAAKN,EACxBtJ,EAAI,GAAK2J,EAAKH,EAAKC,EAAKH,EACxBtJ,EAAI,GAAK4J,EAAKJ,EAAKE,EAAKJ,EACjBtJ,EAWF,SAAS2I,GAAQ3I,EAAKG,EAAG6C,GAC9BA,GAAO,GACP,IAAIyG,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACPoJ,EAAK3J,KAAKsD,IAAIF,GACdwG,EAAK5J,KAAKwD,IAAIJ,GAKlB,OAJAhD,EAAI,GAAKyJ,EAAKD,EAAKE,EAAKH,EACxBvJ,EAAI,GAAK0J,EAAKF,EAAKC,EAAKF,EACxBvJ,EAAI,GAAK2J,EAAKH,EAAKI,EAAKL,EACxBvJ,EAAI,GAAK4J,EAAKJ,EAAKG,EAAKJ,EACjBvJ,EAYF,SAASoV,GAAWpV,EAAKG,GAC9B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GAKV,OAJAH,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACT9C,EAAI,GAAK4D,EACT5D,EAAI,GAAKJ,KAAKgI,KAAKhI,KAAK2H,IAAI,EAAM1E,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,IAC/C5D,EAUF,SAASqV,GAAIrV,EAAKG,GACvB,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GACNoR,EAAI3R,KAAKgI,KAAK/E,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,GAClC0R,EAAK1V,KAAKyV,IAAIxR,GACdZ,EAAIsO,EAAI,EAAI+D,EAAK1V,KAAKsD,IAAIqO,GAAKA,EAAI,EAKvC,OAJAvR,EAAI,GAAK6C,EAAII,EACbjD,EAAI,GAAK8C,EAAIG,EACbjD,EAAI,GAAK4D,EAAIX,EACbjD,EAAI,GAAKsV,EAAK1V,KAAKwD,IAAImO,GAChBvR,EAUF,SAASuV,GAAGvV,EAAKG,GACtB,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNyD,EAAIzD,EAAE,GACN0D,EAAI1D,EAAE,GACNoR,EAAI3R,KAAKgI,KAAK/E,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,GAClC2E,EAAIgJ,EAAI,EAAI3R,KAAK4V,MAAMjE,EAAG1N,GAAK0N,EAAI,EAKvC,OAJAvR,EAAI,GAAK6C,EAAI0F,EACbvI,EAAI,GAAK8C,EAAIyF,EACbvI,EAAI,GAAK4D,EAAI2E,EACbvI,EAAI,GAAK,GAAMJ,KAAK6V,IAAI5S,EAAIA,EAAIC,EAAIA,EAAIc,EAAIA,EAAIC,EAAIA,GAC7C7D,EAWF,SAAS0V,GAAI1V,EAAKG,EAAGiC,GAI1B,OAHAmT,GAAGvV,EAAKG,GACRkD,GAAMrD,EAAKA,EAAKoC,GAChBiT,GAAIrV,EAAKA,GACFA,EAYF,SAAS2V,GAAM3V,EAAKG,EAAGiC,EAAGmG,GAG/B,IAQIqN,EAAOC,EAAOC,EAAOC,EAAQC,EAR7BvM,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GACPwJ,EAAKxJ,EAAE,GACPyJ,EAAKzJ,EAAE,GACPkJ,EAAKjH,EAAE,GACPkH,EAAKlH,EAAE,GACPmH,EAAKnH,EAAE,GACPoH,EAAKpH,EAAE,GAgCX,OA7BAyT,EAAQpM,EAAKJ,EAAKK,EAAKJ,EAAKK,EAAKJ,EAAKK,EAAKJ,GAE/B,IACVqM,GAASA,EACTxM,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAIJ,EAAMqM,EAAQ5V,GAEhB2V,EAAQhW,KAAKgT,KAAKiD,GAClBC,EAAQlW,KAAKsD,IAAI0S,GACjBG,EAASnW,KAAKsD,KAAK,EAAMqF,GAAKqN,GAASE,EACvCE,EAASpW,KAAKsD,IAAIqF,EAAIqN,GAASE,IAI/BC,EAAS,EAAMxN,EACfyN,EAASzN,GAIXvI,EAAI,GAAK+V,EAAStM,EAAKuM,EAAS3M,EAChCrJ,EAAI,GAAK+V,EAASrM,EAAKsM,EAAS1M,EAChCtJ,EAAI,GAAK+V,EAASpM,EAAKqM,EAASzM,EAChCvJ,EAAI,GAAK+V,EAASnM,EAAKoM,EAASxM,EACzBxJ,EASF,SAASH,GAAOG,GAGrB,IAAIiW,EAAKhW,IACLiW,EAAKjW,IACLkW,EAAKlW,IACLmW,EAAexW,KAAKgI,KAAK,EAAIqO,GAC7BI,EAASzW,KAAKgI,KAAKqO,GAKvB,OAJAjW,EAAI,GAAKoW,EAAexW,KAAKsD,IAAI,EAAMtD,KAAKE,GAAKoW,GACjDlW,EAAI,GAAKoW,EAAexW,KAAKwD,IAAI,EAAMxD,KAAKE,GAAKoW,GACjDlW,EAAI,GAAKqW,EAASzW,KAAKsD,IAAI,EAAMtD,KAAKE,GAAKqW,GAC3CnW,EAAI,GAAKqW,EAASzW,KAAKwD,IAAI,EAAMxD,KAAKE,GAAKqW,GACpCnW,EAUF,SAASsB,GAAOtB,EAAKG,GAC1B,IAAIkG,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACPoG,EAAKpG,EAAE,GACPqG,EAAKrG,EAAE,GACPuQ,EAAMrK,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EACzC8P,EAAS5F,EAAM,EAAMA,EAAM,EAM/B,OAJA1Q,EAAI,IAAMqG,EAAKiQ,EACftW,EAAI,IAAMsG,EAAKgQ,EACftW,EAAI,IAAMuG,EAAK+P,EACftW,EAAI,GAAKwG,EAAK8P,EACPtW,EAWF,SAASuW,GAAUvW,EAAKG,GAK7B,OAJAH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACZH,EAAI,GAAKG,EAAE,GACJH,EAcF,SAASwW,GAASxW,EAAK0R,GAG5B,IACI+E,EADAC,EAAShF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAG7B,GAAIgF,EAAS,EAEXD,EAAQ7W,KAAKgI,KAAK8O,EAAS,GAE3B1W,EAAI,GAAK,GAAMyW,EACfA,EAAQ,GAAMA,EAEdzW,EAAI,IAAM0R,EAAE,GAAKA,EAAE,IAAM+E,EACzBzW,EAAI,IAAM0R,EAAE,GAAKA,EAAE,IAAM+E,EACzBzW,EAAI,IAAM0R,EAAE,GAAKA,EAAE,IAAM+E,MACpB,CAEL,IAAIhP,EAAI,EACJiK,EAAE,GAAKA,EAAE,KAAIjK,EAAI,GACjBiK,EAAE,GAAKA,EAAM,EAAJjK,EAAQA,KAAIA,EAAI,GAC7B,IAAIkP,GAAKlP,EAAI,GAAK,EACdmP,GAAKnP,EAAI,GAAK,EAClBgP,EAAQ7W,KAAKgI,KAAK8J,EAAM,EAAJjK,EAAQA,GAAKiK,EAAM,EAAJiF,EAAQA,GAAKjF,EAAM,EAAJkF,EAAQA,GAAK,GAC/D5W,EAAIyH,GAAK,GAAMgP,EACfA,EAAQ,GAAMA,EACdzW,EAAI,IAAM0R,EAAM,EAAJiF,EAAQC,GAAKlF,EAAM,EAAJkF,EAAQD,IAAMF,EACzCzW,EAAI2W,IAAMjF,EAAM,EAAJiF,EAAQlP,GAAKiK,EAAM,EAAJjK,EAAQkP,IAAMF,EACzCzW,EAAI4W,IAAMlF,EAAM,EAAJkF,EAAQnP,GAAKiK,EAAM,EAAJjK,EAAQmP,IAAMH,EAG3C,OAAOzW,EAaF,SAAS6W,GAAU7W,EAAK6C,EAAGC,EAAGc,GACnC,IAAIkT,EAAY,GAAMlX,KAAKE,GAAK,IAChC+C,GAAKiU,EACLhU,GAAKgU,EACLlT,GAAKkT,EACL,IAAI5L,EAAKtL,KAAKsD,IAAIL,GACdkU,EAAKnX,KAAKwD,IAAIP,GACdsI,EAAKvL,KAAKsD,IAAIJ,GACdkU,EAAKpX,KAAKwD,IAAIN,GACdsI,EAAKxL,KAAKsD,IAAIU,GACdqT,EAAKrX,KAAKwD,IAAIQ,GAKlB,OAJA5D,EAAI,GAAKkL,EAAK8L,EAAKC,EAAKF,EAAK5L,EAAKC,EAClCpL,EAAI,GAAK+W,EAAK5L,EAAK8L,EAAK/L,EAAK8L,EAAK5L,EAClCpL,EAAI,GAAK+W,EAAKC,EAAK5L,EAAKF,EAAKC,EAAK8L,EAClCjX,EAAI,GAAK+W,EAAKC,EAAKC,EAAK/L,EAAKC,EAAKC,EAC3BpL,EASF,SAAS4F,GAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,KAAOA,EAAE,GAAK,IAU7D,IAAIC,GAAQ8W,GAYR5W,GAAa4W,GAUb7W,GAAO6W,GAaPlW,GAAMkW,GAWNnR,GAAMmR,GAMNrP,GAAM1F,GAWNkB,GAAQ6T,GAURxG,GAAMwG,GAYNtG,GAAOsG,GAQPvP,GAASuP,GAMT1O,GAAMb,GASN2I,GAAgB4G,GAMhBjE,GAAS3C,GAUTG,GAAYyG,GASZ/Q,GAAc+Q,GASd9Q,GAAS8Q,GAaTC,GAAa,WACtB,IAAIC,EAAUC,KACVC,EAAYD,GAAgB,EAAG,EAAG,GAClCE,EAAYF,GAAgB,EAAG,EAAG,GACtC,OAAO,SAAUrX,EAAKG,EAAGiC,GACvB,IAAIsO,EAAM2G,GAASlX,EAAGiC,GAEtB,OAAIsO,GAAO,SACT2G,GAAWD,EAASE,EAAWnX,GAC3BkX,GAASD,GAAW,MAAUC,GAAWD,EAASG,EAAWpX,GACjEkX,GAAeD,EAASA,GACxBrC,GAAa/U,EAAKoX,EAASxX,KAAKE,IACzBE,GACE0Q,EAAM,SACf1Q,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,IAEPqX,GAAWD,EAASjX,EAAGiC,GACvBpC,EAAI,GAAKoX,EAAQ,GACjBpX,EAAI,GAAKoX,EAAQ,GACjBpX,EAAI,GAAKoX,EAAQ,GACjBpX,EAAI,GAAK,EAAI0Q,EACND,GAAUzQ,EAAKA,KAzBJ,GAyCbwX,GAAS,WAClB,IAAIC,EAAQ1X,KACR2X,EAAQ3X,KACZ,OAAO,SAAUC,EAAKG,EAAGiC,EAAGe,EAAG2N,EAAGvI,GAIhC,OAHAoN,GAAM8B,EAAOtX,EAAG2Q,EAAGvI,GACnBoN,GAAM+B,EAAOtV,EAAGe,EAAGoF,GACnBoN,GAAM3V,EAAKyX,EAAOC,EAAO,EAAInP,GAAK,EAAIA,IAC/BvI,GAPS,GAqBT2X,GAAU,WACnB,IAAIC,EAAOC,IACX,OAAO,SAAU7X,EAAK8X,EAAMzL,EAAOgC,GAUjC,OATAuJ,EAAK,GAAKvL,EAAM,GAChBuL,EAAK,GAAKvL,EAAM,GAChBuL,EAAK,GAAKvL,EAAM,GAChBuL,EAAK,GAAKvJ,EAAG,GACbuJ,EAAK,GAAKvJ,EAAG,GACbuJ,EAAK,GAAKvJ,EAAG,GACbuJ,EAAK,IAAME,EAAK,GAChBF,EAAK,IAAME,EAAK,GAChBF,EAAK,IAAME,EAAK,GACTrH,GAAUzQ,EAAKwW,GAASxW,EAAK4X,KAZnB,GC3qBd,SAAS7X,KACd,IAAIC,EAAM,IAAIC,EAAoB,GAOlC,OALIA,GAAuBR,eACzBO,EAAI,GAAK,EACTA,EAAI,GAAK,GAGJA,EASF,SAASI,GAAMD,GACpB,IAAIH,EAAM,IAAIC,EAAoB,GAGlC,OAFAD,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAUF,SAASM,GAAWuC,EAAGC,GAC5B,IAAI9C,EAAM,IAAIC,EAAoB,GAGlC,OAFAD,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACF9C,EAUF,SAASK,GAAKL,EAAKG,GAGxB,OAFAH,EAAI,GAAKG,EAAE,GACXH,EAAI,GAAKG,EAAE,GACJH,EAWF,SAASgB,GAAIhB,EAAK6C,EAAGC,GAG1B,OAFA9C,EAAI,GAAK6C,EACT7C,EAAI,GAAK8C,EACF9C,EAWF,SAAS+F,GAAI/F,EAAKG,EAAGiC,GAG1B,OAFApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASgG,GAAShG,EAAKG,EAAGiC,GAG/B,OAFApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAASmC,GAASnC,EAAKG,EAAGiC,GAG/B,OAFApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAWF,SAAS8P,GAAO9P,EAAKG,EAAGiC,GAG7B,OAFApC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAClBpC,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GACXpC,EAUF,SAAS+P,GAAK/P,EAAKG,GAGxB,OAFAH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACrBH,EAAI,GAAKJ,KAAKmQ,KAAK5P,EAAE,IACdH,EAUF,SAASgQ,GAAMhQ,EAAKG,GAGzB,OAFAH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACtBH,EAAI,GAAKJ,KAAKoQ,MAAM7P,EAAE,IACfH,EAWF,SAASiQ,GAAIjQ,EAAKG,EAAGiC,GAG1B,OAFApC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAKqQ,IAAI9P,EAAE,GAAIiC,EAAE,IACnBpC,EAWF,SAASwH,GAAIxH,EAAKG,EAAGiC,GAG1B,OAFApC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IAC1BpC,EAAI,GAAKJ,KAAK4H,IAAIrH,EAAE,GAAIiC,EAAE,IACnBpC,EAUF,SAASkQ,GAAMlQ,EAAKG,GAGzB,OAFAH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACtBH,EAAI,GAAKJ,KAAKsQ,MAAM/P,EAAE,IACfH,EAWF,SAASqD,GAAMrD,EAAKG,EAAGiC,GAG5B,OAFApC,EAAI,GAAKG,EAAE,GAAKiC,EAChBpC,EAAI,GAAKG,EAAE,GAAKiC,EACTpC,EAYF,SAASmQ,GAAYnQ,EAAKG,EAAGiC,EAAGiB,GAGrC,OAFArD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EACvBrD,EAAI,GAAKG,EAAE,GAAKiC,EAAE,GAAKiB,EAChBrD,EAUF,SAASoQ,GAASjQ,EAAGiC,GAC1B,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACjB,OAAOP,KAAKkG,MAAMjD,EAAGC,GAUhB,SAASuN,GAAgBlQ,EAAGiC,GACjC,IAAIS,EAAIT,EAAE,GAAKjC,EAAE,GACb2C,EAAIV,EAAE,GAAKjC,EAAE,GACjB,OAAO0C,EAAIA,EAAIC,EAAIA,EASd,SAAS6E,GAAOxH,GACrB,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACV,OAAOP,KAAKkG,MAAMjD,EAAGC,GAShB,SAASwN,GAAcnQ,GAC5B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACV,OAAO0C,EAAIA,EAAIC,EAAIA,EAUd,SAASyN,GAAOvQ,EAAKG,GAG1B,OAFAH,EAAI,IAAMG,EAAE,GACZH,EAAI,IAAMG,EAAE,GACLH,EAUF,SAASwQ,GAAQxQ,EAAKG,GAG3B,OAFAH,EAAI,GAAK,EAAMG,EAAE,GACjBH,EAAI,GAAK,EAAMG,EAAE,GACVH,EAUF,SAASyQ,GAAUzQ,EAAKG,GAC7B,IAAI0C,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GACNqI,EAAM3F,EAAIA,EAAIC,EAAIA,EAStB,OAPI0F,EAAM,IAERA,EAAM,EAAI5I,KAAKgI,KAAKY,IAGtBxI,EAAI,GAAKG,EAAE,GAAKqI,EAChBxI,EAAI,GAAKG,EAAE,GAAKqI,EACTxI,EAUF,SAAS0Q,GAAIvQ,EAAGiC,GACrB,OAAOjC,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAYzB,SAASuO,GAAM3Q,EAAKG,EAAGiC,GAC5B,IAAIwB,EAAIzD,EAAE,GAAKiC,EAAE,GAAKjC,EAAE,GAAKiC,EAAE,GAG/B,OAFApC,EAAI,GAAKA,EAAI,GAAK,EAClBA,EAAI,GAAK4D,EACF5D,EAYF,SAAS4Q,GAAK5Q,EAAKG,EAAGiC,EAAGmG,GAC9B,IAAIkB,EAAKtJ,EAAE,GACPuJ,EAAKvJ,EAAE,GAGX,OAFAH,EAAI,GAAKyJ,EAAKlB,GAAKnG,EAAE,GAAKqH,GAC1BzJ,EAAI,GAAK0J,EAAKnB,GAAKnG,EAAE,GAAKsH,GACnB1J,EAUF,SAASH,GAAOG,EAAKqD,GAC1BA,EAAQA,GAAS,EACjB,IAAIkO,EAAwB,EAApBtR,IAA0BL,KAAKE,GAGvC,OAFAE,EAAI,GAAKJ,KAAKwD,IAAImO,GAAKlO,EACvBrD,EAAI,GAAKJ,KAAKsD,IAAIqO,GAAKlO,EAChBrD,EAWF,SAAS+X,GAAc/X,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GAGV,OAFAH,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAC3B9C,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EACpB9C,EAWF,SAASgY,GAAehY,EAAKG,EAAGuR,GACrC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GAGV,OAFAH,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GACjC1R,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAC1B1R,EAYF,SAAS2R,GAAc3R,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GAGV,OAFAH,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GACjC1R,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,GAC1B1R,EAaF,SAASyR,GAAczR,EAAKG,EAAGuR,GACpC,IAAI7O,EAAI1C,EAAE,GACN2C,EAAI3C,EAAE,GAGV,OAFAH,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IACjC1R,EAAI,GAAK0R,EAAE,GAAK7O,EAAI6O,EAAE,GAAK5O,EAAI4O,EAAE,IAC1B1R,EAWF,SAAS+C,GAAO/C,EAAKG,EAAGiC,EAAGY,GAEhC,IAAIiV,EAAK9X,EAAE,GAAKiC,EAAE,GACd8V,EAAK/X,EAAE,GAAKiC,EAAE,GACd+V,EAAOvY,KAAKsD,IAAIF,GAChBoV,EAAOxY,KAAKwD,IAAIJ,GAIpB,OAFAhD,EAAI,GAAKiY,EAAKG,EAAOF,EAAKC,EAAO/V,EAAE,GACnCpC,EAAI,GAAKiY,EAAKE,EAAOD,EAAKE,EAAOhW,EAAE,GAC5BpC,EASF,SAASyS,GAAMtS,EAAGiC,GACvB,IAAImM,EAAKpO,EAAE,GACPsO,EAAKtO,EAAE,GACP2D,EAAK1B,EAAE,GACP2B,EAAK3B,EAAE,GAEXsQ,EAAM9S,KAAKgI,KAAK2G,EAAKA,EAAKE,EAAKA,GAAM7O,KAAKgI,KAAK9D,EAAKA,EAAKC,EAAKA,GAE9D4O,EAASD,IAAQnE,EAAKzK,EAAK2K,EAAK1K,GAAM2O,EAEtC,OAAO9S,KAAKgT,KAAKhT,KAAKqQ,IAAIrQ,KAAK4H,IAAImL,GAAS,GAAI,IAS3C,SAASE,GAAK7S,GAGnB,OAFAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,EASF,SAAS4F,GAAIzF,GAClB,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,IAUjC,SAASgG,GAAYhG,EAAGiC,GAC7B,OAAOjC,EAAE,KAAOiC,EAAE,IAAMjC,EAAE,KAAOiC,EAAE,GAU9B,SAASgE,GAAOjG,EAAGiC,GACxB,IAAIiE,EAAKlG,EAAE,GACPmG,EAAKnG,EAAE,GACP2G,EAAK1E,EAAE,GACP2E,EAAK3E,EAAE,GACX,OAAOxC,KAAK2H,IAAIlB,EAAKS,IAAO7G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIlB,GAAKzG,KAAK2H,IAAIT,KAAQlH,KAAK2H,IAAIjB,EAAKS,IAAO9G,EAAmBL,KAAK4H,IAAI,EAAK5H,KAAK2H,IAAIjB,GAAK1G,KAAK2H,IAAIR,IAOpK,IAAIyB,GAAMb,GAMNG,GAAM9B,GAMN6B,GAAM1F,GAMN2Q,GAAMhD,GAMNiD,GAAO3C,GAMP4C,GAAU3C,GAMV4C,GAAS3C,GAcT4C,GAAU,WACnB,IAAIC,EAAMpT,KACV,OAAO,SAAUI,EAAGiT,EAAQC,EAAQC,EAAOC,EAAIC,GAC7C,IAAI/L,EAAGgM,EAgBP,IAdKL,IACHA,EAAS,GAGNC,IACHA,EAAS,GAITI,EADEH,EACE1T,KAAKqQ,IAAIqD,EAAQF,EAASC,EAAQlT,EAAEwH,QAEpCxH,EAAEwH,OAGHF,EAAI4L,EAAQ5L,EAAIgM,EAAGhM,GAAK2L,EAC3BD,EAAI,GAAKhT,EAAEsH,GACX0L,EAAI,GAAKhT,EAAEsH,EAAI,GACf8L,EAAGJ,EAAKA,EAAKK,GACbrT,EAAEsH,GAAK0L,EAAI,GACXhT,EAAEsH,EAAI,GAAK0L,EAAI,GAGjB,OAAOhT,GA3BU,I,6BC/kBnBkY,EAAOC,QAAUC,EAAQ,M,6BCAzBF,EAAOC,QAAUC,EAAQ,M,6BCHZ,SAASC,IAetB,OAdAA,EAAWC,OAAOC,QAAU,SAAUpJ,GACpC,IAAK,IAAI7H,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIkR,EAASjR,UAAUD,GAEvB,IAAK,IAAImR,KAAOD,EACVF,OAAOI,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CtJ,EAAOsJ,GAAOD,EAAOC,IAK3B,OAAOtJ,IAGO0J,MAAMC,KAAMvR,WAf9B,mC,2/BC+DYwR,EAQAC,EAWAC,EASAC,EAgDAC,E,QAtICC,EAAY,CACrBC,aAAc,UACdC,IAAK,iBAELC,aAAc,OAEdC,kBAAmB,4CACnBC,uBAAwB,4BAExBC,KAAM,OAENC,6BAA8B,sGAE9BC,eAAgB,IAEhBC,WAAY,aAEZC,OAAQ,SAERC,cAAe,uCAEfC,aAAc,SACdC,cAAe,UACfC,qBAAsB,iBACtBC,YAAa,QAEbC,mBAAoB,OACpBC,gBAAiB,qBACjBC,cAAe,gBACfC,uBAAwB,WACxBC,2BAA4B,OAC5BC,sBAAuB,kDACvBC,sBAAuB,wBACvBC,YAAa,cACbC,aAAc,GACdC,cAAe,IACfC,cAAe,4DACfC,aAAc,aACdC,aAAc,IACdC,gCAAiC,gBACjCC,kCAAmC,sBACnCC,oBAAqB,CAAC,4BAA6B,oBAAqB,sBAAuB,oBAGtFC,EAAsB,CAC/BhC,EAAUY,aACVZ,EAAUa,cACVb,EAAUc,sBAGDmB,EAAc,OAAH,IAAG,CACpBD,EAAmB,CACtBhC,EAAUe,eAMd,SAAYpB,GACR,8BACA,4BAFJ,CAAYA,MAAW,KAQvB,SAAYC,GACR,qBACA,4BACA,+BACA,gBACA,iCALJ,CAAYA,MAAmB,KAW/B,SAAYC,GACR,kBACA,gCACA,wBAHJ,CAAYA,MAAqB,KASjC,SAAYC,GACR,wBACA,8BACA,gCACA,gCACA,0BACA,kBACA,gBACA,gBACA,wCACA,8BACA,sBACA,gCACA,0BACA,gBACA,gBACA,kBACA,gCACA,4BACA,cACA,kCACA,gDACA,gCACA,wCACA,8BACA,8BACA,4BACA,8BACA,mDACA,gDACA,4CACA,6CACA,gCACA,4BACA,gCACA,sCACA,gDACA,0BACA,oBACA,4BACA,4CACA,8BACA,cA1CJ,CAAYA,MAAkB,KAgD9B,SAAYC,GACR,8BACA,kBAFJ,CAAYA,MAAiB,K,IAoBjBmC,EAVCC,EAAc,CACvBC,MAAO,QACPC,eAAgB,iBAChBC,QAAS,UACTC,KAAM,SAMV,SAAYL,GACR,oBACA,YACA,0BACA,sBACA,4BACA,gCACA,wBACA,iCACA,yCATJ,CAAYA,MAAQ,K,IAyCRM,EASAC,EAaAC,EAUAC,EAQAC,EAUAC,EAgBAC,EApFCC,EAA4B,CACrCC,MAAO,QACPC,KAAM,SAgBV,SAAYT,GACR,gBACA,sBACA,wBAHJ,CAAYA,MAAY,KASxB,SAAYC,GACR,4BACA,gDACA,gDACA,2CACA,sCACA,kCACA,2DAPJ,CAAYA,MAAS,KAarB,SAAYC,GACR,6BACA,2BACA,2BACA,iCAJJ,CAAYA,MAAgB,KAU5B,SAAYC,GACR,0BACA,4BAFJ,CAAYA,MAAU,KAQtB,SAAYC,GACR,qBACA,6BACA,8DACA,+BAJJ,CAAYA,MAAc,KAU1B,SAAYC,GACR,oBACA,0BACA,qBACA,6BACA,+BACA,6BACA,wBACA,wBACA,wBACA,0BAVJ,CAAYA,MAAe,KAgB3B,SAAYC,GACR,sBACA,oBACA,wBACA,4BACA,sCACA,wCACA,8BACA,sCACA,gCATJ,CAAYA,MAAS,K,IAwBTI,EATCC,EAAe,cACfC,EAAa,cACbC,EAAgB,IAEhBC,EAA+B,CACxCC,UAAW,qBACXC,qBAAsB,QAG1B,SAAYN,GACR,kBACA,gBACA,oBAHJ,CAAYA,MAAuB,K,IAsBvBO,EAhBCC,EAAyB,CAClCC,eAAgB,EAChBC,qBAAsB,GACtBC,sBAAuB,IACvBC,kBAAmB,GACnBP,UAAW,mBACXQ,mBAAoB,IACpBC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,cAAe,kBAMnB,SAAYV,GACR,YACA,kBAFJ,CAAYA,MAAoB,K,IA2BpBW,EAQCC,EA3BAC,EAAsB,CAE/BC,8BAA+B,GAE/BC,kCAAmC,KAEnCC,kBAAmB,aAEnBC,0BAA2B,qBAGlBC,EAAS,CAClBC,oBAAqB,gBACrBC,sBAAuB,oBAM3B,SAAYT,GACR,sBACA,sBAFJ,CAAYA,MAAsB,KAQlC,SAAaC,GACT,mCACA,yCAFJ,CAAaA,MAAa,M,gBC3V1BvF,EAAOC,QAAU,EAAQ,M,kGCGnB+F,E,WACF,aAAc,oB,yDAEd,SAAwBC,EAASC,GAC7B,IAAI3b,EAAIyU,IAAKtX,SAIb,OAHA6C,EAAE,GAAKhD,KAAKwD,IAAImb,GAAS3e,KAAKsD,IAAIob,GAClC1b,EAAE,GAAKhD,KAAKsD,IAAIqb,GAChB3b,EAAE,GAAKhD,KAAKwD,IAAImb,GAAS3e,KAAKwD,IAAIkb,GAC3B1b,I,8BAGX,SAAwBA,GACpB,IAAI4b,EAAMC,IAAKne,WAAW,EAAK,GACzBmT,EAAI4D,IAAK1P,OAAO/E,GACtB,GAAI6Q,EAAI,KAAS,OAAO+K,EAExB,IAAIE,EAAMrH,IAAK/W,WAAWsC,EAAE,GAAK6Q,EAAG7Q,EAAE,GAAK6Q,EAAG7Q,EAAE,GAAK6Q,GAGrD,OAFA+K,EAAI,GAAK5e,KAAK4V,MAAMkJ,EAAI,GAAIA,EAAI,IAChCF,EAAI,GAAK5e,KAAK+e,KAAKD,EAAI,IAChBF,I,gCAGX,SAA0BI,GACtB,IAAInM,EAAQmM,EASZ,OAPInM,EAAQoM,IAAUC,UAClBrM,GAAgBoM,IAAUC,SAG1BrM,EAAQ,IACRA,GAASoM,IAAUC,SAEhBrM,I,oCAIX,SAA8BsM,EAAOC,GACjC,IAAIC,EAASC,IAAKnf,SACdwR,EAAI8F,IAAK3G,IAAIqO,EAAOC,GAAO,EAC3Brb,EAAIub,IAAKnf,SAuBb,OArBIwR,EAAI,MACJA,EAAI,EACA3R,KAAK2H,IAAIwX,EAAM,IAAMnf,KAAK2H,IAAIwX,EAAM,KACpCpb,EAAE,IAAMob,EAAM,GACdpb,EAAE,GAAKob,EAAM,GACbpb,EAAE,GAAK,EACPA,EAAE,GAAK4N,IAEP5N,EAAE,GAAK,EACPA,EAAE,IAAMob,EAAM,GACdpb,EAAE,GAAKob,EAAM,GACbpb,EAAE,GAAK4N,KAGX5N,EAAE,GAAKob,EAAM,GAAKC,EAAI,GAAKD,EAAM,GAAKC,EAAI,GAC1Crb,EAAE,GAAKob,EAAM,GAAKC,EAAI,GAAKD,EAAM,GAAKC,EAAI,GAC1Crb,EAAE,GAAKob,EAAM,GAAKC,EAAI,GAAKD,EAAM,GAAKC,EAAI,GAC1Crb,EAAE,GAAK4N,GAGX2N,IAAKzO,UAAUwO,EAAQtb,GAChBsb,I,yBAGX,c,uBAYA,SAAiBrc,GACbuc,QAAQ1J,IAAI,IAAM7S,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,O,uBAGvD,SAAiBA,GACbuc,QAAQ1J,IAAI,IAAM7S,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,O,wBASpE,SAAkBwc,EAAOC,EAAOxc,GAC5B,IAAI0F,EAAI0Q,KAAKqG,OAAOzc,EAAIuc,IAAUC,EAAQD,GAAQ,EAAK,GACvD,OAAO7W,EAAIA,GAAK,EAAM,EAAMA,K,mBAGhC,SAAa3F,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,+BAC3B,SAAyBA,GAAK,OAAO6b,IAAKne,YAAYsC,EAAE,GAAIA,EAAE,M,uCAC9D,SAAiCA,GAAK,OAAO6b,IAAKne,WAAWsC,EAAE,IAAKA,EAAE,M,qBAEtE,SAAe2c,EAAIlL,GACf,IAAIzR,EAAI6b,IAAK1e,SAEb,OADA0e,IAAK1Y,IAAInD,EAAG2c,EAAIlL,GACTzR,I,qBAGX,SAAe2c,EAAIlL,GACf,IAAIzR,EAAI6b,IAAK1e,SAEb,OADA0e,IAAK3W,IAAIlF,EAAG2c,EAAIlL,GACTzR,I,uBAGX,SAAiB2c,EAAItc,GACjB,IAAIL,EAAI6b,IAAK1e,SAEb,OADA0e,IAAKpb,MAAMT,EAAG2c,EAAItc,GACXL,I,2BAGX,SAAqB2c,GACjB,IAAI3c,EAAI6b,IAAK1e,SAEb,OADA0e,IAAKhO,UAAU7N,EAAG2c,GACX3c,I,mBAGX,SAAaA,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,2BAG3B,SAAqB4c,EAAUC,GAC3B,IAAMC,EAAaD,EAAWD,EAE9B,OADcnI,IAAK/W,WAAWV,KAAKC,SAAW6f,EAAaF,EAAU5f,KAAKC,SAAW6f,EAAaF,EAAU5f,KAAKC,SAAW6f,EAAaF,K,2BAI7I,SAAqBD,GACjB,IAAI3c,EAAIyU,IAAKtX,SAEb,OADAsX,IAAK5G,UAAU7N,EAAG2c,GACX3c,I,qBAGX,SAAe2c,EAAIlL,GACf,IAAIzR,EAAIyU,IAAKtX,SAEb,OADAsX,IAAKtR,IAAInD,EAAG2c,EAAIlL,GACTzR,I,qBAGX,SAAe2c,EAAIlL,GACf,IAAIzR,EAAIyU,IAAKtX,SAEb,OADAsX,IAAKvP,IAAIlF,EAAG2c,EAAIlL,GACTzR,I,sBAGX,SAAgB2c,EAAIlL,GAChB,IAAIzR,EAAIyU,IAAKtX,SAEb,OADAsX,IAAKlV,SAASS,EAAG2c,EAAIlL,GACdzR,I,uBAGX,SAAiB2c,EAAItc,GACjB,IAAIL,EAAIyU,IAAKtX,SAEb,OADAsX,IAAKhU,MAAMT,EAAG2c,EAAItc,GACXL,I,qBAGX,SAAe2c,EAAIlL,GAEf,OADQgD,IAAK/W,WAAWV,KAAK4H,IAAI+X,EAAG,GAAIlL,EAAG,IAAKzU,KAAK4H,IAAI+X,EAAG,GAAIlL,EAAG,IAAKzU,KAAK4H,IAAI+X,EAAG,GAAIlL,EAAG,O,qBAI/F,SAAekL,EAAIlL,GAEf,OADQgD,IAAK/W,WAAWV,KAAKqQ,IAAIsP,EAAG,GAAIlL,EAAG,IAAKzU,KAAKqQ,IAAIsP,EAAG,GAAIlL,EAAG,IAAKzU,KAAKqQ,IAAIsP,EAAG,GAAIlL,EAAG,O,0BAI/F,SAAoBzR,GAChB,OAAOhD,KAAK4H,IAAI5H,KAAK4H,IAAI5E,EAAE,GAAIA,EAAE,IAAKA,EAAE,M,0BAG5C,SAAoBA,GAChB,OAAOhD,KAAKqQ,IAAIrQ,KAAKqQ,IAAIrN,EAAE,GAAIA,EAAE,IAAKA,EAAE,M,iCAG5C,SAA2B2R,EAAIoL,EAAaC,GACxC,IAAK,IAAInY,EAAI,EAAGA,EAAI,EAAGA,IACnBkY,EAAYC,EAAQnY,GAAK8M,EAAG9M,K,mBAIpC,SAAa7E,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,mBAC3B,SAAaA,GAAK,OAAOA,EAAE,K,0BAE3B,SAAoB2R,GAChB,OAAO2C,IAAK5W,WAAWiU,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAI,K,qBAGhD,SAAegL,EAAIlL,GACf,IAAIzR,EAAIsU,IAAKnX,SAEb,OADAmX,IAAKnR,IAAInD,EAAG2c,EAAIlL,GACTzR,I,qBAGX,SAAe2c,EAAIlL,GACf,IAAIzR,EAAIsU,IAAKnX,SAEb,OADAmX,IAAKpP,IAAIlF,EAAG2c,EAAIlL,GACTzR,I,sBAGX,SAAgB2c,EAAIlL,GAChB,IAAIzR,EAAIsU,IAAKnX,SAEb,OADAmX,IAAK/U,SAASS,EAAG2c,EAAIlL,GACdzR,I,uBAGX,SAAiB2c,EAAItc,GACjB,IAAIL,EAAIsU,IAAKnX,SAEb,OADAmX,IAAK7T,MAAMT,EAAG2c,EAAItc,GACXL,I,2BAGX,SAAqBmH,GACjB,IAAK,IAAItC,EAAI,EAAGA,EAAI,EAAGA,IACnBsC,EAAItC,GAAK,I,0BAIjB,SAAoB8X,EAAIlL,GAcpB,OAbgBwD,IAAKvX,WACjBif,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,GAEXkL,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,GAEXkL,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,GACXkL,EAAG,GAAKlL,EAAG,M,qBAKnB,SAAetK,EAAK8V,GAChB,IAAK,IAAIpY,EAAI,EAAGA,EAAI,EAAGA,IACnBsC,EAAItC,IAAMoY,EAAOpY,K,uBAIzB,SAAiBsC,EAAK9G,GAClB,IAAK,IAAIwE,EAAI,EAAGA,EAAI,EAAGA,IACnBsC,EAAItC,IAAMxE,I,wBAIlB,SAAkB8G,EAAK6V,GACnB,OAAOvI,IAAK/W,WAAWyJ,EAAY,EAAR6V,GAAY7V,EAAa,EAAR6V,EAAa,GAAI7V,EAAa,EAAR6V,EAAa,M,wBAGnF,SAAkB7V,EAAK6V,GACnB,OAAOvI,IAAK/W,WAAWyJ,EAAI6V,GAAQ7V,EAAI6V,EAAQ,GAAI7V,EAAI6V,EAAQ,M,2BAInE,SAAqB7V,GACjB,IAAK,IAAItC,EAAI,EAAGA,EAAI,GAAIA,IACpBsC,EAAItC,GAAK,I,wBAIjB,SAAkBsC,EAAK6V,GACnB,OAAO1I,IAAK5W,WAAWyJ,EAAY,EAAR6V,GAAY7V,EAAa,EAAR6V,EAAa,GAAI7V,EAAa,EAAR6V,EAAa,GAAI7V,EAAa,EAAR6V,EAAa,M,wBAGzG,SAAkB7V,EAAK6V,GACnB,OAAO1I,IAAK5W,WAAWyJ,EAAI6V,GAAQ7V,EAAI6V,EAAQ,GAAI7V,EAAI6V,EAAQ,GAAI7V,EAAI6V,EAAQ,O,sBAGnF,SAAgBE,EAAIC,GAChB,IAAIrO,EAAIsO,IAAKjgB,SAEb,OADAigB,IAAK7d,SAASuP,EAAGoO,EAAIC,GACdrO,I,0BAGX,SAAoBuO,GAChB,IAAIvO,EAAIsO,IAAKjgB,SAYb,OAXA2R,EAAE,GAAKuO,EAAG,GACVvO,EAAE,GAAKuO,EAAG,GACVvO,EAAE,GAAKuO,EAAG,GAEVvO,EAAE,GAAKuO,EAAG,GACVvO,EAAE,GAAKuO,EAAG,GACVvO,EAAE,GAAKuO,EAAG,GAEVvO,EAAE,GAAKuO,EAAG,GACVvO,EAAE,GAAKuO,EAAG,GACVvO,EAAE,IAAMuO,EAAG,GACJvO,I,iCAGX,SAA2B8C,EAAImL,EAAaC,GACxC,IAAK,IAAInY,EAAI,EAAGA,EAAI,EAAGA,IACnBkY,EAAYC,EAAQnY,GAAK+M,EAAG/M,K,2BAIpC,SAAqBqF,EAAMC,EAAQP,EAAMC,GACrC,IAAIzM,EAAMggB,IAAKjgB,SACTiN,EAAI,EAAMpN,KAAKqN,IAAIH,EAAO,GAgBhC,GAfA9M,EAAI,GAAKgN,EAAID,EACb/M,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAKgN,EACThN,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,GAAK,EACTA,EAAI,KAAO,EACXA,EAAI,IAAM,EACVA,EAAI,IAAM,EACVA,EAAI,IAAM,EAEC,MAAPyM,GAAeA,IAAQS,IAAU,CACjC,IAAMN,EAAK,GAAKJ,EAAOC,GACvBzM,EAAI,IAAMyM,EAAMG,EAChB5M,EAAI,IAAMyM,EAAMD,EAAOI,OAEvB5M,EAAI,KAAO,EACXA,EAAI,KAAOwM,EAGf,OAAOxM,I,8BAGX,SAAwB4C,EAAGsd,GACvB,IAAIxB,EAAMrH,IAAKtX,SAGf,OAFAsX,IAAKhU,MAAMqb,EAAKwB,EAAG7I,IAAK3G,IAAIwP,EAAGtd,IAC/ByU,IAAKhU,MAAMqb,EAAKA,EAAK,EAAMrH,IAAK3G,IAAIwP,EAAGA,IAChCxB,I,gCAGX,SAA0B9b,EAAGsd,GACzB,IAAIxB,EAAMD,IAAK1e,SAGf,OAFA0e,IAAKpb,MAAMqb,EAAKwB,EAAGzB,IAAK/N,IAAIwP,EAAGtd,IAC/B6b,IAAKpb,MAAMqb,EAAKA,EAAK,EAAMD,IAAK/N,IAAIwP,EAAGA,IAChCxB,I,mCAGX,SAA6Ba,EAAIlL,EAAIC,GACjC,IAAI6L,EAAK9I,IAAKtX,SACdsX,IAAKhX,KAAK8f,EAAIZ,GAEd,IAAIa,EAAK/I,IAAKtX,SACdsX,IAAK5G,UAAU2P,EAAID,GAEnB,IAAIlK,EAAKoB,IAAKtX,SACdsX,IAAKvP,IAAImO,EAAI5B,EAAI4E,KAAKoH,iBAAiBhM,EAAIkL,IAE3C,IAAIe,EAAKjJ,IAAKtX,SACdsX,IAAK5G,UAAU6P,EAAIrK,GAEnB,IAAIC,EAAKmB,IAAKtX,SACdsX,IAAKrR,SAASkQ,EAAI5B,EAAI2E,KAAKoH,iBAAiB/L,EAAIiL,IAChDlI,IAAKrR,SAASkQ,EAAIA,EAAI+C,KAAKoH,iBAAiB/L,EAAID,IAEhD,IAAIkM,EAAKlJ,IAAKtX,SAGd,OAFAsX,IAAK5G,UAAU8P,EAAIrK,GAEZ,CAACkK,EAAIE,EAAIC,K,wBAGpB,SAAkBL,GAGd,GAAIA,EAAE,IAAM,SAIR,MAAO,CAFE7I,IAAK/W,WAAW,GAAM,EAAK,GAC3B+W,IAAK/W,YAAY,EAAK,EAAK,IAGxC,IAAIH,EAAI,GAAO,EAAM+f,EAAE,IACnB9d,GAAK8d,EAAE,GAAKA,EAAE,GAAK/f,EAIvB,MAAO,CAHEkX,IAAK/W,WAAW,EAAM4f,EAAE,GAAKA,EAAE,GAAK/f,EAAGiC,GAAI8d,EAAE,IAC7C7I,IAAK/W,WAAW8B,EAAG,EAAM8d,EAAE,GAAKA,EAAE,GAAK/f,GAAI+f,EAAE,O,oCAK1D,SAA8Btd,GAC1B,OAAOA,EAAE,GAAKA,EAAE,IAAMA,EAAE,GAAKA,EAAE,GAAK,EAAIA,EAAE,GAAKA,EAAE,GAAK,EAAI,I,mBAG9D,SAAaA,EAAG4d,EAAQC,GACpB,IAAIC,EAAOrJ,IAAKtX,SAIhB,OAHA2gB,EAAK,GAAK9gB,KAAKqQ,IAAIrQ,KAAK4H,IAAI5E,EAAE,GAAI4d,GAASC,GAC3CC,EAAK,GAAK9gB,KAAKqQ,IAAIrQ,KAAK4H,IAAI5E,EAAE,GAAI4d,GAASC,GAC3CC,EAAK,GAAK9gB,KAAKqQ,IAAIrQ,KAAK4H,IAAI5E,EAAE,GAAI4d,GAASC,GACpCC,I,oBAGX,SAAc1T,EAAGwT,EAAQC,GACrB,OAAO7gB,KAAKqQ,IAAIrQ,KAAK4H,IAAIwF,EAAGwT,GAASC,K,8BAGzC,SAAwB7d,GAEpB,IADA,IAAI+d,EAAU,CAAC,EAAG,EAAG,GACZlZ,EAAI,EAAGA,EAAI,EAAGA,IACnB,IAAK,IAAIkP,EAAIlP,EAAI,EAAGkP,EAAI,EAAGA,IACvB,GAAI/T,EAAE+d,EAAQlZ,IAAM7E,EAAE+d,EAAQhK,IAAK,CAC/B,IAAM+H,EAAMiC,EAAQlZ,GACpBkZ,EAAQlZ,GAAKkZ,EAAQhK,GACrBgK,EAAQhK,GAAK+H,EAIzB,OAAOiC,I,kCAGX,SAA4BC,EAASC,GAYjC,IAVA,IAAIlgB,EAAMigB,EAAQ,GACdhgB,EAAMggB,EAAQ,GACd5Y,EAAM4Y,EAAQ,GAEd7f,EAAM6f,EAAQ,GACd3Y,EAAM2Y,EAAQ,GACdvY,EAAMuY,EAAQ,GAEdE,EAAe,CAAC,CAAC,EAAK,EAAK,GAAM,CAAC,EAAK,EAAK,GAAM,CAAC,EAAK,EAAK,IAExD3gB,EAAI,EAAGA,EAAI,MAEXP,KAAK2H,IAAI3G,GAAOie,IAAUkC,MAAUnhB,KAAK2H,IAAIS,GAAO6W,IAAUkC,MAAUnhB,KAAK2H,IAAIU,GAAO4W,IAAUkC,MAFnF5gB,IAAK,CAKzB,GAAW,GAAPS,EAAY,CACZ,IAAI8S,EAAkB,IAAb3S,EAAMJ,GAAaC,EACxBsV,EAAKxC,EAAIA,EACTsN,EAAO9K,EAAK,EACZ3N,EAAKyY,GAAQ9K,GAAQxC,EAAI,GAAQ,EAAM,IAAQ9T,KAAKgI,KAAKoZ,GAAQphB,KAAK2H,IAAImM,IAAM,GAAMA,EACtFvQ,EAAI,EAAMvD,KAAKgI,KAAKW,EAAIA,EAAI,GAC5BtF,EAAIE,EAAIoF,EACZ5H,GAAO4H,EAAI3H,EACXG,GAAOwH,EAAI3H,EACXA,EAAM,EAEN,IAAM8d,EAAMvb,EAAI6E,EAAM/E,EAAIgF,EAC1BA,EAAMhF,EAAI+E,EAAM7E,EAAI8E,EACpBD,EAAM0W,EAEN,IAAK,IAAIjX,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAMwZ,EAAO9d,EAAI2d,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAC1DqZ,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAAKtE,EAAI2d,EAAarZ,GAAG,GAClEqZ,EAAarZ,GAAG,GAAKwZ,GAK7B,GAAW,GAAPjZ,EAAY,CACZ,IAAI0L,EAAkB,IAAbrL,EAAM1H,GAAaqH,EACxBkO,EAAKxC,EAAIA,EACTsN,EAAO9K,EAAK,EACZ3N,EAAKyY,GAAQ9K,GAAQxC,EAAI,GAAQ,EAAM,IAAQ9T,KAAKgI,KAAKoZ,GAAQphB,KAAK2H,IAAImM,IAAM,GAAMA,EACtFvQ,EAAI,EAAMvD,KAAKgI,KAAKW,EAAIA,EAAI,GAC5BtF,EAAIE,EAAIoF,EAEZ5H,GAAO4H,EAAIP,EACXK,GAAOE,EAAIP,EACXA,EAAM,EAEN,IAAM0W,EAAMvb,EAAIvC,EAAMqC,EAAIgF,EAC1BA,EAAMhF,EAAIrC,EAAMuC,EAAI8E,EACpBrH,EAAM8d,EAEN,IAAK,IAAIjX,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAMwZ,EAAO9d,EAAI2d,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAC1DqZ,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAAKtE,EAAI2d,EAAarZ,GAAG,GAClEqZ,EAAarZ,GAAG,GAAKwZ,GAK7B,GAAW,GAAPhZ,EAAY,CACZ,IAAIyL,EAAkB,IAAbrL,EAAMtH,GAAakH,EACxBiO,EAAKxC,EAAIA,EACTsN,EAAO9K,EAAK,EACZ3N,EAAKyY,GAAQ9K,GAAQxC,EAAI,GAAQ,EAAM,IAAQ9T,KAAKgI,KAAKoZ,GAAQphB,KAAK2H,IAAImM,IAAM,GAAMA,EACtFvQ,EAAI,EAAMvD,KAAKgI,KAAKW,EAAIA,EAAI,GAC5BtF,EAAIE,EAAIoF,EAEZxH,GAAOwH,EAAIN,EACXI,GAAOE,EAAIN,EACXA,EAAM,EAEN,IAAMyW,EAAMvb,EAAIvC,EAAMqC,EAAI+E,EAC1BA,EAAM/E,EAAIrC,EAAMuC,EAAI6E,EACpBpH,EAAM8d,EAEN,IAAK,IAAIjX,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAMwZ,EAAO9d,EAAI2d,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAC1DqZ,EAAarZ,GAAG,GAAKxE,EAAI6d,EAAarZ,GAAG,GAAKtE,EAAI2d,EAAarZ,GAAG,GAClEqZ,EAAarZ,GAAG,GAAKwZ,IAKjCJ,EAAY,GAAKlgB,EACjBkgB,EAAY,GAAK9f,EACjB8f,EAAY,GAAKxY,EAGjB,IAAI6Y,EAAgB7C,EAAM8C,iBAAiBN,GACvCO,EAAO/J,IAAKtX,SAChBsX,IAAKhX,KAAK+gB,EAAMP,GAEhB,IAAIQ,EAAOxJ,IAAKvX,WACZwgB,EAAa,GAAG,GAAIA,EAAa,GAAG,GAAIA,EAAa,GAAG,GACxDA,EAAa,GAAG,GAAIA,EAAa,GAAG,GAAIA,EAAa,GAAG,GACxDA,EAAa,GAAG,GAAIA,EAAa,GAAG,GAAIA,EAAa,GAAG,IAExDQ,EAAqBzJ,IAAK9X,SAkB9B,OAhBA8gB,EAAY,GAAKO,EAAKF,EAAc,IACpCL,EAAY,GAAKO,EAAKF,EAAc,IACpCL,EAAY,GAAKO,EAAKF,EAAc,IAEpCI,EAAmB,GAAKD,EAAKH,EAAc,IAC3CI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAChDI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAEhDI,EAAmB,GAAKD,EAAKH,EAAc,IAC3CI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAChDI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAEhDI,EAAmB,GAAKD,EAAKH,EAAc,IAC3CI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAChDI,EAAmB,GAAKD,EAAKH,EAAc,GAAK,GAEzCI,I,gCAIX,SAA0B7Z,GACtB,IAAI8Z,EAAO,IAAIC,YAAY,GAO3B,OANAD,EAAK,GAAK9Z,EACV8Z,EAAK,IAAOA,EAAK,IAAM,GAAOA,EAAK,IAAM,MAAS,EAClDA,EAAK,IAAiB,WAAVA,EAAK,KAAoB,GAAiB,WAAVA,EAAK,MAAqB,IAAO,EAC7EA,EAAK,IAAiB,UAAVA,EAAK,KAAoB,GAAiB,WAAVA,EAAK,MAAqB,IAAO,EAC7EA,EAAK,IAAiB,UAAVA,EAAK,KAAoB,GAAiB,WAAVA,EAAK,MAAqB,IAAO,EAC7EA,EAAK,IAAiB,SAAVA,EAAK,KAAoB,GAAiB,WAAVA,EAAK,MAAqB,IAAO,EAC5D,uBAAVA,EAAK,K,wBAGhB,SAAkB9Z,EAAGyY,GACjB,MAAO,CAACzY,EAAIyY,EAAG7B,EAAMoD,mBAAmBha,M,0BAG5C,SAAoB5E,GAChB,OAAQjD,KAAK8hB,KAAK7e,GAAK,IAAM,I,kCAGjC,SACI8e,EAASC,EAASC,EAASC,EAC3BC,EAASC,EAASC,EAASC,GAE3B,IAYMlgB,GAHKigB,EAHAF,IALAH,EAGAE,IAJAH,EAGAE,IAOAK,EAHAF,GAOX,GAAW,GAAPhgB,EAAY,OAAQ,EAExB,IAAMmgB,EAAS,EAAMngB,EACjBuG,IAVOyZ,EAGAE,IAVAP,EAMAI,IAGAE,EAHAF,IALAH,EAMAI,IAUmDG,EACxDC,IAjBKR,EAGAE,IAJAH,EAMAI,IAHAF,EAHAF,IACAC,EAMAI,IAWuDG,EAKlE,OAFA5Z,EADcA,GAAK,GAAOA,GAAK,GAAO6Z,EAAM,GAAOA,GAAO,EAC3C7Z,GAAK,I,sCAKxB,SAAgC8Z,EAAOC,GAMnC,IAJA,IAAMC,EAAK9D,IAAKne,WAAW+hB,EAAM,GAAIA,EAAM,IACrCG,EAAK/D,IAAKne,WAAWiiB,EAAG,GAAK,IAAQA,EAAG,IAC1CE,EAAgB,EAEXhb,EAAI,EAAGA,EAAI6a,EAAQ3a,OAAQF,IAAK,CACrC,IAAMib,EAAKJ,EAAQ7a,GACbkb,EAAMlb,EAAI6a,EAAQ3a,OAAS,EAAK2a,EAAQ7a,EAAI,GAAK6a,EAAQ,GAE3DrJ,KAAK2J,qBACLL,EAAG,GAAIA,EAAG,GACVC,EAAG,GAAIA,EAAG,GACVE,EAAG,GAAIA,EAAG,GACVC,EAAG,GAAIA,EAAG,KACT,GACDF,IAIR,OAAOA,I,yBAGX,SAAmB9O,EAAGC,EAAGpB,GAErB,OAASoB,EAAE,GAAKD,EAAE,KAAOnB,EAAE,GAAKmB,EAAE,KAAOnB,EAAE,GAAKmB,EAAE,KAAOC,EAAE,GAAKD,EAAE,KAAQ,I,8BAI9E,SAAwBkP,EAAGP,GACvB,GAAsB,GAAlBA,EAAQ3a,OAAa,OAAO,EAKhC,IAHA,IAAI8a,EAAgB,EACdK,EAAcR,EAAQ3a,OAEnBF,EAAI,EAAGA,EAAIqb,EAAarb,IAAK,CAClC,IAAMkM,EAAI2O,EAAQ7a,GACZmM,EAAI0O,GAAS7a,EAAI,GAAKqb,GAExBnP,EAAE,IAAMkP,EAAE,GAENjP,EAAE,GAAKiP,EAAE,IAEL5J,KAAK8J,YAAYpP,EAAGC,EAAGiP,MAErBJ,EAKN7O,EAAE,IAAMiP,EAAE,KAEL5J,KAAK8J,YAAYpP,EAAGC,EAAGiP,MAEtBJ,GAKlB,OAAOA,I,sCAIX,SAAgCO,EAAKC,GACjC,OAAO5L,IAAK3G,IAAIsS,EAAK3L,IAAK/W,WAAW2iB,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,KAAOA,EAAQ,K,4BAGxF,SAAsBA,GAClB,IAAIC,EAAQ7L,IAAK/W,WAAW,EAAK,EAAK,GAClC6iB,EAAoBlK,KAAKmK,yBAAyBF,EAAOD,GAC7D,OAAOhK,KAAKoK,QAAQH,EAAO7L,IAAK/W,WAAW2iB,EAAQ,GAAKE,EAAmBF,EAAQ,GAAKE,EAAmBF,EAAQ,GAAKE,M,oCAI5H,SAA8BG,EAAKC,EAAKC,GACpC,IAAMC,EAAUF,EAAM1E,IAAU6E,UAC1BC,EAAOL,EAAMzE,IAAU6E,UACvB7gB,EAAK2gB,GAAYC,EAAU5E,IAAU+E,MAAS,EAAM/E,IAAU+E,KAC9D9gB,EAAK0gB,GAAY3E,IAAU+E,IAAMhkB,KAAK6V,IAAI7V,KAAKqN,IAAI4R,IAAUgF,YAAqB,GAAPF,MAAkB,EAAM9E,IAAU+E,KACnH,OAAOnF,IAAKne,WAAWuC,EAAGC,K,oCAG9B,SAA8BkgB,EAAKQ,GAC/B,IAAMC,EAAWT,EAAI,GAAKQ,GAAa,EAAM3E,IAAU+E,KAAO/E,IAAU+E,IAClED,EAAO,GAAO/jB,KAAKkkB,KAAKlkB,KAAKyV,IAAK2N,EAAI,GAAKQ,GAAa,EAAM3E,IAAU+E,KAAO/E,IAAU+E,MAAQ/E,IAAUgF,aACjH,OAAOpF,IAAKne,WAAWmjB,EAAU5E,IAAUkF,UAAWJ,EAAO9E,IAAUkF,e,2XCjoBnEC,EASAC,EAQAC,EAoBAC,EAcAC,EAUAC,E,OA5FCC,EAAmB,CAI5BC,8BAA+B,0BAI/BpG,oBAAqB,gBAIrBqG,YAAa,IAIbC,aAAc,IAIdC,kBAAmB,OAInBC,iBAAkB,GAIlBC,SAAU,oBAGd,SAAYZ,GACR,8BACA,kCACA,gCAHJ,CAAYA,MAAoB,KAShC,SAAYC,GACR,YACA,cAFJ,CAAYA,MAAiB,KAQ7B,SAAYC,GACR,wBACA,+CACA,gCACA,gCACA,iCACA,8BACA,oCACA,qBACA,kCACA,kBACA,8CAXJ,CAAYA,MAAkB,KAoB9B,SAAYC,GACR,qDACA,+CACA,+BACA,mEACA,uDACA,sEACA,yBACA,mCARJ,CAAYA,MAAK,KAcjB,SAAYC,GACR,sBACA,gBACA,kBAHJ,CAAYA,MAAe,KAU3B,SAAYC,GAIR,oBAIA,gBAIA,kBAIA,8BAIA,wBAIA,kCAIA,cA5BJ,CAAYA,MAAiB,K,IAyCjBQ,EAVCC,EAAgD,CACzDC,OAAQ,KAMCC,EAAiB,OAG9B,SAAYH,GACR,4BACA,gCAFJ,CAAYA,MAAU,M,o8ECjJtB,8CACe,SAASI,EAAyBtM,EAAQuM,GACvD,GAAc,MAAVvM,EAAgB,MAAO,GAC3B,IACIC,EAAKnR,EADL6H,EAAS,YAA6BqJ,EAAQuM,GAGlD,GAAIzM,OAAO0M,sBAAuB,CAChC,IAAIC,EAAmB3M,OAAO0M,sBAAsBxM,GAEpD,IAAKlR,EAAI,EAAGA,EAAI2d,EAAiBzd,OAAQF,IACvCmR,EAAMwM,EAAiB3d,GACnByd,EAASG,QAAQzM,IAAQ,GACxBH,OAAOI,UAAUyM,qBAAqBvM,KAAKJ,EAAQC,KACxDtJ,EAAOsJ,GAAOD,EAAOC,IAIzB,OAAOtJ,I,gBCjBT+I,EAAOC,QAAU,EAAQ,M,6BCAzB,SAASiN,EAAMC,GACd,IAAI5O,EAAG9T,EAAG8C,EAAI,GAEd,GAAmB,kBAAR4f,GAAmC,kBAARA,EACrC5f,GAAO4f,OACD,GAAmB,kBAARA,EACjB,GAAI9lB,MAAM+lB,QAAQD,GACjB,IAAK5O,EAAE,EAAGA,EAAI4O,EAAI7d,OAAQiP,IACrB4O,EAAI5O,KACH9T,EAAIyiB,EAAMC,EAAI5O,OACjBhR,IAAQA,GAAO,KACfA,GAAO9C,QAKV,IAAK8T,KAAK4O,EACLA,EAAI5O,KACPhR,IAAQA,GAAO,KACfA,GAAOgR,GAMX,OAAOhR,EAGO,eAEd,IADA,IAAS8Y,EAAK7b,EAAV4E,EAAE,EAAW7B,EAAI,GACd6B,EAAIC,UAAUC,SAChB+W,EAAMhX,UAAUD,QACf5E,EAAI0iB,EAAM7G,MACb9Y,IAAQA,GAAO,KACfA,GAAO/C,GAIV,OAAO+C,I,uwECtCR,SAAS8f,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQnN,EAAKpF,GACpE,IACE,IAAIwS,EAAOL,EAAI/M,GAAKpF,GAChByS,EAAQD,EAAKC,MACjB,MAAOC,GAEP,YADAL,EAAOK,GAILF,EAAKG,KACPP,EAAQK,GAERG,QAAQR,QAAQK,GAAOI,KAAKP,EAAOC,GAIxB,SAASO,EAAkB/S,GACxC,OAAO,WACL,IAAIgT,EAAOtN,KACPuN,EAAO9e,UACX,OAAO,IAAI0e,SAAQ,SAAUR,EAASC,GACpC,IAAIF,EAAMpS,EAAGyF,MAAMuN,EAAMC,GAEzB,SAASV,EAAMG,GACbP,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQE,GAGlE,SAASF,EAAOU,GACdf,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASU,GAGnEX,OAAMY,OA/BZ,mC,6BCAe,SAASC,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,qCAFxB,mC,6BCAA,SAASC,EAAkBzX,EAAQ0X,GACjC,IAAK,IAAIvf,EAAI,EAAGA,EAAIuf,EAAMrf,OAAQF,IAAK,CACrC,IAAIwf,EAAaD,EAAMvf,GACvBwf,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD3O,OAAO4O,eAAe/X,EAAQ2X,EAAWrO,IAAKqO,IAInC,SAASK,EAAaT,EAAaU,EAAYC,GAG5D,OAFID,GAAYR,EAAkBF,EAAYhO,UAAW0O,GACrDC,GAAaT,EAAkBF,EAAaW,GACzCX,EAbT,mC,oHC0HeY,EA9GE,SAAoBC,GACnC,IAAIC,EAAUjgB,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,GAClF,OAAO,SAAUkgB,GACf,IAAIC,EAAeF,EAAQE,aACvBC,EAAqBH,EAAQI,UAC7BA,OAAmC,IAAvBD,GAAwCA,EACpDE,EAAOL,EAAQK,KACfC,EAAgBhD,YAAyB0C,EAAS,CAAC,eAAgB,YAAa,SAQpF,IAAIO,EAAkBF,EAalBG,EAAYC,YAAWV,EAAiBlP,YAAS,CACnDqP,aAAcA,EACdD,UAAWA,EACXI,KAAMA,GAAQJ,EAAUS,YACxBH,gBAAiBA,GAChBD,IACCK,EAA0BC,IAAMC,YAAW,SAAoBxB,EAAOyB,GACtDzB,EAAM0B,QAAxB,IAQIC,EAPAC,EAAW5B,EAAM4B,SACjBC,EAAQ5D,YAAyB+B,EAAO,CAAC,UAAW,aAKpD0B,EAAUP,EAAU3P,YAAS,GAAIoP,EAAUkB,aAAc9B,IAEzD+B,EAAOF,EAsBX,OApBoB,kBAATb,GAAqBD,KAG9BY,EAAQK,eAAcnB,EAElBG,IACFe,EAAOE,YAAc,CACnBN,MAAOA,EACPX,KAAMA,EACNhB,MAAO6B,KAMPd,IAAcgB,EAAKJ,QACrBI,EAAKJ,MAAQA,IAIGJ,IAAMW,cAActB,EAAWpP,YAAS,CAC1DiQ,IAAKG,GAAYH,EACjBC,QAASA,GACRK,OAqCL,OATAI,IAAqBb,EAAYV,GAS1BU,I,QC5GIb,IANf,SAAoBC,EAAiBC,GACnC,OAAOyB,EAAyB1B,EAAiBlP,YAAS,CACxDqP,aAAcA,KACbF,M,6BCPL,iHAEa0B,EAAa,CACtBC,MAAOpS,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACtCipB,MAAOrS,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACtCkpB,IAAKtS,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACpCmpB,QAASvS,IAAK5W,WAAW,GAAK,EAAK,EAAK,GACxCopB,MAAOxS,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACtCqpB,UAAWzS,IAAK5W,WAAW,EAAK,GAAK,EAAK,GAC1CspB,KAAM1S,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACrCupB,SAAU3S,IAAK5W,WAAW,EAAK,EAAK,GAAK,GACzCwpB,OAAQ5S,IAAK5W,WAAW,EAAK,EAAK,EAAK,GACvCypB,OAAQ7S,IAAK5W,WAAW,EAAK,GAAK,EAAK,GACvC0pB,SAAU9S,IAAK5W,WAAW,IAAM,IAAM,IAAM,GAC5C2pB,KAAM/S,IAAK5W,WAAW,GAAK,GAAK,GAAK,GACrC4pB,UAAWhT,IAAK5W,WAAW,IAAM,IAAM,IAAM,IAUpC6pB,GANHjT,IAAK5W,WAAW,EAAK,EAAK,EAAK,GAClC4W,IAAK5W,WAAW,EAAK,EAAK,EAAK,GAC/B4W,IAAK5W,WAAW,EAAK,EAAK,EAAK,GAC/B4W,IAAK5W,WAAW,EAAK,EAAK,EAAK,GAGZ,CACtB8pB,KAAM/S,IAAK/W,WAAW,EAAK,EAAK,GAChC+pB,EAAGhT,IAAK/W,WAAW,EAAK,EAAK,GAC7BgqB,EAAGjT,IAAK/W,WAAW,EAAK,EAAK,GAC7BiqB,EAAGlT,IAAK/W,WAAW,EAAK,EAAK,KAGpBue,EAAY,CACrBkC,KAAM,KACNyJ,MAAO,KACPC,SAAU,cACV5G,YAAc,aACdD,IAAK,cACL9E,QAAS,cACT4L,OAAQ,EAAM,cACdC,UAAW,EAAM,cACjBC,OAAQhrB,KAAKgI,KAAK,GAClBijB,OAAQjrB,KAAKgI,KAAK,GAClBkjB,GAAI,aACJC,aAAc,aACdC,aAAc,EAAM,KACpBtH,UAAW,cAAgB,IAC3BK,UAAW,oB,6BC/Cf,+mBAGWkH,EAA6B,qBAAXC,OACtB,SAASC,KAGT,SAASC,EAAiBC,EAASC,GACxC,MAA0B,oBAAZD,EAAyBA,EAAQC,GAASD,EAEnD,SAASE,EAAetF,GAC7B,MAAwB,kBAAVA,GAAsBA,GAAS,GAAKA,IAAU/Y,IAEvD,SAASse,EAAoBvF,GAClC,OAAOvmB,MAAM+lB,QAAQQ,GAASA,EAAQ,CAACA,GAYlC,SAASwF,EAAeC,EAAWC,GACxC,OAAO/rB,KAAK4H,IAAIkkB,GAAaC,GAAa,GAAKC,KAAKC,MAAO,GAEtD,SAASC,EAAeC,EAAMC,EAAMC,GACzC,OAAKC,EAAWH,GAII,oBAATC,EACFxT,YAAS,GAAIyT,EAAM,CACxBE,SAAUJ,EACVK,QAASJ,IAINxT,YAAS,GAAIwT,EAAM,CACxBG,SAAUJ,IAXHA,EAcJ,SAASM,EAAkBN,EAAMC,EAAMC,GAC5C,OAAIC,EAAWH,GACO,oBAATC,EACFxT,YAAS,GAAIyT,EAAM,CACxBK,YAAaP,EACbQ,WAAYP,IAITxT,YAAS,GAAIwT,EAAM,CACxBM,YAAaP,IAIG,oBAATA,EACFvT,YAAS,GAAIwT,EAAM,CACxBO,WAAYR,IAITvT,YAAS,GAAIuT,GAEf,SAASS,EAAgBT,EAAMC,EAAMC,GAC1C,OAAOC,EAAWH,GAAQ,CAACvT,YAAS,GAAIwT,EAAM,CAC5CG,SAAUJ,IACRE,GAAQ,CAACF,GAAQ,GAAIC,GAEpB,SAASS,EAAWC,EAASC,GAClC,IAkBIC,EAlBAC,EAASH,EAAQG,OACjBC,EAAQJ,EAAQI,MAChBC,EAAWL,EAAQK,SACnBC,EAAWN,EAAQM,SACnBC,EAAYP,EAAQO,UACpBd,EAAWO,EAAQP,SACnBe,EAAQR,EAAQQ,MAEpB,GAAIhB,EAAWC,GACb,GAAIW,GACF,GAAIH,EAAMQ,YAAcC,EAAsBjB,EAAUQ,EAAMhF,SAC5D,OAAO,OAEJ,IAAK0F,EAAgBV,EAAMR,SAAUA,GAC1C,OAAO,EAYX,OANiB,IAAba,GAAsBH,IAAWG,EACnCJ,GAAW,IACS,IAAXC,GAAoBG,IAAaH,KAC1CD,GAAW,IAGW,mBAAbA,GAA0BD,EAAMC,aAAeA,MAIrC,mBAAVM,GAAuBP,EAAMW,YAAcJ,MAI9B,mBAAbH,GAA0BJ,EAAMY,eAAiBR,MAIxDE,IAAcA,EAAUN,MAMvB,SAASa,EAAcd,EAASe,GACrC,IAAIX,EAAQJ,EAAQI,MAChBC,EAAWL,EAAQK,SACnBE,EAAYP,EAAQO,UACpBX,EAAcI,EAAQJ,YAE1B,GAAIJ,EAAWI,GAAc,CAC3B,IAAKmB,EAAS9F,QAAQ2E,YACpB,OAAO,EAGT,GAAIQ,GACF,GAAIY,EAAaD,EAAS9F,QAAQ2E,eAAiBoB,EAAapB,GAC9D,OAAO,OAEJ,IAAKe,EAAgBI,EAAS9F,QAAQ2E,YAAaA,GACxD,OAAO,EAIX,OAAwB,mBAAbS,GAAoD,YAA1BU,EAASE,MAAMC,SAAyBb,MAIzEE,IAAcA,EAAUQ,IAMvB,SAASL,EAAsBjB,EAAUxE,GAE9C,QADyB,MAAXA,OAAkB,EAASA,EAAQkG,iBAAmBH,GACtDvB,GAMT,SAASuB,EAAavB,GAC3B,IAO8BlG,EAP1B6H,EAAUtC,EAAoBW,GAClC,OAM8BlG,EANP6H,EAOhBC,KAAKC,UAAU/H,GAAO,SAAUgI,EAAGC,GACxC,OAAOC,EAAcD,GAAOzV,OAAO2V,KAAKF,GAAKG,OAAOC,QAAO,SAAUrP,EAAQrG,GAE3E,OADAqG,EAAOrG,GAAOsV,EAAItV,GACXqG,IACN,IAAMiP,KAON,SAASb,EAAgBltB,EAAGiC,GACjC,OAAOmsB,EAAiB/C,EAAoBrrB,GAAIqrB,EAAoBppB,IAM/D,SAASmsB,EAAiBpuB,EAAGiC,GAClC,OAAIjC,IAAMiC,UAICjC,WAAaiC,OAIpBjC,IAAKiC,GAAkB,kBAANjC,GAA+B,kBAANiC,KACpCqW,OAAO2V,KAAKhsB,GAAGosB,MAAK,SAAU5V,GACpC,OAAQ2V,EAAiBpuB,EAAEyY,GAAMxW,EAAEwW,QAYlC,SAAS6V,EAAiBtuB,EAAGiC,GAClC,GAAIjC,IAAMiC,EACR,OAAOjC,EAGT,IAAIuuB,EAAQhvB,MAAM+lB,QAAQtlB,IAAMT,MAAM+lB,QAAQrjB,GAE9C,GAAIssB,GAASP,EAAchuB,IAAMguB,EAAc/rB,GAAI,CAOjD,IANA,IAAIusB,EAAQD,EAAQvuB,EAAEwH,OAAS8Q,OAAO2V,KAAKjuB,GAAGwH,OAC1CinB,EAASF,EAAQtsB,EAAIqW,OAAO2V,KAAKhsB,GACjCysB,EAAQD,EAAOjnB,OACftH,EAAOquB,EAAQ,GAAK,GACpBI,EAAa,EAERrnB,EAAI,EAAGA,EAAIonB,EAAOpnB,IAAK,CAC9B,IAAImR,EAAM8V,EAAQjnB,EAAImnB,EAAOnnB,GAC7BpH,EAAKuY,GAAO6V,EAAiBtuB,EAAEyY,GAAMxW,EAAEwW,IAEnCvY,EAAKuY,KAASzY,EAAEyY,IAClBkW,IAIJ,OAAOH,IAAUE,GAASC,IAAeH,EAAQxuB,EAAIE,EAGvD,OAAO+B,EAMF,SAAS2sB,EAAoB5uB,EAAGiC,GACrC,GAAIjC,IAAMiC,GAAKA,IAAMjC,EACnB,OAAO,EAGT,IAAK,IAAIyY,KAAOzY,EACd,GAAIA,EAAEyY,KAASxW,EAAEwW,GACf,OAAO,EAIX,OAAO,EAGF,SAASuV,EAAc7iB,GAC5B,IAAK0jB,EAAmB1jB,GACtB,OAAO,EAIT,IAAI2jB,EAAO3jB,EAAE4jB,YAEb,GAAoB,qBAATD,EACT,OAAO,EAIT,IAAIE,EAAOF,EAAKpW,UAEhB,QAAKmW,EAAmBG,MAKnBA,EAAKrW,eAAe,iBAQ3B,SAASkW,EAAmB1jB,GAC1B,MAA6C,oBAAtCmN,OAAOI,UAAUuW,SAASrW,KAAKzN,GAGjC,SAAS4gB,EAAWjG,GACzB,MAAwB,kBAAVA,GAAsBvmB,MAAM+lB,QAAQQ,GAK7C,SAASoJ,EAAMC,GACpB,OAAO,IAAIlJ,SAAQ,SAAUR,GAC3B2J,WAAW3J,EAAS0J,MAQjB,SAASE,EAAkBC,GAChCrJ,QAAQR,UAAUS,KAAKoJ,GAAUC,OAAM,SAAUxJ,GAC/C,OAAOqJ,YAAW,WAChB,MAAMrJ,U,qHCnSCyJ,EAAyB,CAClCC,wBAAyB,CACrBC,KAAM,6BACNC,KAAM,+GAEVC,qBAAsB,CAClBF,KAAM,0BACNC,KAAM,mFAEVE,kBAAmB,CACfH,KAAM,sBACNC,KAAM,8EAEVG,iBAAkB,CACdJ,KAAM,sBACNC,KAAM,oFAEVI,wBAAyB,CACrBL,KAAM,6BACNC,KAAM,2EAEVK,aAAc,CACVN,KAAM,gBACNC,KAAM,+EAEVM,6BAA8B,CAC1BP,KAAM,sBACNC,KAAM,+IAEVO,oBAAqB,CACjBR,KAAM,wBACNC,KAAM,uGAEVQ,mBAAoB,CAChBT,KAAM,uBACNC,KAAM,sFAEVS,kBAAmB,CACfV,KAAM,gBACNC,KAAM,6IAEVU,mBAAoB,CAChBX,KAAM,iBACNC,KAAM,iGAEVW,mBAAoB,CAChBZ,KAAM,kBACNC,KAAM,mBAEVY,mBAAoB,CAChBb,KAAM,iBACNC,KAAM,wFAEVa,mBAAoB,CAChBd,KAAM,kBACNC,KAAM,mBAEVc,mBAAoB,CAChBf,KAAM,kBACNC,KAAM,oLAEVe,uBAAwB,CACpBhB,KAAM,2BACNC,KAAM,qJAGVgB,yBAA0B,CACtBjB,KAAM,6BACNC,KAAM,6HAEViB,4BAA6B,CACzBlB,KAAM,gCACNC,KAAM,oIAEVkB,yBAA0B,CACtBnB,KAAM,yBACNC,KAAM,6EAEVmB,sBAAuB,CACnBpB,KAAM,4BACNC,KAAM,8FAEVoB,sBAAuB,CACnBrB,KAAM,4BACNC,KAAM,gGAEVqB,oBAAqB,CACjBtB,KAAM,yBACNC,KAAM,wCAEVsB,wBAAyB,CACrBvB,KAAM,uBACNC,KAAM,6CAEVuB,2BAA4B,CACxBxB,KAAM,gCACNC,KAAM,mHAEVwB,kBAAmB,CACfzB,KAAM,sBACNC,KAAM,2BAEVyB,yBAA0B,CACtB1B,KAAM,+BACNC,KAAM,2FAEV0B,mBAAoB,CAChB3B,KAAM,uBACNC,KAAM,8CAEV2B,wBAAyB,CACrB5B,KAAM,4BACNC,KAAM,6DAEV4B,eAAgB,CACZ7B,KAAM,mBACNC,KAAM,4CAEV6B,iBAAkB,CACd9B,KAAM,sCACNC,KAAM,iFAEV8B,YAAa,CACT/B,KAAM,mBACNC,KAAM,6EAEV+B,iBAAkB,CACdhC,KAAM,qBACNC,KAAM,sBAEVgC,sBAAuB,CACnBjC,KAAM,0BACNC,KAAM,4BAEViC,yBAA0B,CACtBlC,KAAM,6BACNC,KAAM,+BAEVkC,iBAAkB,CACdnC,KAAM,oBACNC,KAAM,4FAEVmC,wBAAyB,CACrBpC,KAAM,4BACNC,KAAM,kKAEVoC,qBAAsB,CAClBrC,KAAM,yBACNC,KAAM,sOAEVqC,mBAAoB,CAChBtC,KAAM,uBACNC,KAAM,wDAEVsC,oBAAqB,CACjBvC,KAAM,0CACNC,KAAM,mEAEVuC,8BAA+B,CAC3BxC,KAAM,kDACNC,KAAM,qEAEVwC,sBAAuB,CACnBzC,KAAM,2BACNC,KAAM,mEAEVyC,2BAA4B,CACxB1C,KAAM,2BACNC,KAAM,wG,cASV,WAAY0C,EAAmBC,GAA/B,MACI,YAAMD,EAAWC,IAAa,K,OAC9B,EAAKzK,KAAO,kBAEZvP,OAAOia,eAAe,EAAMC,EAAgB9Z,W,EAgTpD,OAtTqC,iBAa1B,EAAA+Z,8BAAP,SAAqCC,GACjC,OAAO,IAAIF,EAAgBhD,EAAuBC,wBAAwBC,KACnEF,EAAuBC,wBAAwBE,KAAI,uBAAuB+C,IAO9E,EAAAC,2BAAP,WACI,OAAO,IAAIH,EAAgBhD,EAAuBI,qBAAqBF,KACnE,GAAGF,EAAuBI,qBAAqBD,OAOhD,EAAAiD,wBAAP,SAA+BC,GAC3B,OAAO,IAAIL,EAAgBhD,EAAuBK,kBAAkBH,KAC7DF,EAAuBK,kBAAkBF,KAAI,uBAAuBkD,IAOxE,EAAAC,4BAAP,SAAmCC,GAC/B,OAAO,IAAIP,EAAgBhD,EAAuBM,iBAAiBJ,KAC5DF,EAAuBM,iBAAiBH,KAAI,qBAAqBoD,IAMrE,EAAAC,uCAAP,SAA8CC,GAC1C,OAAO,IAAIT,EAAgBhD,EAAuBO,wBAAwBL,KACnEF,EAAuBO,wBAAwBJ,KAAI,YAAYsD,IAMnE,EAAAC,mBAAP,SAA0BC,EAAkBF,GACxC,OAAO,IAAIT,EAAgBhD,EAAuBQ,aAAaN,KACxDF,EAAuBQ,aAAaL,KAAI,0BAA0BsD,EAAS,0BAA0BE,EAASC,MAAM,KAAK,KAM7H,EAAAC,mCAAP,SAA0CJ,GACtC,OAAO,IAAIT,EAAgBhD,EAAuBS,6BAA6BP,KACxEF,EAAuBS,6BAA6BN,KAAI,0CAA0CsD,IAOtG,EAAAK,+BAAP,SAAsCC,GAClC,OAAO,IAAIf,EAAgBhD,EAAuBU,oBAAoBR,KAC/DF,EAAuBU,oBAAoBP,KAAI,kBAAkB4D,IAOrE,EAAAC,wBAAP,SAA+BC,EAAsBC,GACjD,OAAO,IAAIlB,EAAgBhD,EAAuBY,kBAAkBV,KAC7DF,EAAuBY,kBAAkBT,KAAI,mBAAmB8D,EAAY,eAAeC,IAM/F,EAAAC,yBAAP,WACI,OAAO,IAAInB,EAAgBhD,EAAuBa,mBAAmBX,KACjEF,EAAuBa,mBAAmBV,OAO3C,EAAAiE,yBAAP,SAAgCC,GAC5B,OAAO,IAAIrB,EAAgBhD,EAAuBc,mBAAmBZ,KAC9DF,EAAuBc,mBAAmBX,KAAI,MAAMkE,IAMxD,EAAAC,yBAAP,WACI,OAAO,IAAItB,EAAgBhD,EAAuBe,mBAAmBb,KACjEF,EAAuBe,mBAAmBZ,OAO3C,EAAAoE,yBAAP,SAAgCC,GAC5B,OAAO,IAAIxB,EAAgBhD,EAAuBgB,mBAAmBd,KAC9DF,EAAuBgB,mBAAmBb,KAAI,MAAMqE,IAMxD,EAAAC,yBAAP,WACI,OAAO,IAAIzB,EAAgBhD,EAAuBiB,mBAAmBf,KAAMF,EAAuBiB,mBAAmBd,OAMlH,EAAAuE,yCAAP,WACI,OAAO,IAAI1B,EAAgBhD,EAAuBkB,uBAAuBhB,KAClEF,EAAuBkB,uBAAuBf,KAAI,MAMtD,EAAAwE,2CAAP,WACI,OAAO,IAAI3B,EAAgBhD,EAAuBmB,yBAAyBjB,KACvEF,EAAuBmB,yBAAyBhB,OAMjD,EAAAyE,8CAAP,WACI,OAAO,IAAI5B,EAAgBhD,EAAuBoB,4BAA4BlB,KAC1EF,EAAuBoB,4BAA4BjB,OAMpD,EAAA0E,oCAAP,WACI,OAAO,IAAI7B,EAAgBhD,EAAuBqB,yBAAyBnB,KAAMF,EAAuBqB,yBAAyBlB,OAO9H,EAAA2E,iCAAP,SAAwCC,GACpC,OAAO,IAAI/B,EAAgBhD,EAAuBsB,sBAAsBpB,KAASF,EAAuBsB,sBAAsBnB,KAAI,iBAAiB4E,IAOhJ,EAAAC,mCAAP,SAA0CD,GACtC,OAAO,IAAI/B,EAAgBhD,EAAuBuB,sBAAsBrB,KAASF,EAAuBuB,sBAAsBpB,KAAI,iBAAiB4E,IAOhJ,EAAAE,0BAAP,SAAiCC,GAC7B,OAAO,IAAIlC,EAAgBhD,EAAuBwB,oBAAoBtB,KAASF,EAAuBwB,oBAAoBrB,KAAI,kBAAkB+E,IAO7I,EAAAC,8BAAP,SAAqCC,GACjC,OAAO,IAAIpC,EAAgBhD,EAAuByB,wBAAwBvB,KAASF,EAAuByB,wBAAwBtB,KAAI,oBAAoBiF,IAMvJ,EAAAC,+BAAP,WACI,OAAO,IAAIrC,EAAgBhD,EAAuB0B,2BAA2BxB,KAAM,GAAGF,EAAuB0B,2BAA2BvB,OAMrI,EAAAmF,6BAAP,WACI,OAAO,IAAItC,EAAgBhD,EAAuB2B,kBAAkBzB,KAAM,GAAGF,EAAuB2B,kBAAkBxB,OAMnH,EAAAoF,oCAAP,WACI,OAAO,IAAIvC,EAAgBhD,EAAuB4B,yBAAyB1B,KAAM,GAAGF,EAAuB4B,yBAAyBzB,OAMjI,EAAAqF,iCAAP,WACI,OAAO,IAAIxC,EAAgBhD,EAAuB6B,mBAAmB3B,KAAMF,EAAuB6B,mBAAmB1B,OAMlH,EAAAsF,mCAAP,WACI,OAAO,IAAIzC,EAAgBhD,EAAuB8B,wBAAwB5B,KAAMF,EAAuB8B,wBAAwB3B,OAM5H,EAAAuF,0BAAP,WACI,OAAO,IAAI1C,EAAgBhD,EAAuB+B,eAAe7B,KAAMF,EAAuB+B,eAAe5B,OAM1G,EAAAwF,uBAAP,WACI,OAAO,IAAI3C,EAAgBhD,EAAuBgC,iBAAiB9B,KAAM,GAAGF,EAAuBgC,iBAAiB7B,OAOjH,EAAAyF,0BAAP,SAAiCC,GAC7B,OAAO,IAAI7C,EAAgBhD,EAAuBiC,YAAY/B,KAAM,GAAGF,EAAuBiC,YAAY9B,KAAO0F,IAM9G,EAAAC,4BAAP,WACI,OAAO,IAAI9C,EAAgBhD,EAAuBkC,iBAAiBhC,KAAM,GAAGF,EAAuBkC,iBAAiB/B,OAMjH,EAAA4F,iCAAP,WACI,OAAO,IAAI/C,EAAgBhD,EAAuBmC,sBAAsBjC,KAAM,GAAGF,EAAuBmC,sBAAsBhC,OAM3H,EAAA6F,oCAAP,WACI,OAAO,IAAIhD,EAAgBhD,EAAuBoC,yBAAyBlC,KAAM,GAAGF,EAAuBoC,yBAAyBjC,OAMjI,EAAA8F,4BAAP,WACI,OAAO,IAAIjD,EAAgBhD,EAAuBqC,iBAAiBnC,KAAM,GAAGF,EAAuBqC,iBAAiBlC,OAMjH,EAAA+F,6BAAP,WACI,OAAO,IAAIlD,EAAgBhD,EAAuBsC,wBAAwBpC,KAAM,GAAGF,EAAuBsC,wBAAwBnC,OAM/H,EAAAgG,2BAAP,WACI,OAAO,IAAInD,EAAgBhD,EAAuBuC,qBAAqBrC,KAAMF,EAAuBuC,qBAAqBpC,OAMtH,EAAAiG,8BAAP,WACI,OAAO,IAAIpD,EAAgBhD,EAAuBwC,mBAAmBtC,KAAMF,EAAuBwC,mBAAmBrC,OAMlH,EAAAkG,+BAAP,WACI,OAAO,IAAIrD,EAAgBhD,EAAuByC,oBAAoBvC,KAAMF,EAAuByC,oBAAoBtC,OAMpH,EAAAmG,sCAAP,WACI,OAAO,IAAItD,EAAgBhD,EAAuB0C,8BAA8BxC,KAAMF,EAAuB0C,8BAA8BvC,OAEnJ,E,CAtTqC,M,gBCzKnCzX,EAAOC,QAAUC,EAAQ,IAARA,I,wFCNnB,cAuHA,OAhHW,EAAA2d,gBAAP,SAAuBC,GACnB,GAAIC,EAAYC,QAAQF,GACpB,MAAM,IAAgBlD,4BAA4BkD,GAEtD,IACMG,EADkB,uCACQC,KAAKJ,GACrC,IAAKG,GAAWA,EAAQ3uB,OAAS,EAC7B,MAAM,IAAgBorB,wBAAwB,6BAA6BhF,KAAKC,UAAUmI,IAO9F,MALuC,CACnCK,OAAQF,EAAQ,GAChBG,WAAYH,EAAQ,GACpBI,OAAQJ,EAAQ,KAUjB,EAAAD,QAAP,SAAezwB,GACX,MAAuB,qBAARA,IAAwBA,GAAO,IAAMA,EAAI+B,QAOrD,EAAAgvB,WAAP,SAAkBC,GACd,GAAIA,IAAWR,EAAYC,QAAQO,GAC/B,IACI,IAAMC,EAAM9I,KAAK+I,MAAMF,GACvB,OAAmC,IAA5Bne,OAAO2V,KAAKyI,GAAKlvB,OAC1B,MAAOovB,IAEb,OAAO,GAGJ,EAAAC,WAAP,SAAkBpxB,EAAaqxB,GAC3B,OAA+B,IAAxBrxB,EAAIyf,QAAQ4R,IAGhB,EAAAC,SAAP,SAAgBtxB,EAAaqxB,GACzB,OAAQrxB,EAAI+B,QAAUsvB,EAAOtvB,QAAY/B,EAAIuxB,YAAYF,KAAarxB,EAAI+B,OAASsvB,EAAOtvB,QAQvF,EAAAyvB,oBAAP,SAA8BzK,GAC1B,IAAI0K,EACEC,EAAK,MACLL,EAAS,oBACTM,EAAS,SAACt0B,GAAsB,OAAAu0B,mBAAmBA,mBAAmBv0B,EAAEw0B,QAAQH,EAAI,QACpFT,EAAU,GAEhB,IADAQ,EAAQJ,EAAOV,KAAK5J,GACb0K,GACHR,EAAIU,EAAOF,EAAM,KAAOE,EAAOF,EAAM,IACrCA,EAAQJ,EAAOV,KAAK5J,GAExB,OAAOkK,GAQJ,EAAAa,iBAAP,SAAwBC,GACpB,OAAOA,EAAIC,KAAI,SAAAC,GAAS,OAAAA,EAAMC,WAO3B,EAAAC,4BAAP,SAAmCJ,GAC/B,OAAOA,EAAIK,QAAO,SAAAH,GACd,OAAQzB,EAAYC,QAAQwB,OAQ7B,EAAAI,gBAAP,SAA0BryB,GACtB,IACI,OAAOmoB,KAAK+I,MAAMlxB,GACpB,MAAOmxB,GACL,OAAO,OASR,EAAAmB,aAAP,SAAoBC,EAAiB7M,GAOjC,OAFsB,IAAI8M,OAAOD,EAAQV,QAAQ,MAAO,SAASA,QAAQ,MAAO,QAEnEY,KAAK/M,IAE1B,E,iCClIA,SAAS5F,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQnN,EAAKpF,GACpE,IACE,IAAIwS,EAAOL,EAAI/M,GAAKpF,GAChByS,EAAQD,EAAKC,MACjB,MAAOC,GAEP,YADAL,EAAOK,GAILF,EAAKG,KACPP,EAAQK,GAERG,QAAQR,QAAQK,GAAOI,KAAKP,EAAOC,GAIxB,SAASO,EAAkB/S,GACxC,OAAO,WACL,IAAIgT,EAAOtN,KACPuN,EAAO9e,UACX,OAAO,IAAI0e,SAAQ,SAAUR,EAASC,GACpC,IAAIF,EAAMpS,EAAGyF,MAAMuN,EAAMC,GAEzB,SAASV,EAAMG,GACbP,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQE,GAGlE,SAASF,EAAOU,GACdf,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASU,GAGnEX,OAAMY,OA/BZ,mC,2ECIe,SAAS4R,EAAeX,EAAKlwB,GAC1C,OCLa,SAAyBkwB,GACtC,GAAIj4B,MAAM+lB,QAAQkS,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BA,EAAKlwB,GACjD,GAAsB,qBAAX8wB,QAA4BA,OAAOC,YAAY/f,OAAOkf,GAAjE,CACA,IAAIc,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKlS,EAET,IACE,IAAK,IAAiCmS,EAA7BC,EAAKnB,EAAIY,OAAOC,cAAmBE,GAAMG,EAAKC,EAAGC,QAAQ5S,QAChEsS,EAAKO,KAAKH,EAAG5S,QAETxe,GAAKgxB,EAAK9wB,SAAWF,GAH8CixB,GAAK,IAK9E,MAAOjS,GACPkS,GAAK,EACLC,EAAKnS,EACL,QACA,IACOiS,GAAsB,MAAhBI,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIH,EAAI,MAAMC,GAIlB,OAAOH,GFnBuB,CAAqBd,EAAKlwB,IAAM,OAAAwxB,EAAA,GAA2BtB,EAAKlwB,IGLjF,WACb,MAAM,IAAIqf,UAAU,6IHIgF,K,0FIKzFoS,EACS,CACdrJ,KAAM,mBACNC,KAAM,gEAHDoJ,EAKW,CAChBrJ,KAAM,qBACNC,KAAM,mDAPDoJ,EASsB,CAC3BrJ,KAAM,8BACNC,KAAM,mEAXDoJ,EAac,CACnBrJ,KAAM,qBACNC,KAAM,oEAfDoJ,EAiBO,CACZrJ,KAAM,mBACNC,KAAM,qHAnBDoJ,EAqBqB,CAC1BrJ,KAAM,mBACNC,KAAM,qFAvBDoJ,EAyB+B,CACpCrJ,KAAM,yCACNC,KAAM,yGA3BDoJ,EA6BgB,CACrBrJ,KAAM,wBACNC,KAAM,+EA/BDoJ,EAiC0B,CAC/BrJ,KAAM,kCACNC,KAAM,2EAnCDoJ,EAqCc,CACnBrJ,KAAM,0BACNC,KAAM,kLAvCDoJ,EAyCS,CACdrJ,KAAM,qBACNC,KAAM,4GA3CDoJ,EA6CS,CACdrJ,KAAM,qBACNC,KAAM,yDA/CDoJ,EAiDW,CAChBrJ,KAAM,iBACNC,KAAM,4BAnDDoJ,EAqDiB,CACtBrJ,KAAM,yBACNC,KAAM,qDAvDDoJ,EAyDkB,CACvBrJ,KAAM,yBACNC,KAAM,sDA3DDoJ,EA6Dc,CACnBrJ,KAAM,qBACNC,KAAM,oKA/DDoJ,EAiE8B,CACnCrJ,KAAM,sBACNC,KAAM,uIAnEDoJ,EAqEuB,CAC5BrJ,KAAM,sBACNC,KAAM,uFAvEDoJ,EAyEqB,CAC1BrJ,KAAM,4BACNC,KAAM,sDA3EDoJ,EA6EuB,CAC5BrJ,KAAM,mBACNC,KAAM,wHA/EDoJ,EAiFO,CACZrJ,KAAM,mBACNC,KAAM,2JAnFDoJ,EAqFe,CACpBrJ,KAAM,4BACNC,KAAM,kGAvFDoJ,EAyFiB,CACtBrJ,KAAM,+BACNC,KAAM,uCA3FDoJ,EA6F4B,CACjCrJ,KAAM,4CACNC,KAAM,iDA/FDoJ,EAiGe,CACpBrJ,KAAM,4BACNC,KAAM,8BAnGDoJ,EAqGU,CACfrJ,KAAM,6BACNC,KAAM,kGAvGDoJ,EAyGS,CACdrJ,KAAM,qBACNC,KAAM,sBA3GDoJ,EA6GgB,CACrBrJ,KAAM,0BACNC,KAAM,2EA/GDoJ,EAiHQ,CACbrJ,KAAM,oBACNC,KAAM,yBAnHDoJ,EAqHc,CACnBrJ,KAAM,0BACNC,KAAM,4DAvHDoJ,EAyHU,CACfrJ,KAAM,sBACNC,KAAM,6IA3HDoJ,EA6HS,CACdrJ,KAAM,qBACNC,KAAM,mFA/HDoJ,EAiIqB,CAC1BrJ,KAAM,2BACNC,KAAM,0D,cASV,WAAY0C,EAAmBC,GAA/B,MACI,YAAMD,EAAWC,IAAa,K,OAE9Bha,OAAOia,eAAe,EAAMyG,EAAiBtgB,WAC7C,EAAKmP,KAAO,mB,EAgQpB,OAtQsC,iBAa3B,EAAAoR,4BAAP,SAAmChG,GAC/B,OAAO,IAAI+F,EAAiBD,EAAyCrJ,KAC9DqJ,EAAyCpJ,KAAI,WAAWsD,IAO5D,EAAAiG,8BAAP,SAAqCjG,GACjC,OAAO,IAAI+F,EAAiBD,EAA2CrJ,KAChEqJ,EAA2CpJ,KAAI,WAAWsD,IAO9D,EAAAkG,oCAAP,SAA2CC,GACvC,OAAO,IAAIJ,EAAiBD,EAAsDrJ,KAC3EqJ,EAAsDpJ,KAAI,kBAAkByJ,IAMhF,EAAAC,8BAAP,WACI,OAAO,IAAIL,EAAiBD,EAA8CrJ,KAAMqJ,EAA8CpJ,OAO3H,EAAA2J,qBAAP,SAA4BC,GACxB,OAAO,IAAIP,EAAiBD,EAAuCrJ,KAASqJ,EAAuCpJ,KAAI,eAAe4J,IAMnI,EAAAC,mCAAP,WACI,OAAO,IAAIR,EAAiBD,EAAqDrJ,KAAMqJ,EAAqDpJ,OAMzI,EAAA8J,6CAAP,WACI,OAAO,IAAIT,EAAiBD,EAA+DrJ,KAAMqJ,EAA+DpJ,OAM7J,EAAA+J,8BAAP,WACI,OAAO,IAAIV,EAAiBD,EAAgDrJ,KAAMqJ,EAAgDpJ,OAM/H,EAAAgK,wCAAP,WACI,OAAO,IAAIX,EAAiBD,EAA0DrJ,KAAMqJ,EAA0DpJ,OAMnJ,EAAAiK,iCAAP,WACI,OAAO,IAAIZ,EAAiBD,EAA8CrJ,KAAMqJ,EAA8CpJ,OAO3H,EAAAkK,uBAAP,SAA8B5G,GAC1B,IAAIX,EAAeyG,EAAyCpJ,KAE5D,OADA2C,EAAgB,IAAY4D,QAAQjD,GAAuDX,EAAvCA,EAAY,aAAaW,EACtE,IAAI+F,EAAiBD,EAAyCrJ,KAAM4C,IAOxE,EAAAwH,8BAAP,WACI,OAAO,IAAId,EAAiBD,EAAyCrJ,KAAMqJ,EAAyCpJ,OAMjH,EAAAoK,yBAAP,WACI,OAAO,IAAIf,EAAiBD,EAA2CrJ,KACnEqJ,EAA2CpJ,OAM5C,EAAAqK,+BAAP,WACI,OAAO,IAAIhB,EAAiBD,EAAiDrJ,KACzEqJ,EAAiDpJ,OAMlD,EAAAsK,gCAAP,WACI,OAAO,IAAIjB,EAAiBD,EAAkDrJ,KAC1EqJ,EAAkDpJ,OAOnD,EAAAuK,4BAAP,SAAmCC,GAC/B,OAAO,IAAInB,EAAiBD,EAA8CrJ,KACnEqJ,EAA8CpJ,KAAI,kCAAkCwK,IAMxF,EAAAC,qCAAP,WACI,OAAO,IAAIpB,EAAiBD,EAA8DrJ,KACtFqJ,EAA8DpJ,OAO/D,EAAA0K,qCAAP,WACI,OAAO,IAAIrB,EAAiBD,EAAuDrJ,KAC/EqJ,EAAuDpJ,OAMxD,EAAA2K,mCAAP,WACI,OAAO,IAAItB,EAAiBD,EAAqDrJ,KAAMqJ,EAAqDpJ,OAMzI,EAAA4K,qCAAP,WACI,OAAO,IAAIvB,EAAiBD,EAAuDrJ,KAAMqJ,EAAuDpJ,OAM7I,EAAA6K,qBAAP,WACI,OAAO,IAAIxB,EAAiBD,EAAuCrJ,KAAMqJ,EAAuCpJ,OAM7G,EAAA8K,6BAAP,SAAoCC,GAChC,OAAO,IAAI1B,EAAiBD,EAA+CrJ,KAASqJ,EAA+CpJ,KAAI,iBAAiB+K,IAMrJ,EAAAC,0CAAP,WACI,OAAO,IAAI3B,EAAiBD,EAA4DrJ,KACpFqJ,EAA4DpJ,OAM7D,EAAAiL,+BAAP,WACI,OAAO,IAAI5B,EAAiBD,EAAiDrJ,KACzEqJ,EAAiDpJ,OAMlD,EAAAkL,6BAAP,WACI,OAAO,IAAI7B,EAAiBD,EAA0CrJ,KAClEqJ,EAA0CpJ,OAM3C,EAAAmL,6BAAP,WACI,OAAO,IAAI9B,EAAiBD,EAA+CrJ,KACvEqJ,EAA+CpJ,OAMhD,EAAA2F,4BAAP,WACI,OAAO,IAAI0D,EAAiBD,EAAyCrJ,KAAM,GAAGqJ,EAAyCpJ,OAMpH,EAAAoL,iCAAP,WACI,OAAO,IAAI/B,EAAiBD,EAAgDrJ,KAAMqJ,EAAgDpJ,OAM/H,EAAAqL,2BAAP,WACI,OAAO,IAAIhC,EAAiBD,EAAwCrJ,KAAMqJ,EAAwCpJ,OAM/G,EAAAsL,iCAAP,WACI,OAAO,IAAIjC,EAAiBD,EAA8CrJ,KAAMqJ,EAA8CpJ,OAM3H,EAAAuL,6BAAP,SAAoCC,EAAmBhI,GACnD,OAAO,IAAI6F,EAAiBD,EAA0CrJ,KAASqJ,EAA0CpJ,KAAI,4BAA4BwL,EAAS,0BAA0BhI,EAASC,MAAM,KAAK,KAM7M,EAAAgI,4BAAP,SAAmCD,EAAmBhI,GAClD,OAAO,IAAI6F,EAAiBD,EAAyCrJ,KAASqJ,EAAyCpJ,KAAI,4BAA4BwL,EAAS,0BAA0BhI,EAASC,MAAM,KAAK,KAM3M,EAAAiI,wCAAP,SAA+ClI,GAC3C,OAAO,IAAI6F,EAAiBD,EAAqDrJ,KAASqJ,EAAqDpJ,KAAI,0BAA0BwD,EAASC,MAAM,KAAK,KAEzM,E,CAtQsC,M,6BCpJtC,+CAKe,SAASkI,EAAWC,GACjC,GAAsB,kBAAXA,EACT,MAAM,IAAIC,MAA6GC,YAAuB,IAGhJ,OAAOF,EAAOG,OAAO,GAAGC,cAAgBJ,EAAOK,MAAM,K,iCCL3CC,E,kCAAZ,SAAYA,GACR,gCACA,oCACA,oCACA,+CACA,mDACA,mDACA,kEACA,yCACA,6CACA,6CACA,mDACA,+CACA,kCACA,kCACA,sCACA,sCACA,8BAjBJ,CAAYA,MAAS,M,6BCLN,SAASC,EAAgBpF,EAAKje,EAAKqN,GAYhD,OAXIrN,KAAOie,EACTpe,OAAO4O,eAAewP,EAAKje,EAAK,CAC9BqN,MAAOA,EACPiB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZyP,EAAIje,GAAOqN,EAGN4Q,EAZT,mC,kFCUaqF,EACQ,CACbrM,KAAM,mBACNC,KAAM,uC,cAwBV,WAAY0C,EAAoBC,EAAuB0J,GAAvD,WACUtI,EAAcpB,EAAkBD,EAAS,KAAKC,EAAiBD,E,OACrE,cAAMqB,IAAY,KAClBpb,OAAOia,eAAe,EAAM0J,EAAUvjB,WAEtC,EAAK2Z,UAAYA,GAAa,IAAUzX,aACxC,EAAK0X,aAAeA,GAAgB,GACpC,EAAK4J,SAAWF,GAAY,GAC5B,EAAKnU,KAAO,Y,EAUpB,OAnC+B,iBAgCpB,EAAAsU,sBAAP,SAA6BC,GACzB,OAAO,IAAIH,EAAUF,EAAiCrM,KAASqM,EAAiCpM,KAAI,KAAKyM,IAEjH,E,CAnC+BZ,Q,6BCpB/B,qDAEe,SAASa,EAAWC,EAAMC,GAMvC,OAAOnU,WAAc,WACnB,OAAY,MAARkU,GAAwB,MAARC,EACX,KAGF,SAAUC,GACfC,YAAOH,EAAME,GACbC,YAAOF,EAAMC,MAEd,CAACF,EAAMC,M,8BCjBG,SAAST,EAAgBpF,EAAKje,EAAKqN,GAYhD,OAXIrN,KAAOie,EACTpe,OAAO4O,eAAewP,EAAKje,EAAK,CAC9BqN,MAAOA,EACPiB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZyP,EAAIje,GAAOqN,EAGN4Q,ECVT,SAASgG,EAAQC,EAAQC,GACvB,IAAI3O,EAAO3V,OAAO2V,KAAK0O,GAEvB,GAAIrkB,OAAO0M,sBAAuB,CAChC,IAAI6X,EAAUvkB,OAAO0M,sBAAsB2X,GACvCC,IAAgBC,EAAUA,EAAQhF,QAAO,SAAUiF,GACrD,OAAOxkB,OAAOykB,yBAAyBJ,EAAQG,GAAK/V,eAEtDkH,EAAK4K,KAAKhgB,MAAMoV,EAAM4O,GAGxB,OAAO5O,EAGM,SAAS+O,EAAe7tB,GACrC,IAAK,IAAI7H,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIkR,EAAyB,MAAhBjR,UAAUD,GAAaC,UAAUD,GAAK,GAE/CA,EAAI,EACNo1B,EAAQpkB,OAAOE,IAAS,GAAMzF,SAAQ,SAAU0F,GAC9C,EAAetJ,EAAQsJ,EAAKD,EAAOC,OAE5BH,OAAO2kB,0BAChB3kB,OAAO4kB,iBAAiB/tB,EAAQmJ,OAAO2kB,0BAA0BzkB,IAEjEkkB,EAAQpkB,OAAOE,IAASzF,SAAQ,SAAU0F,GACxCH,OAAO4O,eAAe/X,EAAQsJ,EAAKH,OAAOykB,yBAAyBvkB,EAAQC,OAKjF,OAAOtJ,E,iECjCM,SAASguB,EAAQzG,GAa9B,OATEyG,EADoB,oBAAX/E,QAAoD,kBAApBA,OAAOC,SACtC,SAAiB3B,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAX0B,QAAyB1B,EAAI3H,cAAgBqJ,QAAU1B,IAAQ0B,OAAO1f,UAAY,gBAAkBge,IAI9GA,GAbjB,mC,6BCAA,+CACe,SAAS0G,EAAeC,EAAUC,GAC/CD,EAAS3kB,UAAYJ,OAAO1Y,OAAO09B,EAAW5kB,WAC9C2kB,EAAS3kB,UAAUqW,YAAcsO,EACjC,YAAeA,EAAUC,K,6BCJ3B,8CAoGWC,EAAgB,IAjGM,WAC/B,SAASC,IACP1kB,KAAK2kB,MAAQ,GACb3kB,KAAK4kB,aAAe,EAEpB5kB,KAAK6kB,SAAW,SAAUrO,GACxBA,KAGFxW,KAAK8kB,cAAgB,SAAUtO,GAC7BA,KAIJ,IAAIuO,EAASL,EAAc9kB,UA+E3B,OA7EAmlB,EAAOC,MAAQ,SAAexO,GAC5BxW,KAAK4kB,eACL,IAAI5e,EAASwQ,IAOb,OANAxW,KAAK4kB,eAEA5kB,KAAK4kB,cACR5kB,KAAKilB,QAGAjf,GAGT+e,EAAOG,SAAW,SAAkB1O,GAClC,IAAI2O,EAAQnlB,KAERA,KAAK4kB,aACP5kB,KAAK2kB,MAAM5E,KAAKvJ,GAEhBD,aAAkB,WAChB4O,EAAMN,SAASrO,OASrBuO,EAAOK,WAAa,SAAoB5O,GACtC,IAAI6O,EAASrlB,KAEb,OAAO,WACL,IAAK,IAAIslB,EAAO72B,UAAUC,OAAQ6e,EAAO,IAAI9mB,MAAM6+B,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhY,EAAKgY,GAAQ92B,UAAU82B,GAGzBF,EAAOH,UAAS,WACd1O,EAASzW,WAAM,EAAQwN,QAK7BwX,EAAOE,MAAQ,WACb,IAAIO,EAASxlB,KAET2kB,EAAQ3kB,KAAK2kB,MACjB3kB,KAAK2kB,MAAQ,GAETA,EAAMj2B,QACR6nB,aAAkB,WAChBiP,EAAOV,eAAc,WACnBH,EAAM1qB,SAAQ,SAAUuc,GACtBgP,EAAOX,SAASrO,aAY1BuO,EAAOU,kBAAoB,SAA2BnrB,GACpD0F,KAAK6kB,SAAWvqB,GAQlByqB,EAAOW,uBAAyB,SAAgCprB,GAC9D0F,KAAK8kB,cAAgBxqB,GAGhBoqB,EA7FwB,K,6BCHjC,qJAYA,SAASre,EAAM2G,GACb,IAAIhW,EAAMvI,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,EAC1EF,EAAME,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,EAQ9E,OAAO9H,KAAKqQ,IAAIrQ,KAAK4H,IAAIyI,EAAKgW,GAAQze,GA8FjC,SAASo3B,EAAeC,GAE7B,GAAIA,EAAMC,KACR,OAAOD,EAGT,GAAwB,MAApBA,EAAMhD,OAAO,GACf,OAAO+C,EA3FJ,SAAkBC,GACvBA,EAAQA,EAAME,OAAO,GACrB,IAAIC,EAAK,IAAI5G,OAAO,OAAO6G,OAAOJ,EAAMl3B,QAAU,EAAI,EAAI,EAAG,KAAM,KAC/Du3B,EAASL,EAAMxH,MAAM2H,GAQzB,OANIE,GAA+B,IAArBA,EAAO,GAAGv3B,SACtBu3B,EAASA,EAAOtH,KAAI,SAAU1X,GAC5B,OAAOA,EAAIA,MAIRgf,EAAS,MAAMD,OAAyB,IAAlBC,EAAOv3B,OAAe,IAAM,GAAI,KAAKs3B,OAAOC,EAAOtH,KAAI,SAAU1X,EAAGN,GAC/F,OAAOA,EAAQ,EAAIuf,SAASjf,EAAG,IAAMtgB,KAAKsQ,MAAMivB,SAASjf,EAAG,IAAM,IAAM,KAAQ,OAC/Ekf,KAAK,MAAO,KAAO,GA8EEC,CAASR,IAGjC,IAAIS,EAAST,EAAMxZ,QAAQ,KACvByZ,EAAOD,EAAMU,UAAU,EAAGD,GAE9B,IAAsD,IAAlD,CAAC,MAAO,OAAQ,MAAO,QAAQja,QAAQyZ,GACzC,MAAM,IAAInD,MAAuLC,YAAuB,EAAGiD,IAG7N,IAAIW,EAASX,EAAMU,UAAUD,EAAS,EAAGT,EAAMl3B,OAAS,GAAG4rB,MAAM,KAIjE,MAAO,CACLuL,KAAMA,EACNU,OALFA,EAASA,EAAO5H,KAAI,SAAU3R,GAC5B,OAAOwZ,WAAWxZ,OAgBf,SAASyZ,EAAeb,GAC7B,IAAIC,EAAOD,EAAMC,KACbU,EAASX,EAAMW,OAYnB,OAV6B,IAAzBV,EAAKzZ,QAAQ,OAEfma,EAASA,EAAO5H,KAAI,SAAU1X,EAAGzY,GAC/B,OAAOA,EAAI,EAAI03B,SAASjf,EAAG,IAAMA,MAED,IAAzB4e,EAAKzZ,QAAQ,SACtBma,EAAO,GAAK,GAAGP,OAAOO,EAAO,GAAI,KACjCA,EAAO,GAAK,GAAGP,OAAOO,EAAO,GAAI,MAG5B,GAAGP,OAAOH,EAAM,KAAKG,OAAOO,EAAOJ,KAAK,MAAO,KAYjD,SAASO,EAAiBC,EAAYC,GAC3C,IAAIC,EAAOC,EAAaH,GACpBI,EAAOD,EAAaF,GACxB,OAAQjgC,KAAK4H,IAAIs4B,EAAME,GAAQ,MAASpgC,KAAKqQ,IAAI6vB,EAAME,GAAQ,KAY1D,SAASD,EAAalB,GAE3B,IAAIoB,EAAqB,SADzBpB,EAAQD,EAAeC,IACPC,KAAiBF,EAlH5B,SAAkBC,GAEvB,IACIW,GAFJX,EAAQD,EAAeC,IAEHW,OAChBU,EAAIV,EAAO,GACXv8B,EAAIu8B,EAAO,GAAK,IAChB/rB,EAAI+rB,EAAO,GAAK,IAChBr/B,EAAI8C,EAAIrD,KAAKqQ,IAAIwD,EAAG,EAAIA,GAExBzG,EAAI,SAAWkT,GACjB,IAAItJ,EAAIlP,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,IAAMwY,EAAIggB,EAAI,IAAM,GAC3F,OAAOzsB,EAAItT,EAAIP,KAAK4H,IAAI5H,KAAKqQ,IAAI2G,EAAI,EAAG,EAAIA,EAAG,IAAK,IAGlDkoB,EAAO,MACPmB,EAAM,CAACrgC,KAAKsQ,MAAa,IAAPlD,EAAE,IAAWpN,KAAKsQ,MAAa,IAAPlD,EAAE,IAAWpN,KAAKsQ,MAAa,IAAPlD,EAAE,KAOxE,MALmB,SAAf6xB,EAAMC,OACRA,GAAQ,IACRmB,EAAIjH,KAAKwG,EAAO,KAGXE,EAAe,CACpBZ,KAAMA,EACNU,OAAQS,IA0FsCE,CAAStB,IAAQW,OAASX,EAAMW,OAOhF,OANAS,EAAMA,EAAIrI,KAAI,SAAU1J,GAGtB,OAFAA,GAAO,MAEO,OAAUA,EAAM,MAAQtuB,KAAK8V,KAAKwY,EAAM,MAAS,MAAO,QAGjEkS,QAAQ,MAASH,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAAII,QAAQ,IAwBvE,SAASC,EAAKzB,EAAO5Y,GAS1B,OARA4Y,EAAQD,EAAeC,GACvB5Y,EAAQ3G,EAAM2G,GAEK,QAAf4Y,EAAMC,MAAiC,QAAfD,EAAMC,OAChCD,EAAMC,MAAQ,KAGhBD,EAAMW,OAAO,GAAKvZ,EACXyZ,EAAeb,GAUjB,SAAS0B,EAAO1B,EAAO2B,GAI5B,GAHA3B,EAAQD,EAAeC,GACvB2B,EAAclhB,EAAMkhB,IAEe,IAA/B3B,EAAMC,KAAKzZ,QAAQ,OACrBwZ,EAAMW,OAAO,IAAM,EAAIgB,OAClB,IAAmC,IAA/B3B,EAAMC,KAAKzZ,QAAQ,OAC5B,IAAK,IAAI5d,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1Bo3B,EAAMW,OAAO/3B,IAAM,EAAI+4B,EAI3B,OAAOd,EAAeb,GAUjB,SAAS4B,EAAQ5B,EAAO2B,GAI7B,GAHA3B,EAAQD,EAAeC,GACvB2B,EAAclhB,EAAMkhB,IAEe,IAA/B3B,EAAMC,KAAKzZ,QAAQ,OACrBwZ,EAAMW,OAAO,KAAO,IAAMX,EAAMW,OAAO,IAAMgB,OACxC,IAAmC,IAA/B3B,EAAMC,KAAKzZ,QAAQ,OAC5B,IAAK,IAAI5d,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1Bo3B,EAAMW,OAAO/3B,KAAO,IAAMo3B,EAAMW,OAAO/3B,IAAM+4B,EAIjD,OAAOd,EAAeb,K,6BCtRxB,+CACe,SAAS6B,EAAUlD,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI3W,UAAU,sDAGtB0W,EAAS3kB,UAAYJ,OAAO1Y,OAAO09B,GAAcA,EAAW5kB,UAAW,CACrEqW,YAAa,CACXjJ,MAAOuX,EACPpW,UAAU,EACVD,cAAc,KAGdsW,GAAY,YAAeD,EAAUC,K,8BCX3C,SAASkD,IAEP,GAC4C,qBAAnCC,gCAC4C,oBAA5CA,+BAA+BD,SAcxC,IAEEC,+BAA+BD,SAASA,GACxC,MAAOla,GAGPtH,QAAQ+G,MAAMO,IAOhBka,GACAtoB,EAAOC,QAAUC,EAAQ,M,6BClC3B,gEAGe,SAASsoB,EAAaC,GACnC,IAAIC,EAA4B,cAChC,OAAO,WACL,IACI9hB,EADA+hB,EAAQ,YAAeF,GAG3B,GAAIC,EAA2B,CAC7B,IAAIE,EAAY,YAAehoB,MAAMiW,YACrCjQ,EAASiiB,QAAQC,UAAUH,EAAOt5B,UAAWu5B,QAE7ChiB,EAAS+hB,EAAMhoB,MAAMC,KAAMvR,WAG7B,OAAO,YAA0BuR,KAAMgG,M,6BChB3C,SAAS8H,EAAkBzX,EAAQ0X,GACjC,IAAK,IAAIvf,EAAI,EAAGA,EAAIuf,EAAMrf,OAAQF,IAAK,CACrC,IAAIwf,EAAaD,EAAMvf,GACvBwf,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD3O,OAAO4O,eAAe/X,EAAQ2X,EAAWrO,IAAKqO,IAInC,SAASK,EAAaT,EAAaU,EAAYC,GAG5D,OAFID,GAAYR,EAAkBF,EAAYhO,UAAW0O,GACrDC,GAAaT,EAAkBF,EAAaW,GACzCX,EAbT,mC,6BCAe,SAASua,EAAcC,GACpC,OAAOA,GAAQA,EAAKD,eAAiBE,SADvC,mC,6BCAA,6CACIC,EAAsC,qBAAXrW,OAAyB3C,kBAAwBA,YAOjE,SAASiZ,EAAiBjuB,GACvC,IAAIkV,EAAMF,SAAahV,GAIvB,OAHAguB,GAAkB,WAChB9Y,EAAIgZ,QAAUluB,KAETgV,eAAkB,WACvB,OAAWE,EAAIgZ,QAASzoB,WAAM,EAAQtR,aACrC,M,gVCbCg6B,G,OCCqB,SAAA1Z,G,IACnB2Z,EAAUC,c,OAChBD,gBAEA,EDLmCE,CAArC,mBEQMF,EAPqB,SAAA3Z,G,IACnB2Z,EAAUC,c,OAChBD,gBAEA,EAG4BE,CAA9B,UCAMC,E,uBAKJ,G,2BACE,UAEA,MAAa,CACXC,SAAU/a,UAAc+a,U,EAQ1B,c,EACA,sBAEK/a,EAAL,gB,EACE,SAAgBA,EAAA,gBAAqB,SAAA+a,GAC/B,EAAJ,W,EACE,SAAc,CAAEA,a,EAEhB,uB,qBAxBDC,iBAAP,Y,MACS,CAAEC,KAAF,IAAaC,IAAb,IAAuBC,OAAvB,GAAmCC,QAAsB,MAAbC,I,2BA6BrDC,6B,KACE,cAEIrpB,KAAJ,kB,KACE,SAAc,CAAE8oB,SAAU9oB,KAAKspB,oB,EAInCC,gCACMvpB,KAAJ,UAAmBA,KAAKwpB,Y,EAG1BC,kB,OAEI,kBAACC,EAAD,UACE1c,MAAO,CACL2c,QAAS3pB,KAAK+N,MADT,QAEL+a,SAAU9oB,KAAK0U,MAFV,SAGL0J,MAAOyK,mBAAwB7oB,KAAK0U,MAAMoU,SAHrC,UAILc,cAAe5pB,KAAK+N,MAAM6b,gBAG5B,kBAACC,EAAD,UACEC,SAAU9pB,KAAK+N,MAAM+b,UADvB,KAEE9c,MAAOhN,KAAK+N,MAAM4b,Y,GAvDPra,IAAMX,WCAAW,IAAMX,UCRTW,IAAMX,UCA9B,IAAMob,EAAN,GAEIC,EAAJ,EAuBA,SAASC,EAAUb,EAAU1a,QAAc,IAAdA,MAAU,KACd,kBAAZA,GAAwBjoB,cAAnC,MACEioB,EAAU,CAAEsa,KAAMta,I,MAFqB,EAKjCsa,EALiC,O,IAAA,MAK3BnV,OAL2B,S,IAAA,OAKZqW,OALY,S,IAAA,UAKIC,OALJ,S,MAO3B,GAAGnE,OAAjB,GAEO,QAAa,c,IACbgD,GAAL,KAAaA,EAAa,OAAO,K,GACjC,EAAa,OAAOoB,E,MAhCxB,c,IACQC,EAAW,GAAG3b,EAAN,IAAoBA,EAApB,OAAqCA,EAAnD,UACM4b,EAAYP,OAAoBA,KAAtC,I,GAEIO,EAAJ,GAAqB,OAAOA,EAAP,G,IAEfnV,EAAN,GAEMnP,EAAS,CAAEukB,OADFC,IAAaxB,EAAM7T,EAAlC,GACyBA,Q,OAErB6U,EAbN,MAcIM,OACAN,KAGF,EAmB2BS,CAAYzB,EAAM,CACzC0B,IADyC,EAEzCR,OAFyC,EAGzCC,cAHMI,EAJ6B,SAIrBpV,EAJqB,OAS/BiJ,EAAQmM,OAAd,G,IAEA,EAAY,OAAO,K,IAEZtB,EAAkB7K,EAbY,GAatBmI,EAAUnI,EAbY,SAc/B+K,EAAUC,IAAhB,E,OAEIvV,IAAJ,EAA8B,KAEvB,CACLmV,KADK,EAELC,IAAKD,cAAgBC,EAAhBD,IAFA,EAGLG,QAHK,EAILD,OAAQ/T,EAAA,QAAY,gB,OAClBwV,EAAKhrB,EAALgrB,MAAiBpE,EAAjBoE,GACA,IAFM,OAtBZ,M,ICPIC,E,kGACJnB,kB,kBAEI,kBAACC,EAAD,eACG,YACC,mB,IAEMZ,EAAW,kBAAuBJ,EAAxC,SACMtK,EAAQ,sBACV,QADU,cAEV,aACA6L,EAAUnB,EAAD,SAAoB,EAD7B,OAEAJ,EAJJ,MAMM3a,EAAQ,OAAH,IAAG,CAAH,MAAiB+a,SAAjB,EAA2B1K,U,EAEA,EAZ5B,MAYJ0L,EAZI,WAYMe,EAZN,YAYiBpB,EAZjB,S,OAgBNhjC,kBAAJ,IAA+BqjC,WAC7BA,QAIA,kBAACJ,EAAD,UAAwB1c,MAAOe,GAC5BA,QACG+b,EACsB,oBAAbA,EAGHA,EAHJ,GADM,EAMNe,EACAvb,oBADS,GAETma,EACAA,EADM,GATX1b,KAYuB,oBAAb+b,EAGLA,EAHF,GAdR,U,GAxBUxa,IAAMX,WCrB1B,SAASmc,EAAgB9B,G,MAChBA,oBAAgC,IAAvC,EAYF,SAAS+B,EAAcC,EAAUlC,G,IAC/B,EAAe,OAAOA,E,IAEhBmC,EAAOH,EAAb,G,OAEA,IAAIhC,sBAA8CA,E,eAElD,GAEEM,SAAUN,kBAAyBmC,EAAzBnC,UAId,SAASoC,EAAUpC,G,MACU,kBAAbA,EAAwBA,EAAWqC,YAAjD,GAGF,SAASC,EAAcC,G,OACd,WACLC,iBAIJ,SAASpZ,KAQkB5C,IAAMX,U,ICzC3B4c,E,kGACJ9B,kB,kBAEI,kBAACC,EAAD,eACG,SAAAhB,GACC,mB,IAIA,EALU,EAGJI,EAAW,kBAAuBJ,EAAxC,S,OAQApZ,qBAAuB,QAAvBA,UAA4C,SAAAkc,G,GACtCpN,SAAiB9O,mBAArB,GAAkD,CAChDmc,I,IAEMzC,EAAOwC,cAAoBA,QAAjC,KAEApN,EAAQ4K,EACJiB,EAAUnB,EAAD,wBAAyB0C,EAAzB,OAAsCxC,UAC/CN,EAFJtK,UAMGA,EACH,mBAA4B,CAAE0K,SAAF,EAAY4C,cAAetN,IAD3D,S,GA3BW9O,IAAMX,WCJ3B,IAAMgd,EAAarc,IAAnB,WAwBO,SAASsc,I,IAQRxN,EAAQuN,KAAd,M,OACOvN,EAAQA,EAAH,OAAZ,K,cClCFhf,EAAOC,QANP,SAAgCue,GAC9B,OAAOA,GAAOA,EAAIiO,WAAajO,EAAM,CACnC,QAAWA,IAKfxe,EAAOC,QAAiB,QAAID,EAAOC,QAASD,EAAOC,QAAQwsB,YAAa,G,gBCPxE,IAAIxH,EAAU,EAAQ,KAA0C,QAEhE,SAASyH,EAAyBC,GAChC,GAAuB,oBAAZC,QAAwB,OAAO,KAC1C,IAAIC,EAAoB,IAAID,QACxBE,EAAmB,IAAIF,QAC3B,OAAQF,EAA2B,SAAkCC,GACnE,OAAOA,EAAcG,EAAmBD,IACvCF,GA4CL3sB,EAAOC,QAzCP,SAAiCue,EAAKmO,GACpC,IAAKA,GAAenO,GAAOA,EAAIiO,WAC7B,OAAOjO,EAGT,GAAY,OAARA,GAAiC,WAAjByG,EAAQzG,IAAoC,oBAARA,EACtD,MAAO,CACL,QAAWA,GAIf,IAAImM,EAAQ+B,EAAyBC,GAErC,GAAIhC,GAASA,EAAMoC,IAAIvO,GACrB,OAAOmM,EAAMqC,IAAIxO,GAGnB,IAAIyO,EAAS,GACTC,EAAwB9sB,OAAO4O,gBAAkB5O,OAAOykB,yBAE5D,IAAK,IAAItkB,KAAOie,EACd,GAAY,YAARje,GAAqBH,OAAOI,UAAUC,eAAeC,KAAK8d,EAAKje,GAAM,CACvE,IAAIkX,EAAOyV,EAAwB9sB,OAAOykB,yBAAyBrG,EAAKje,GAAO,KAE3EkX,IAASA,EAAKuV,KAAOvV,EAAK9uB,KAC5ByX,OAAO4O,eAAeie,EAAQ1sB,EAAKkX,GAEnCwV,EAAO1sB,GAAOie,EAAIje,GAWxB,OANA0sB,EAAgB,QAAIzO,EAEhBmM,GACFA,EAAMhiC,IAAI61B,EAAKyO,GAGVA,GAITjtB,EAAOC,QAAiB,QAAID,EAAOC,QAASD,EAAOC,QAAQwsB,YAAa,G,6BCnDxErsB,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAETxN,OAAO4O,eAAe/O,EAAS,UAAW,CACxC4O,YAAY,EACZme,IAAK,WACH,OAAOG,EAAOC,iBAIlB,IAAID,EAASjtB,EAAQ,M,kGCRN,SAAS+f,EAAeX,EAAKlwB,GAC1C,OAAO,OAAAi+B,EAAA,GAAe/N,ICLT,SAA+BA,EAAKlwB,GACjD,IAAIqxB,EAAY,MAAPnB,EAAc,KAAyB,qBAAXY,QAA0BZ,EAAIY,OAAOC,WAAab,EAAI,cAE3F,GAAU,MAANmB,EAAJ,CACA,IAIID,EAAID,EAJJH,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKG,EAAKA,EAAG/f,KAAK4e,KAAQe,GAAMG,EAAKC,EAAGC,QAAQ5S,QAC9CsS,EAAKO,KAAKH,EAAG5S,QAETxe,GAAKgxB,EAAK9wB,SAAWF,GAH4BixB,GAAK,IAK5D,MAAOjS,GACPkS,GAAK,EACLC,EAAKnS,EACL,QACA,IACOiS,GAAsB,MAAhBI,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIH,EAAI,MAAMC,GAIlB,OAAOH,GDtBuB,CAAqBd,EAAKlwB,IAAM,OAAAwxB,EAAA,GAA2BtB,EAAKlwB,IAAM,OAAAk+B,EAAA,O,kGEDvF,SAASC,EAAmBjO,GACzC,OCJa,SAA4BA,GACzC,GAAIj4B,MAAM+lB,QAAQkS,GAAM,OAAO,OAAAkO,EAAA,GAAiBlO,GDGzC,CAAkBA,IAAQ,OAAAmO,EAAA,GAAgBnO,IAAQ,OAAAsB,EAAA,GAA2BtB,IELvE,WACb,MAAM,IAAI7Q,UAAU,wIFIwE,K,6BGL/E,SAASH,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,qCAFxB,mC,qHCAMif,EAAiB,CACnBC,WAAY,EACZC,SAAU,EACVC,eAAgB,EAChBC,uBAAwB,EACxBC,gBAAiB,EACjBC,gBAAiB,EACjBC,SAAU,EACVC,WAAY,EACZC,UAAW,EACXC,OAAQ,EACRC,MAAO,EACPC,kBAAmB,GACnBC,WAAY,GACZC,QAAS,GACTC,cAAe,IAGbC,E,WACF,WAAY/e,EAAM2Z,EAAS7C,GAAM,oBAC7B7lB,KAAK+tB,SAAWrF,EAChB1oB,KAAKguB,MAAQjf,EACb/O,KAAKiuB,WAAiBxgB,IAAToY,EAAqBiH,EAAeC,UAAYlH,E,2CAGjE,WACI,OAAO7lB,KAAKguB,Q,wBAEhB,WACI,OAAOhuB,KAAK+tB,W,qBAEhB,WACI,OAAO/tB,KAAKiuB,U,wFCtBPC,EACU,CACftX,KAAM,qBACNC,KAAM,oEAHDqX,EAKY,CACjBtX,KAAM,wBACNC,KAAM,4CAPDqX,EASiB,CACtBtX,KAAM,wBACNC,KAAM,yDAXDqX,EAae,CACpBtX,KAAM,wBACNC,KAAM,+PAfDqX,EAkBc,CACnBtX,KAAM,0BACNC,KAAM,4KApBDqX,EAuBc,CACnBtX,KAAM,2CACNC,KAAM,kLAzBDqX,EA2BiB,CACtBtX,KAAM,8BACNC,KAAM,yR,cASV,WAAY0C,EAAmBC,GAA/B,MACI,YAAMD,EAAWC,IAAa,K,OAC9B,EAAKzK,KAAO,gCAEZvP,OAAOia,eAAe,EAAM0U,EAA8BvuB,W,EA0DlE,OAhEmD,iBAYxC,EAAAwuB,4BAAP,WACI,OAAO,IAAID,EAA8BD,EAAuDtX,KAC5FsX,EAAuDrX,OAMxD,EAAAwX,sCAAP,WACI,OAAO,IAAIF,EAA8BD,EAAyDtX,KAC9FsX,EAAyDrX,OAO1D,EAAAyX,+BAAP,SAAsCC,GAClC,OAAO,IAAIJ,EAA8BD,EAA8DtX,KAASsX,EAA8DrX,KAAI,oBAAoB0X,IAOnM,EAAAC,iCAAP,SAAwCC,GACpC,OAAO,IAAIN,EAA8BD,EAA2DtX,KAC7FsX,EAA2DrX,KAAI,uCAAuC4X,IAM1G,EAAAC,mCAAP,WACI,OAAO,IAAIP,EAA8BD,EAA4DtX,KACjGsX,EAA4DrX,OAM7D,EAAA8X,iCAAP,WACI,OAAO,IAAIR,EAA8BD,EAA2DtX,KAChGsX,EAA2DrX,OAM5D,EAAA+X,uCAAP,WACI,OAAO,IAAIT,EAA8BD,EAA8DtX,KAAMsX,EAA8DrX,OAEnL,E,CAhEmD,M,mFC9C7CgY,E,WACF,aAAc,oBACV7uB,KAAK8uB,WAAY,EACjB9uB,KAAK+uB,UAAY,GACjB/uB,KAAKgvB,QAAU,E,8CAGnB,WACI,OAAOhvB,KAAK8uB,c,2HCRdG,EAAkBzoC,aAAa0oC,kBAExBC,EAAa,CACtBC,WAAY,UACZC,WAAY,UACZC,wBAAyB,uBACzBC,kBAAmB,iBACnBC,0BAA2B,yBAC3BC,gCAAiC,+BACjCC,WAAY,UACZC,gBAAiB,eACjBC,sBAAuB,qBACvBC,kBAAmB,iBACnBC,mBAAoB,mBAGlBC,E,WACF,WAAYC,EAAaC,EAAcC,EAAa91B,EAAQD,GAAQ,oBAChE6F,KAAKmwB,aAAeH,EACpBhwB,KAAKowB,cAAgBH,EACrBjwB,KAAKqwB,aAAeH,EACpBlwB,KAAKswB,QAAUn2B,EACf6F,KAAKuwB,QAAUn2B,E,2CAGnB,WACI,OAAO4F,KAAKwwB,W,qCAEhB,WACI,OAAOxwB,KAAKmwB,e,uBAEhB,WACI,OAAOnwB,KAAKuwB,U,uBAEhB,WACI,OAAOvwB,KAAKswB,Y,KAIdG,E,WACF,WAAYC,EAAYC,GAIpB,OAJwB,oBACxB3wB,KAAK4wB,YAAcF,EACnB1wB,KAAK6wB,cAAgB,GAEb7wB,KAAK4wB,aACT,KAAKzB,EAAWC,WACZpvB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG,IAC9D,MACJ,KAAK5B,EAAWE,WACZrvB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG,IAC9D,MACJ,KAAK5B,EAAWI,kBACZvvB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWK,0BACZxvB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWG,wBACZtvB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWM,gCACZzvB,KAAK8wB,aAAe,GAAK7B,EACzBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWO,WACZ1vB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG,IAC9D,MACJ,KAAK5B,EAAWQ,gBACZ3vB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWU,kBACZ7vB,KAAK8wB,aAAe,GAAK7B,EACzBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWS,sBACZ5vB,KAAK8wB,aAAe,GAAK7B,EACzBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF,MACJ,KAAK3B,EAAWW,mBACZ9vB,KAAK8wB,aAAe,EAAI7B,EACxBjvB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAG/wB,KAAK8wB,eACnE9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,eACrF9wB,KAAK6wB,cAAc9Q,KAAK,IAAIgQ,EAAe,EAAG,EAAGY,EAAGI,MAAO,EAAI9B,EAAiBjvB,KAAK8wB,gB,mDAKjG,WACI,OAAO9wB,KAAK6wB,gB,kCAEhB,WACI,OAAO7wB,KAAK8wB,iB,mJC7Gd9D,E,kDACF,WAAYje,EAAM2Z,GAAS,kCACvB,cAAM3Z,EAAM2Z,EAASoE,IAAeE,WAC/BgE,cAAgB,KACrB,EAAKC,kBAAoB,EACzB,EAAKC,aAAe,EACpB,EAAKC,MAAQ,EACb,EAAKlD,MAAQ,KACb,EAAKmD,OAAS,KAPS,E,gDAU3B,WAC+B,OAAvBpxB,KAAKgxB,gBACLhxB,KAAK+tB,SAAS4C,KAAKU,aAAarxB,KAAKgxB,eACrChxB,KAAKgxB,cAAgB,Q,kBAI7B,WACIhxB,KAAK+tB,SAAS4C,KAAKW,WAAWtxB,KAAKiuB,MAAOjuB,KAAKgxB,iB,oBAGnD,WACIhxB,KAAK+tB,SAAS4C,KAAKW,WAAWtxB,KAAKiuB,MAAO,Q,gCAG9C,WACI,OAAOjuB,KAAKkxB,e,0BAGhB,SAAarL,EAAM0L,EAAOC,EAAaC,EAAaC,GAChD1xB,KAAKixB,kBAAoBO,EACzBxxB,KAAKkxB,aAAeO,EACpBzxB,KAAKmxB,MAAQK,EAAcC,EAC3BzxB,KAAKiuB,MAAQpI,EACb7lB,KAAKoxB,OAASG,EACd,IAAIZ,EAAK3wB,KAAK+tB,SAAS4C,KACnBgB,GAAY,EACZC,GAAa,EAejB,GAXI5xB,KAAKiuB,QAAU0C,EAAGkB,cAClB7xB,KAAKiuB,QAAU0C,EAAGmB,sBAClB9xB,KAAK6lB,OAAS8K,EAAGoB,iBAEjBJ,GAAY,GAGZ3xB,KAAKoxB,SAAWT,EAAGqB,cAAgBhyB,KAAKoxB,SAAWT,EAAGsB,aAAejyB,KAAKoxB,SAAWT,EAAGuB,cACxFN,GAAa,IAGZD,EAAW,CAGZ,MAAM,IAAIjP,MADN,sGAIR,IAAKkP,EAAY,CAGb,MAAM,IAAIlP,MADN,wGAIR1iB,KAAKgxB,cAAgBL,EAAGwB,eACxBnyB,KAAKoyB,OACQ,OAATV,EACAf,EAAG0B,WAAWryB,KAAKiuB,MAAOjuB,KAAKmxB,MAAOnxB,KAAKoxB,QAE3CT,EAAG0B,WAAWryB,KAAKiuB,MAAOyD,EAAM1xB,KAAKoxB,QAEzCpxB,KAAKsyB,W,0BAKT,SAAal4B,EAAQs3B,GACjB1xB,KAAKoyB,OACLpyB,KAAKuyB,aAAa5B,KAAK6B,cAAcxyB,KAAKiuB,MAAO7zB,EAAQs3B,GACzD1xB,KAAKsyB,a,GAhFUxE,KCCjB2E,GACU,EADVA,EAEa,EAFbA,EAGgB,EAGhBC,EAAc,CAChBC,eAAgB,EAChBC,gBAAiB,EACjBC,cAAe,GAGb5F,E,kDACF,WAAYle,EAAM2Z,GAAS,kCACvB,cAAM3Z,EAAM2Z,EAASoE,IAAeG,iBAC/B6F,kBAAoBL,EACzB,EAAKM,cAAgB,KACrB,EAAKC,aAAe,KACpB,EAAKC,WAAaP,EAAYE,gBAC9B,EAAKM,cAAgB,EACrB,EAAKC,iBAAkB,EACvB,EAAKC,mBAAqB,KAC1B,EAAKC,iBAAmB,GACxB,EAAKC,aAAe,EAVG,E,sDAa3B,WACoC,OAA5BtzB,KAAKozB,qBACLpzB,KAAKsyB,SACLtyB,KAAK+tB,SAAS4C,KAAK4C,kBAAkBvzB,KAAKozB,oBAC1CpzB,KAAK8yB,kBAAoBL,EACzBzyB,KAAKozB,mBAAqB,KAC1BpzB,KAAK+yB,cAAc1B,eACnBrxB,KAAK+yB,cAAgB,KACrB/yB,KAAKwzB,mBAAqB,EAC1BxzB,KAAKszB,aAAe,K,kCAI5B,WACI,OAAOtzB,KAAKozB,qB,iCAEhB,WACI,OAAOpzB,KAAK8yB,oB,0BAGhB,WACI,OAAO9yB,KAAKizB,a,4BAGhB,WACI,OAAOjzB,KAAKkzB,e,kBAGhB,WACIlzB,KAAK+tB,SAAS4C,KAAK8C,gBAAgBzzB,KAAKozB,sB,oBAG5C,WACIpzB,KAAK+tB,SAAS4C,KAAK8C,gBAAgB,Q,kBAGvC,SAAKC,GACD,IAAM/C,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OACApyB,KAAKmzB,iBAINnzB,KAAKgzB,aAAaZ,OAClBzB,EAAGgD,aAAaD,EAAe1zB,KAAKszB,aAActzB,KAAK4zB,iBAAkB,GACzE5zB,KAAKgzB,aAAaV,UALlB3B,EAAGkD,WAAWH,EAAe,EAAG1zB,KAAKszB,cAOzCtzB,KAAKsyB,W,gCAGT,SAAmBf,EAAOuC,EAAeC,EAAkBC,EAAYC,GACnE,GAA6B,IAAzBH,EAAcplC,OAAc,CAE5B,MAAM,IAAIg0B,MADS,2EAIvB,IAAIiO,EAAK3wB,KAAK+tB,SAAS4C,KACvB3wB,KAAK+yB,cAAgB,IAAI/F,EAAS,eAAgBhtB,KAAK+tB,UACvD/tB,KAAK+yB,cAAcZ,aAAaxB,EAAGkB,aAAcN,EAAOwC,EAAkBC,EAAYC,GACtFj0B,KAAK8yB,kBAAoBL,EACzBzyB,KAAKozB,mBAAqBzC,EAAGuD,oBAGzBl0B,KAAKszB,aADU,OAAfW,QAAsCxmB,IAAfwmB,EACH,EAGAF,EAGxB/zB,KAAK+yB,cAAcX,OACnBpyB,KAAKoyB,OAEL,IAAK,IAAI5jC,EAAI,EAAGA,EAAIslC,EAAcplC,OAAQF,IAAK,CAC3C,IAAI2lC,EAAKL,EAActlC,GACvBmiC,EAAGyD,wBAAwBD,EAAGhE,cAC9BQ,EAAG0D,oBACCF,EAAGhE,aACHgE,EAAG/D,cACH+D,EAAG9D,cACH,EACA8D,EAAGG,YACHH,EAAGI,aAIXv0B,KAAKsyB,SACLtyB,KAAK+yB,cAAcT,W,wCAGvB,SAA2Bf,EAAOuC,EAAeC,EAAkBC,EAAYQ,EAAWC,EAAWR,GACjG,GAA6B,IAAzBH,EAAcplC,OAAc,CAE5B,MAAM,IAAIg0B,MADS,2EAIvB,IAAIiO,EAAK3wB,KAAK+tB,SAAS4C,KACvB3wB,KAAKizB,WAAauB,EAClB,IAAIE,EAAiB,EAErB,GAAI10B,KAAKizB,YAAcP,EAAYC,eAC/B3yB,KAAKkzB,aAAevC,EAAGgE,cACvBD,EAAiB,OAEhB,GAAI10B,KAAKizB,YAAcP,EAAYE,gBACpC5yB,KAAKkzB,aAAevC,EAAGiE,eACvBF,EAAiB,MAEhB,IAAI10B,KAAKizB,YAAcP,EAAYG,cAMpC,YADA3sB,QAAQ1J,IAAI,8BAJZwD,KAAKkzB,aAAevC,EAAGkE,aACvBH,EAAiB,EAOrB10B,KAAKszB,aAAemB,EAAU/lC,OAC9BsR,KAAKmzB,iBAAkB,EACvBnzB,KAAKgzB,aAAe,IAAIhG,EAAS,sBAAuBhtB,KAAK+tB,UAC7D/tB,KAAKgzB,aAAab,aAAaxB,EAAGmB,qBAAsBP,EAAOkD,EAAU/lC,OAAQgmC,EAAgBD,GAEjGz0B,KAAK+yB,cAAgB,IAAI/F,EAAS,uBAAwBhtB,KAAK+tB,UAC/D/tB,KAAK+yB,cAAcZ,aAAaxB,EAAGkB,aAAcN,EAAOwC,EAAkBC,EAAYC,GACtFj0B,KAAK8yB,kBAAoBL,EACzBzyB,KAAKozB,mBAAqBzC,EAAGuD,oBAC7Bl0B,KAAK+yB,cAAcX,OACnBpyB,KAAKoyB,OAEL,IAAK,IAAI5jC,EAAI,EAAGA,EAAIslC,EAAcplC,OAAQF,IAAK,CAC3C,IAAI2lC,EAAKL,EAActlC,GACvBmiC,EAAGyD,wBAAwBD,EAAGhE,cAC9BQ,EAAG0D,oBACCF,EAAGhE,aACHgE,EAAG/D,cACH+D,EAAG9D,cACH,EACA8D,EAAGG,YACHH,EAAGI,aAGXv0B,KAAKsyB,SACLtyB,KAAK+yB,cAAcT,W,oCAGvB,SAAuBl4B,EAAQ65B,GAC3Bj0B,KAAKszB,aAAeW,EAAWvlC,QAAUulC,EAAWa,kBAAoBtuC,aAAa0oC,mBACrFlvB,KAAK+yB,cAAcgC,aAAa36B,EAAQ65B,K,mCAG5C,SAAsB75B,EAAQq6B,GAC1Bz0B,KAAKszB,aAAeW,WAAWvlC,OAC/BsR,KAAKgzB,aAAa+B,aAAa36B,EAAQq6B,O,GArKlB3G,M,4KCNvBkH,E,oJACJrL,QAAUsL,YAAc,EAAD,O,sCAEvBxL,kB,OACS,uBAAQE,QAAS3pB,KAAjB,QAA+B8pB,SAAU9pB,KAAK+N,MAAM+b,Y,GAJnCxa,IAAMX,WCATW,IAAMX,UCPxB,IAAMumB,EAAoB,SAACC,EAAIC,G,MACtB,oBAAPD,EAAoBA,EAA3B,GAD+B,GAGpBE,EAAsB,SAACF,EAAIC,G,MACjB,kBAAPD,EACVG,YAAeH,EAAI,KAAM,KADtB,GAAP,GCIII,EAAiB,SAAA36B,G,OAAC,GAClB2U,EAAeD,IAAfC,WACN,qBAAWA,IACTA,KAOF,IAAMimB,EAAajmB,GACjB,c,IAEII,EAMC,EANDA,SACA8lB,EAKC,EALDA,SACAC,EAIC,EAJDA,QACGC,EAGF,iDACKt/B,EAAWs/B,EADhB,OAGC5nB,EAAQ,OAAH,IAAG,CAAH,MAEP2nB,QAAS,SAAAE,G,IAEL,GAAaF,KACb,MAAOG,G,MACPD,mBACA,EAICA,EAAD,sBACAA,UACC,GAFD,UAEYv/B,GA7BtB,SAAyBu/B,G,SACbA,WAAiBA,EAAjBA,QAAiCA,EAAjCA,SAAkDA,EAA5D,UA6BSE,CAJH,KAMEF,mBACAH,Q,OAOJ1nB,MADEwnB,IAAJ,GACcQ,GAEZhoB,EAIK,sBAAP,MAWJ,IAAMioB,EAAOzmB,GACX,c,QAEIsb,iBAOC,MAPW2K,EAOX,EANDhX,EAMC,EANDA,QACA2W,EAKC,EALDA,GACAxlB,EAIC,EAJDA,SACGgmB,EAGF,uD,OAED,kBAACjM,IAAD,eACG,SAAAhB,GACC,mB,IAEQiB,EAAYjB,EAHV,QAKJI,EAAWuM,EACfH,EAAkBC,EAAIzM,EADY,UAElCA,EAFF,UAKMuN,EAAOnN,EAAWa,aAAH,GAArB,GACM5b,EAAQ,OAAH,IAAG,CAAH,MAETkoB,KAFS,EAGTR,SAHS,W,IAID3M,EAAWoM,EAAkBC,EAAIzM,EAAvC,WACelK,EAAUmL,EAAH,QAAqBA,EAA3C,MAEArJ,M,OAKAiV,IAAJ,EACExnB,MAAYgoB,GAAZhoB,EAEAA,aAGKuB,oBAAP,SCxGJimB,EAAiB,SAAA36B,G,OAAC,GAClB2U,EAAeD,IAAfC,WACN,qBAAW,IACTA,KAUcA,GACd,c,QAEI,gBAAgB2mB,OAef,MAf6B,OAe7B,E,IAdDC,uBAcC,MAdiB,SAcjB,EAbDC,EAaC,EAbDA,YACWC,EAYV,EAZDC,UACAziB,EAWC,EAXDA,MACU0iB,EAUT,EAVD5iB,SACU6iB,EAST,EATD1N,SACAqB,EAQC,EARDA,UACAD,EAOC,EAPDA,OACOuM,EAMN,EANDC,MACAvB,EAKC,EALDA,GACAxlB,EAIC,EAJDA,SACGgmB,EAGF,uJ,OAED,kBAACjM,IAAD,eACG,SAAAhB,GACC,mB,IAEM0M,EAAkBoB,GAAgB9N,EAAxC,SACMiO,EAAatB,EACjBH,EAAkBC,EADkB,GAAtC,GAIkBnM,EAAS2N,EARjB,SAUJC,EACJ5N,GAAQA,sCADV,QAGM5K,EAAQwY,EACV3M,YAAUmL,EAAD,SAA2B,CAClCpM,KADkC,EAElCnV,MAFkC,EAGlCsW,UAHkC,EAIlCD,WALN,KAQMvW,KAAc4iB,EAChBA,EAAanY,EADe,GAAhC,GAIMkY,EAAY3iB,EArD5B,W,2BAA2BkjB,EAAY,yBAAZA,EAAY,gB,OAC9BA,EAAA,QAAkB,SAAAroC,G,OAAC,KAAnB,KAAP,KAqDYsoC,CAAeT,EADO,GAA1B,EAGMK,EAAQ/iB,EAAW,OAAH,IAAG,CAAH,WAAtB,EAEM5F,EAAQ,OAAH,IAAG,CAAH,C,eACQ4F,GAAD,GADP,KAET2iB,UAFS,EAGTI,MAHS,EAITvB,GAAIwB,GAlCI,G,OAuCNpB,IAAJ,EACExnB,MAAYgoB,GAAZhoB,EAEAA,aAGK,oBAAP,U,6BC1FK,SAASgpB,EAA8Br3B,EAAQuM,GAC5D,GAAc,MAAVvM,EAAgB,MAAO,GAC3B,IAEIC,EAAKnR,EAFL6H,EAAS,GACT2gC,EAAax3B,OAAO2V,KAAKzV,GAG7B,IAAKlR,EAAI,EAAGA,EAAIwoC,EAAWtoC,OAAQF,IACjCmR,EAAMq3B,EAAWxoC,GACbyd,EAASG,QAAQzM,IAAQ,IAC7BtJ,EAAOsJ,GAAOD,EAAOC,IAGvB,OAAOtJ,EAZT,mC,8BCCe,SAASstB,EAAOnU,EAAKxC,GACf,oBAARwC,EACTA,EAAIxC,GACKwC,IACTA,EAAIgZ,QAAUxb,GALlB,mC,kHCGMiqB,EACS,EADTA,EAEQ,EAFRA,EAGY,EAGZC,EAEa,EA0Cb3J,E,kDACF,WAAYxe,EAAM2Z,GAAS,kCACvB,cAAM3Z,EAAM2Z,EAASoE,IAAeS,YAC/B4J,OAAS,EACd,EAAKC,QAAU,EACf,EAAKC,OAAS,EACd,EAAKC,eAAiB,KACtB,EAAKC,eAAiB,KACtB,EAAKC,aAAe,KACpB,EAAKC,eAAiB,KACtB,EAAKC,iBAAmB,KACxB,EAAKC,kBAAoBV,EAEzB,EAAKW,cAAgBV,EACrB,EAAKW,cAAgBX,EACrB,EAAKY,cAAgBZ,EAdE,E,oDAiB3B,WACI,OAAOl3B,KAAKu3B,iB,sBAEhB,WACI,OAAOv3B,KAAKm3B,S,uBAEhB,WACI,OAAOn3B,KAAKo3B,U,sBAEhB,WACI,OAAOp3B,KAAKq3B,S,8BAGhB,SAAiBU,GACb/3B,KAAKs3B,eAAiBS,I,iCAG1B,SAAoBC,GAChB,IAAMrH,EAAK3wB,KAAKuyB,aAAa5B,KACzBsH,GAAmB,EAmBvB,GAhBID,IAAgBrH,EAAGuH,aACnBD,GAAmB,GAGnBD,IAAgBrH,EAAGwH,mBACnBF,GAAmB,GAGnBD,IAAgBrH,EAAGyH,mBACnBH,GAAmB,GAGnBD,IAAgBrH,EAAG0H,aACnBJ,GAAmB,IAGlBA,EACD,MAAMvV,MAAM,wBAGhB1iB,KAAKs3B,eAAiB3G,EAAG2H,SACzBt4B,KAAKw3B,aAAeQ,EACpBh4B,KAAKu3B,eAAiB5G,EAAG4H,kB,2BAG7B,WACgC,OAAxBv4B,KAAKu3B,iBACMv3B,KAAKuyB,aAAa5B,KAC1B6H,cAAcx4B,KAAKu3B,gBACtBv3B,KAAKu3B,eAAiB,Q,sBAI9B,SAAS9qC,EAAOC,GACZ,GAAID,IAAUuT,KAAKy4B,YAAc/rC,IAAWsT,KAAK04B,YAAa,CAC1D14B,KAAKw4B,gBACL,IAAMG,EAAY34B,KAAK23B,mBAAqBV,EACtC2B,EAAW54B,KAAK23B,mBAAqBV,EAC3Cj3B,KAAK64B,SAAS74B,KAAKy3B,eAAgBhrC,EAAOC,EAAQisC,EAAWC,M,kBAIrE,WACI54B,KAAKuyB,aAAa5B,KAAKmI,cAAc94B,KAAKs3B,gBAC1Ct3B,KAAKuyB,aAAa5B,KAAKoI,YAAY/4B,KAAKw3B,aAAcx3B,KAAKg5B,sB,oBAG/D,WACIh5B,KAAKuyB,aAAa5B,KAAKmI,cAAc94B,KAAKs3B,gBAC1Ct3B,KAAKuyB,aAAa5B,KAAKoI,YAAY/4B,KAAKw3B,aAAc,Q,sCAG1D,WACI,IAAM7G,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OACLzB,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGuI,eAAgBvI,EAAGwI,QACtDxI,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGyI,eAAgBzI,EAAGwI,QACtDn5B,KAAKsyB,W,8BAGT,SAAiB+G,EAAiB5sC,EAAOC,GACrC,IAAMikC,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKu3B,eAAkB8B,EACvBr5B,KAAKm3B,OAAS1qC,EACduT,KAAKo3B,QAAU1qC,EACfsT,KAAKs3B,eAAiB3G,EAAG2H,SACzBt4B,KAAKw3B,aAAe7G,EAAGuH,a,2BAG3B,SAAcoB,EAAgB7sC,EAAOC,EAAQ6sC,EAAQC,GACjD,IAAM7I,EAAK3wB,KAAKuyB,aAAa5B,KAO7B,GANgC,OAA5B3wB,KAAKg5B,oBAELrI,EAAG6H,cAAcx4B,KAAKg5B,oBAG1Bh5B,KAAKy5B,oBAAoB9I,EAAGyH,kBACxBp4B,KAAKw3B,eAAiB7G,EAAGyH,iBACzB,MAAM1V,MAAM,wBAIhB1iB,KAAKy3B,eAAiB6B,EACtBt5B,KAAKm3B,OAAS1qC,EACduT,KAAKo3B,QAAU1qC,EACfsT,KAAKq3B,OAASkC,EACdv5B,KAAKoyB,OAELzB,EAAG+I,aAAa/I,EAAGyH,iBAAkB,EAAGkB,EAAgBt5B,KAAKm3B,OAAQn3B,KAAKo3B,QAASp3B,KAAKq3B,QACxF1G,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGuI,eAAgBvI,EAAGgJ,eAC5DhJ,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGyI,eAAgBzI,EAAGgJ,eAExDH,GACA7I,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGiJ,mBAAoBjJ,EAAGkJ,SAChElJ,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGmJ,mBAAoBnJ,EAAGkJ,SAChE75B,KAAK23B,kBAAoBV,IAEzBtG,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGiJ,mBAAoBjJ,EAAGoJ,QAChEpJ,EAAGsI,cAActI,EAAGyH,iBAAkBzH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAChE/5B,KAAK23B,kBAAoBV,GAE7Bj3B,KAAKsyB,W,sBAGT,SAASgH,EAAgB7sC,EAAOC,EAAQ8sC,EAAkBQ,GACtD,IAAMrJ,EAAK3wB,KAAKuyB,aAAa5B,KAO7B,GANgC,OAA5B3wB,KAAKg5B,oBAELrI,EAAG6H,cAAcx4B,KAAKg5B,oBAG1Bh5B,KAAKy5B,oBAAoB9I,EAAGuH,YACxBl4B,KAAKw3B,eAAiB7G,EAAGuH,WACzB,MAAMxV,MAAM,wBAIhB1iB,KAAKy3B,eAAiB6B,EACtBt5B,KAAKm3B,OAAS1qC,EACduT,KAAKo3B,QAAU1qC,EACfsT,KAAKoyB,OAELzB,EAAGsJ,aAAatJ,EAAGuH,WAAY,EAAGoB,EAAgBt5B,KAAKm3B,OAAQn3B,KAAKo3B,SACpEzG,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGuI,eAAgBvI,EAAGgJ,eACtDhJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGyI,eAAgBzI,EAAGgJ,oBAEjClsB,IAAjBusB,GAA8BA,GAAgB50B,IAAM80B,aAAal6B,KAAKm3B,SAAW/xB,IAAM80B,aAAal6B,KAAKo3B,UACzGzG,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGwJ,sBAC1DxJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAC1DpJ,EAAGyJ,eAAezJ,EAAGuH,YACrBl4B,KAAK23B,kBAAoBV,GAClBuC,GACP7I,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGkJ,SAC1DlJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGkJ,SAC1D75B,KAAK23B,kBAAoBV,IAEzBtG,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGoJ,QAC1DpJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAC1D/5B,KAAK23B,kBAAoBV,GAE7Bj3B,KAAKsyB,W,+BAGT,SAAkB+H,EAAOC,EAAahB,EAAgBiB,EAAUf,EAAkBQ,GAC9E,IAAMrJ,EAAK3wB,KAAKuyB,aAAa5B,KAE7B,GAAgC,OAA5B3wB,KAAKg5B,mBACL,MAAMtW,MAAM,kCAIhB,GADA1iB,KAAKy5B,oBAAoB9I,EAAGuH,YACxBl4B,KAAKw3B,eAAiB7G,EAAGuH,WACzB,MAAMxV,MAAM,wBAGhB1iB,KAAK03B,iBAAmB6C,EACxBv6B,KAAKy3B,eAAiB6B,EACtBt5B,KAAKm3B,OAASkD,EAAM5tC,MACpBuT,KAAKo3B,QAAUiD,EAAM3tC,OAErBsT,KAAKoyB,OACLzB,EAAG6J,WAAW7J,EAAGuH,WAAY,EAAGoB,EAAgBgB,EAAaC,EAAUF,GACvE1J,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGuI,eAAgBvI,EAAGgJ,eACtDhJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGyI,eAAgBzI,EAAGgJ,oBAEjClsB,IAAjBusB,GAA8BA,GAAgB50B,IAAM80B,aAAal6B,KAAKm3B,SAAW/xB,IAAM80B,aAAal6B,KAAKo3B,UACzGzG,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGwJ,sBAC1DxJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAC1DpJ,EAAGyJ,eAAezJ,EAAGuH,YACrBl4B,KAAK23B,kBAAoBV,GAClBuC,GACP7I,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGkJ,SAC1DlJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGkJ,SAC1D75B,KAAK23B,kBAAoBV,IAEzBtG,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGoJ,QAC1DpJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAC1D/5B,KAAK23B,kBAAoBV,GAG7Bj3B,KAAKsyB,W,yCAGT,SAA4B7lC,EAAOC,GAC/B,IAAMikC,EAAK3wB,KAAKuyB,aAAa5B,KAO7B,GALgC,OAA5B3wB,KAAKg5B,oBACLrI,EAAG6H,cAAcx4B,KAAKg5B,oBAG1Bh5B,KAAKy5B,oBAAoB9I,EAAGuH,YACxBl4B,KAAKw3B,eAAiB7G,EAAGuH,WACzB,MAAMxV,MAAM,wBAGhB1iB,KAAKm3B,OAAS1qC,EACduT,KAAKo3B,QAAU1qC,EACfsT,KAAKoyB,OAELzB,EAAG6J,WAAW7J,EAAGuH,WAAY,EAAGvH,EAAG8J,mBAAoBz6B,KAAKm3B,OAAQn3B,KAAKo3B,QAAS,EAAGzG,EAAG+J,gBAAiB/J,EAAGI,MAAO,MACnHJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGuI,eAAgBvI,EAAGgJ,eACtDhJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGyI,eAAgBzI,EAAGgJ,eAMtDhJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGiJ,mBAAoBjJ,EAAGoJ,QAC1DpJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGmJ,mBAAoBnJ,EAAGoJ,QAE1DpJ,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGgK,qBAAsBhK,EAAGiK,QAE5DjK,EAAGsI,cAActI,EAAGuH,WAAYvH,EAAGkK,qBAAsBlK,EAAGmK,wBAE5D96B,KAAK23B,kBAAoBV,EAEzBj3B,KAAKsyB,W,iCAGT,SAAoByI,EAAYR,EAAU7I,GACtC,IAAMf,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OACApyB,KAAKw3B,cAAgB7G,EAAGuH,WAEzBvH,EAAGqK,cAAcrK,EAAGuH,WAAY,EAAG,EAAG,EAAGl4B,KAAKm3B,OAAQn3B,KAAKo3B,QAAS2D,EAAYR,EAAU7I,GAEpF1xB,KAAKw3B,cAAgB7G,EAAGyH,kBAAoBp4B,KAAKw3B,cAAgB7G,EAAG0H,YAE1E1H,EAAGsK,cAAcj7B,KAAKw3B,aAAc,EAAG,EAAG,EAAG,EAAGx3B,KAAKm3B,OAAQn3B,KAAKo3B,QAASp3B,KAAKq3B,OAAQ0D,EAAYR,EAAU7I,GAGlH1xB,KAAKsyB,a,GA/QWxE,M,wMCjDlBoN,E,WACF,WAAYl8B,EAAIC,EAAIk8B,GAAI,oBAEpBn7B,KAAKo7B,IAAMh9B,IAAKtX,SAChBkZ,KAAKq7B,IAAMj9B,IAAKtX,SAChBkZ,KAAKs7B,IAAMl9B,IAAKtX,SAEhBsX,IAAKhX,KAAK4Y,KAAKo7B,IAAKp8B,GACpBZ,IAAKhX,KAAK4Y,KAAKq7B,IAAKp8B,GACpBb,IAAKhX,KAAK4Y,KAAKs7B,IAAKH,G,6CAGxB,WACI,MAAO,CAACn7B,KAAKo7B,IAAKp7B,KAAKq7B,IAAKr7B,KAAKs7B,O,0BAGrC,SAAaC,GACT,IAAIC,EAAY,IAAI3M,IAChB4M,EAAOr9B,IAAKtX,SACZ40C,EAAOt9B,IAAKtX,SACZ60C,EAAOv9B,IAAKtX,SACZ80C,EAAOx9B,IAAKtX,SAEhBsX,IAAKrR,SAAS0uC,EAAMz7B,KAAKq7B,IAAKr7B,KAAKo7B,KACnCh9B,IAAKrR,SAAS2uC,EAAM17B,KAAKs7B,IAAKt7B,KAAKo7B,KACnCh9B,IAAKrR,SAAS4uC,EAAMJ,EAAIM,YAAa77B,KAAKo7B,KAC1Ch9B,IAAK1G,MAAMkkC,EAAML,EAAIO,eAAgBJ,GAErC,IAAM3yC,EAAMqV,IAAK3G,IAAIgkC,EAAMG,GAE3B,GAAIj1C,KAAK2H,IAAIvF,GAAO6c,IAAUkC,KAC1B,OAAO0zB,EAGX,IAAMtyB,EAAS,EAAMngB,EACfgzC,EAAK39B,IAAK3G,IAAIkkC,EAAMC,GAAQ1yB,EAElC,GAAI6yB,EAAK,GAAOA,EAAK,EACjB,OAAOP,EAGX,IAAIQ,EAAO59B,IAAKtX,SAChBsX,IAAK1G,MAAMskC,EAAML,EAAMF,GACvB,IAAIQ,EAAK79B,IAAK3G,IAAI8jC,EAAIO,eAAgBE,GAAQ9yB,EAE9C,GAAI+yB,EAAK,GAAQF,EAAKE,EAAM,EACxB,OAAOT,EAGX,IAAIlsC,EAAI8O,IAAK3G,IAAIikC,EAAMM,GAAQ9yB,EAG/B,OAFAsyB,EAAUzM,UAAUhP,KAAKzwB,GACzBksC,EAAU1M,WAAY,EACf0M,I,uBAGX,SAAUlsC,GACN0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GACjB0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GACjB0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GAEjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,GACjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,GACjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,GAEjB0Q,KAAKs7B,IAAI,IAAMhsC,EAAE,GACjB0Q,KAAKs7B,IAAI,IAAMhsC,EAAE,GACjB0Q,KAAKs7B,IAAI,IAAMhsC,EAAE,O,qBC7DnB4sC,EAAa,CACfC,UAAW,EACXC,OAAQ,EACRC,MAAO,EACPC,UAAW,EACXC,SAAU,GAGRC,EAAa,CACfC,SAAU,EACVC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,GAGNC,E,WACF,WAAYC,GAAM,oBACd98B,KAAK+8B,gBAAsBtvB,IAATqvB,EAAqBA,EAAO,EAC9C98B,KAAKg9B,uBAAyB,GAC9Bh9B,KAAKi9B,oBAAsB7+B,IAAK/W,WAAW,EAAK,EAAK,GACrD2Y,KAAKk9B,OAAS9+B,IAAK/W,WAAW,EAAK,EAAK,GACxC2Y,KAAKm9B,WAAajB,EAAWC,UAG7Bn8B,KAAKo9B,WAAa,GAClBp9B,KAAKq9B,aAAe,GAEpBr9B,KAAKs9B,cAAgBd,EAAWE,OAChC18B,KAAKu9B,WAAaf,EAAWE,OAC7B18B,KAAKw9B,aAAc,EACnBx9B,KAAKy9B,aAAc,EACnBz9B,KAAK09B,WAAY,EAEjB19B,KAAK29B,WAAa52B,IAAKjgB,SAGvBkZ,KAAK49B,aAAex/B,IAAK/W,WAAW,EAAK,EAAK,GAC9C2Y,KAAK69B,kBAAoBz/B,IAAK/W,WAAW,EAAK,EAAK,GACnD2Y,KAAK89B,kBAAoB1/B,IAAK/W,WAAW,EAAK,EAAK,GAGnD2Y,KAAK+9B,eAAiBh3B,IAAKjgB,SAC3BkZ,KAAKg+B,UAAYj3B,IAAKjgB,SAEtBkZ,KAAKi+B,YAAc,EACnBj+B,KAAKk+B,aAAe9/B,IAAK/W,WAAW,EAAK,EAAK,GAE9C2Y,KAAKm+B,cAAe,EACpBn+B,KAAKo+B,WAAwB,EAAVz3C,KAAKE,GAAY,GAEpCmZ,KAAKq+B,0BAA4BjgC,IAAK/W,WAAW,EAAK,EAAK,GAC3D2Y,KAAKs+B,qBAAuBlgC,IAAK/W,WAAW,EAAK,EAAK,GAGtD2Y,KAAKu+B,YAAcngC,IAAK/W,WAAW,EAAK,EAAK,GAC7C2Y,KAAKw+B,OAASpgC,IAAK/W,WAAW,EAAK,EAAK,GACxC2Y,KAAKy+B,eAAiBj5B,IAAKne,WAAW,EAAK,GAC3C2Y,KAAK0+B,oBAAsB,IAC3B1+B,KAAK2+B,iBAAkB,EACvB3+B,KAAK4+B,YAAc,IACnB5+B,KAAK6+B,YAAc,IAEnB7+B,KAAK8+B,WAAa,IAAIC,IACtB/+B,KAAKg/B,sB,gDAGT,SAAalC,GACT98B,KAAK+8B,WAAaD,EAClB98B,KAAKg/B,wB,wBAGT,WACIh/B,KAAK29B,WAAa52B,IAAKjgB,SACvBkZ,KAAK49B,aAAex/B,IAAK/W,WAAW,EAAK,EAAK,GAC9C2Y,KAAKg+B,UAAYj3B,IAAKjgB,SACtBkZ,KAAK+9B,eAAiBh3B,IAAKjgB,SAC3BkZ,KAAKw+B,OAASpgC,IAAK/W,WAAW,EAAK,EAAK,GACxC2Y,KAAKu+B,YAAcv+B,KAAKw+B,S,0BAG5B,SAAaS,GACTj/B,KAAKm9B,WAAa8B,I,0BAGtB,WACI,OAAOj/B,KAAKm9B,a,iCAGhB,WACI,IAAI72B,EAAKlI,IAAK/W,WAAW,EAAK,EAAK,GAC/B63C,EAAK9gC,IAAK/W,WAAW,EAAK,EAAK,GAC/B83C,EAAK/gC,IAAK/W,WAAW,EAAK,EAAK,GAC/B+3C,EAAKhhC,IAAK/W,WAAW,EAAK,EAAK,GAC/Bg4C,EAAMjhC,IAAK/W,WAAW2Y,KAAK+8B,WAAY,EAAK,GAC5CuC,EAAMlhC,IAAK/W,WAAW,EAAK2Y,KAAK+8B,WAAY,GAC5CwC,EAAMnhC,IAAK/W,WAAW,EAAK,EAAK2Y,KAAK+8B,YACrCyC,EAAMphC,IAAK/W,WACO,GAAlB2Y,KAAK+8B,WACa,GAAlB/8B,KAAK+8B,WACa,GAAlB/8B,KAAK+8B,YAIT/8B,KAAKo9B,WAAW,GAAK,IAAIqC,IAAMn5B,EAAI+4B,GACnCr/B,KAAKo9B,WAAW,GAAK,IAAIqC,IAAMn5B,EAAIg5B,GACnCt/B,KAAKo9B,WAAW,GAAK,IAAIqC,IAAMn5B,EAAIi5B,GAEnCv/B,KAAKq9B,aAAa,GAAK,IAAIqC,IAAQF,EAAKN,EAAsB,GAAlBl/B,KAAK+8B,WAAkB,IACnE/8B,KAAKq9B,aAAa,GAAK,IAAIqC,IAAQF,EAAKL,EAAsB,GAAlBn/B,KAAK+8B,WAAkB,IACnE/8B,KAAKq9B,aAAa,GAAK,IAAIqC,IAAQF,EAAKJ,EAAsB,GAAlBp/B,KAAK+8B,WAAkB,IAInE,IAFA,IAAI4C,EAAc,GAETnxC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIoxC,EAAW5/B,KAAK6/B,YAAYrxC,GAChCmxC,EAAYnxC,GAAKoxC,EAASE,SAAS,IAGvC9/B,KAAK+/B,eAAiB,IAAI7E,EACtByE,EAAY,GACZA,EAAY,GACZA,EAAY,M,yBAIpB,SAAYK,GACR,IAAIxlC,EAAI,IAAIilC,IACZjlC,EAAEylC,QAAQjgC,KAAKo9B,WAAW4C,GAAK5E,IAAKp7B,KAAKo9B,WAAW4C,GAAK3E,KACzD,IAAI/rC,EAAI8O,IAAKtX,SAGb,OAFAsX,IAAKtR,IAAIwC,EAAG0Q,KAAK49B,aAAc59B,KAAKk9B,QACpC1iC,EAAE9Q,UAAU4F,GACLkL,I,2BAGX,SAAcwlC,GACV,IAAME,EAAalgC,KAAKq9B,aAAa2C,GACjC91C,EAAI,IAAIw1C,IAAQQ,EAAWC,iBAAkBD,EAAWE,YAAsC,EAAzBF,EAAWG,YAAmB,IACnG/wC,EAAI8O,IAAKtX,SAIb,OAHAsX,IAAKtR,IAAIwC,EAAG0Q,KAAK49B,aAAc59B,KAAKk9B,QACpC9+B,IAAKvP,IAAIS,EAAGA,EAAG8O,IAAK/W,WAAW,GAAM2Y,KAAK+8B,WAAY,GAAM/8B,KAAK+8B,WAAY,GAAM/8B,KAAK+8B,aACxF7yC,EAAER,UAAU4F,GACLpF,I,8BAGX,WACI,IAAMo2C,EAAMtgC,KAAK+/B,eACbQ,EAAW,IAAIrF,EAAUoF,EAAIlF,IAAIkF,EAAIjF,IAAIiF,EAAIhF,KAC7ChsC,EAAI8O,IAAKtX,SAGb,OAFAsX,IAAKtR,IAAIwC,EAAG0Q,KAAK49B,aAAc59B,KAAKk9B,QACpCqD,EAAS72C,UAAU4F,GACZixC,I,oBAGX,SAAOC,EAAUC,EAAUC,GACvB,GAAI1gC,KAAKm9B,YAAcjB,EAAWK,SAC9B,OAAO,EAEXv8B,KAAK8+B,WAAa0B,EAClBxgC,KAAKy9B,aAAc,EACnB,IAAIkD,GAAmB,EAEvB,OAAQ3gC,KAAKm9B,YACT,KAAKjB,EAAWC,UACRuE,GACA1gC,KAAK4gC,oBACLD,GAAmB,IAEnB3gC,KAAK6gC,cACL7gC,KAAKw9B,aAAc,GAEvB,MACJ,KAAKtB,EAAWE,OACRsE,GACA1gC,KAAK8gC,iBACLH,GAAmB,IAEnB3gC,KAAK6gC,cACL7gC,KAAKw9B,aAAc,GAEvB,MACJ,KAAKtB,EAAWG,MACRqE,GACA1gC,KAAK+gC,YAAYN,GACjBE,GAAmB,IAEnB3gC,KAAK6gC,cACL7gC,KAAKw9B,aAAc,GAM/B,OADAx9B,KAAKghC,kBACEL,I,wBAGX,WACI3gC,KAAKy9B,aAAc,I,8BAEvB,WACIz9B,KAAK29B,WAAa52B,IAAKjgB,SACvBkZ,KAAK49B,aAAex/B,IAAK/W,WAAW,EAAK,EAAK,K,sBAGlD,SAAS45C,GACLjhC,KAAKk9B,OAAS+D,EACdjhC,KAAKkhC,e,+BAGT,WAMI,IALA,IAAIC,EAAoB/iC,IAAKtX,SACzBs6C,EAAOhjC,IAAKtX,SACZwR,EAAI,IACJkC,EAAI,IAEChM,EAAI,EAAGA,EAAI,EAAGA,IAAK,OACfwR,KAAK6/B,YAAYrxC,GAAG6yC,uBAAuBrhC,KAAK8+B,YADjC,mBACvBtkC,EADuB,KACpBlC,EADoB,KAExB6oC,EAAkB3yC,GAAKgM,EACvB4mC,EAAK5yC,GAAK8J,EAGd,IAAK,IAAI9J,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI8yC,EAAqBthC,KAAK6/B,YAAYrxC,GAAGsxC,SAASqB,EAAkB3yC,IACpE+yC,EAAenjC,IAAKtX,SACpB06C,EAAkBpjC,IAAKtX,SAC3BsX,IAAKrR,SACDw0C,EACAvhC,KAAK8+B,WAAWjD,YAChByF,GAEJljC,IAAKrR,SACDy0C,EACAxhC,KAAK8+B,WAAW2C,YAAY,KAC5BH,GAIAljC,IAAK1P,OAAO6yC,GAAgBnjC,IAAK1P,OAAO8yC,KACxCL,EAAkB3yC,GAAK,KAI/B,IAAMkzC,EAAWt8B,IAAMu8B,uBAAuBR,GACxCS,EAAqBT,EAAkBO,GAAY1hC,KAAKg9B,uBAE9D,IAAKh9B,KAAKw9B,aAAeoE,EACrB5hC,KAAKw9B,aAAc,EACnBx9B,KAAKs9B,cAAgBoE,EACrBtjC,IAAKhX,KAAK4Y,KAAKi9B,oBAAqBj9B,KAAK8+B,WAAW2C,YAAYL,EAAKM,KACrEtjC,IAAKhX,KAAK4Y,KAAK69B,kBAAmB79B,KAAK49B,mBAEpC,GAAI59B,KAAKw9B,YAAa,CACzB,IAAIqE,EAAY7hC,KAAK8+B,WAAW2C,YAAYL,EAAKphC,KAAKs9B,gBACtDl/B,IAAKrR,SAASiT,KAAK89B,kBAAmB+D,EAAW7hC,KAAKi9B,qBAEtD,IAAK,IAAIzuC,EAAI,EAAGA,EAAI,EAAGA,IACfA,GAAKwR,KAAKs9B,gBACVt9B,KAAK89B,kBAAkBtvC,GAAK,GAEhC4P,IAAKtR,IAAIkT,KAAK49B,aAAc59B,KAAK69B,kBAAmB79B,KAAK89B,sB,4BAKrE,WAMI,IALA,IAAIgE,EAAsB1jC,IAAKtX,SAC3Bs6C,EAAOhjC,IAAKtX,SACZwR,EAAI,IACJkC,EAAI,IAEChM,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IADwB,EAChBwR,KAAK+hC,cAAcvzC,GAChBwzC,yBAAyBhiC,KAAK8+B,YAFjB,mBAEvBtkC,EAFuB,KAEpBlC,EAFoB,KAGxBwpC,EAAoBtzC,GAAKgM,EACzB4mC,EAAK5yC,GAAK8J,EAGd,IAAMopC,EAAWt8B,IAAMu8B,uBAAuBG,GACxCF,EAAqBE,EAAoBJ,GAAY1hC,KAAKg9B,uBAEhE,IAAKh9B,KAAKw9B,aAAeoE,EAAoB,CACzC5hC,KAAKw9B,aAAc,EACnBx9B,KAAKs9B,cAAgBoE,EACrB1hC,KAAKi9B,oBAAsBj9B,KAAK8+B,WAAW2C,YAAYL,EAAKM,IAC5D,IAAIO,EAAejiC,KAAK+hC,cAAcL,GAAUvB,iBAC5C16B,EAAMrH,IAAKtX,SACXo7C,EAAO9jC,IAAKtX,SACZq7C,EAAO/jC,IAAKtX,SAChBsX,IAAKrR,SAAS0Y,EAAKzF,KAAKi9B,oBAAqBgF,GAC7C7jC,IAAK5G,UAAU0qC,EAAMz8B,GACrBrH,IAAKhU,MAAM+3C,EAAMD,EAAMliC,KAAK+8B,YAC5B3+B,IAAKtR,IAAIkT,KAAKq+B,0BAA2B4D,EAAcE,GACvD/jC,IAAKhX,KAAK4Y,KAAKs+B,qBAAsBt+B,KAAKq+B,2BAC1Ct3B,IAAK3f,KAAK4Y,KAAK+9B,eAAgB/9B,KAAKg+B,gBAEjC,GAAIh+B,KAAKw9B,YAAa,CACzB,IAAIqE,EAAY7hC,KAAK8+B,WAAW2C,YAAYL,EAAKphC,KAAKs9B,gBACtDt9B,KAAKk+B,aAAe2D,EACpB,IAAI33C,EAAI8V,KAAK+hC,cAAc/hC,KAAKs9B,eAC5Bh3B,EAAKlI,IAAKtX,SACVsU,EAAKgD,IAAKtX,SACdsX,IAAKrR,SAASuZ,EAAItG,KAAKi9B,oBAAqB/yC,EAAEi2C,kBAC9C/hC,IAAKrR,SAASqO,EAAI4E,KAAKk+B,aAAch0C,EAAEi2C,kBAEvC,IAAIiC,EAAOhkC,IAAKtX,SAGhB,GAFAsX,IAAKrR,SAASq1C,EAAMhnC,EAAIkL,GAEpBlI,IAAK1P,OAAO0zC,GAAQx8B,IAAUkC,KAC9B,OAGJ,IAAIle,EAAIwU,IAAKtX,SACbsX,IAAK1G,MAAM9N,EAAG0c,EAAIlL,GAClB,IAAIinC,EAAOjkC,IAAK3G,IAAI7N,EAAGoW,KAAKq9B,aAAar9B,KAAKs9B,eAAe8C,aAAe,GAAO,EAAM,EACrFkC,EAAMlkC,IAAKtX,SACXy7C,EAAMnkC,IAAKtX,SAEfsX,IAAK5G,UAAU8qC,EAAKh8B,GACpBlI,IAAK5G,UAAU+qC,EAAKnnC,GACpB4E,KAAKi+B,YAAct3C,KAAKgT,KAAKyE,IAAK3G,IAAI6qC,EAAKC,IAAQF,EACnD,IAAMG,EAAexiC,KAAKyiC,gBAAgBziC,KAAKs9B,eAC/Cv2B,IAAKjd,OACDkW,KAAKg+B,UACLh+B,KAAK+9B,eACL/9B,KAAKi+B,YACLuE,GAGJ,IAAI/8B,EAAMrH,IAAKtX,SACfsX,IAAKhU,MAAMqb,EAAK88B,EAAKviC,KAAK+8B,YAC1B3+B,IAAKtR,IAAIkT,KAAKs+B,qBAAsBp0C,EAAEi2C,iBAAkB16B,M,mCAIhE,WAEI,IACMvb,EAAI8V,KAAK+hC,cAAc/hC,KAAKs9B,eAC9Bh3B,EAAKlI,IAAKtX,SACVsU,EAAKgD,IAAKtX,SACVw7C,EAAMlkC,IAAKtX,SACXy7C,EAAMnkC,IAAKtX,SAEfsX,IAAKrR,SAASuZ,EAAItG,KAAKq+B,0BAA2Bn0C,EAAEi2C,kBACpD/hC,IAAKrR,SAASqO,EAAI4E,KAAKs+B,qBAAsBp0C,EAAEi2C,kBAE/C/hC,IAAK5G,UAAU8qC,EAAKh8B,GACpBlI,IAAK5G,UAAU+qC,EAAKnnC,GAEpB,IAAIxR,EAAIwU,IAAKtX,SACbsX,IAAK1G,MAAM9N,EAAG0c,EAAIlL,GACPgD,IAAK3G,IAAI7N,EAAGoW,KAAKq9B,aAAar9B,KAAKs9B,eAAe8C,aAA7D,IACI5mC,EAAQ7S,KAAKgT,KAAKyE,IAAK3G,IAAI6qC,EAAKC,IAEhCG,EAAaxc,SAAU1sB,GAAS,OAAS,MAE7C0M,QAAQ1J,IAAI,SAAWhD,GACvB0M,QAAQ1J,IAAI,eAAiBkmC,K,yBAIjC,SAAYC,GAOR,IANA,IAAInH,EAAYx7B,KAAK4iC,mBAAmBC,aAAa7iC,KAAK8+B,YACtDqC,EAAoB/iC,IAAKtX,SACzBs6C,EAAOhjC,IAAKtX,SACZ0T,EAAI,IACJlC,EAAI,IAEC9J,EAAI,EAAGA,EAAI,EAAGA,IAAK,OACfwR,KAAK6/B,YAAYrxC,GAAG6yC,uBAAuBrhC,KAAK8+B,YADjC,mBACvBtkC,EADuB,KACpBlC,EADoB,KAExB6oC,EAAkB3yC,GAAKgM,EACvB4mC,EAAK5yC,GAAK8J,EAGd,IAAIopC,EAAWt8B,IAAMu8B,uBAAuBR,GACxCS,EAAqBT,EAAkBO,GAAY1hC,KAAKg9B,uBAE5D,IAAKh9B,KAAKw9B,aAAehC,EAAUsH,aAC/B9iC,KAAKw9B,aAAc,EACnBp/B,IAAKhX,KAAK4Y,KAAKi9B,oBAAoBj9B,KAAK8+B,WAAW2C,YAAYjG,EAAUzM,UAAU,KACnF3wB,IAAKhX,KAAK4Y,KAAKu+B,YAAav+B,KAAKw+B,QACjCx+B,KAAKy+B,eAAiBkE,EACtB3iC,KAAK2+B,iBAAkB,EACvB3+B,KAAKs9B,cAAgBd,EAAWC,aAE7B,IAAKz8B,KAAKw9B,aAAeoE,EAC5B5hC,KAAKw9B,aAAc,EACnBx9B,KAAKs9B,cAAgBoE,EACrB1hC,KAAKi9B,oBAAsBj9B,KAAK8+B,WAAW2C,YAAYL,EAAKM,IAC5DtjC,IAAKhX,KAAK4Y,KAAKu+B,YAAav+B,KAAKw+B,QACjCx+B,KAAK2+B,iBAAkB,OACpB,GAAI3+B,KAAKw9B,YACZ,GAAIx9B,KAAK2+B,gBAAiB,CACtB,IAAIoE,EAAKv9B,IAAK1e,SACd0e,IAAKzY,SAASg2C,EAAIJ,EAAU3iC,KAAKy+B,gBACjC,IAAIuE,EAAQ59B,IAAM69B,mBAAmBF,EAAGv9B,IAAKne,WAAW,EAAK,IACzD67C,EAAU19B,IAAK9W,OAAOs0C,GACtBG,EAAqBH,EAAM,GAAK,EAAOE,EAAUljC,KAAK0+B,qBAAuBwE,EAAUljC,KAAK0+B,oBAC5F0E,EAAKhlC,IAAKtX,SACdsX,IAAKtR,IAAIs2C,EAAIpjC,KAAKu+B,YAAangC,IAAK/W,WAAW87C,EAAkBA,EAAmBA,IACpF/kC,IAAKhX,KAAM4Y,KAAKw+B,OAAQp5B,IAAMiB,MAAM+8B,EAAIpjC,KAAK4+B,YAAa5+B,KAAK6+B,kBAE5D,CACH,IAAIgD,EAAY7hC,KAAK8+B,WAAW2C,YAAYL,EAAKphC,KAAKs9B,gBAClD+F,EAAWjlC,IAAKtX,SACpBsX,IAAKrR,SAASs2C,EAAUxB,EAAW7hC,KAAKi9B,qBACxC7+B,IAAKhU,MAAMi5C,EAASA,EAAoC,GAA3BrjC,KAAK0+B,qBAElC,IAAK,IAAIlwC,EAAI,EAAGA,EAAI,EAAGA,IACfA,GAAKwR,KAAKs9B,gBACd+F,EAAS70C,GAAK,GAGlB,IAAI80C,EAAallC,IAAK1P,OAAO20C,GACzBE,EAAMnlC,IAAK3G,IAAI4rC,EAASrjC,KAAK6/B,YAAY7/B,KAAKs9B,eAAekG,oBAC7DC,EAAgBrlC,IAAK/W,WAAW,EAAK,EAAK,GAC9Co8C,EAAczjC,KAAKs9B,eAAkBiG,EAAM,EAAOD,GAAcA,EAChE,IAAIF,EAAKhlC,IAAKtX,SACdsX,IAAKtR,IAAIs2C,EAAIpjC,KAAKu+B,YAAakF,GAC/BrlC,IAAKhX,KAAK4Y,KAAKw+B,OAAOp5B,IAAMiB,MAAM+8B,EAAIpjC,KAAK4+B,YAAa5+B,KAAK6+B,iB,6BAKzE,WACI,IAAI6E,EAAK38B,IAAKjgB,SACV68C,EAAK58B,IAAKjgB,SACV88C,EAAM78B,IAAKjgB,SACX+8C,EAAO98B,IAAKjgB,SACZg9C,EAAO1lC,IAAKtX,SAEhBigB,IAAK1c,gBAAgBq5C,EAAI1jC,KAAKk9B,QAC9B9+B,IAAKhU,MAAM05C,EAAM9jC,KAAKk9B,QAAS,GAC/Bn2B,IAAK1c,gBAAgBs5C,EAAIG,GACzB/8B,IAAK7d,SAAS26C,EAAM7jC,KAAKg+B,UAAW2F,GACpC58B,IAAK7d,SAAS06C,EAAKF,EAAIG,GAEvB98B,IAAK1c,gBAAgBq5C,EAAI1jC,KAAK49B,cAC9B72B,IAAKxc,YAAYo5C,EAAI3jC,KAAKw+B,QAM1Bz3B,IAAK7d,SAAS26C,EAAMF,EAAIC,GACxB78B,IAAK7d,SAAS06C,EAAKF,EAAIG,GAEvB98B,IAAK3f,KAAK4Y,KAAK29B,WAAYiG,K,4BAG/B,WACI,IAAIF,EAAK38B,IAAKjgB,SACV68C,EAAK58B,IAAKjgB,SACV88C,EAAM78B,IAAKjgB,SACX+8C,EAAO98B,IAAKjgB,SACZg9C,EAAO1lC,IAAKtX,SAOhB,OALAigB,IAAK1c,gBAAgBq5C,EAAI1jC,KAAKk9B,QAC9B9+B,IAAKhU,MAAM05C,EAAM9jC,KAAKk9B,QAAS,GAC/Bn2B,IAAK1c,gBAAgBs5C,EAAIG,GACzB/8B,IAAK7d,SAAS26C,EAAM7jC,KAAKg+B,UAAW2F,GACpC58B,IAAK7d,SAAS06C,EAAKF,EAAIG,GAChBD,I,yBAGX,WACI,IAAIG,EAAgB3lC,IAAK/W,WAAW,IAAS,IAAS,KAClD+5C,EAAOhjC,IAAKtX,SACZ46C,EAAW,IAEXlnC,EAAI,IACJlC,EAAI,IAGR,OAFA0H,KAAKy9B,aAAc,EAEXz9B,KAAKm9B,YACT,KAAKjB,EAAWC,UACZ,IAAK,IAAI3tC,EAAI,EAAGA,EAAI,EAAGA,IAAK,OACfwR,KAAK6/B,YAAYrxC,GAAG6yC,uBACzBrhC,KAAK8+B,YAFe,mBACvBtkC,EADuB,KACpBlC,EADoB,KAIxByrC,EAAcv1C,GAAKgM,EACnB4mC,EAAK5yC,GAAK8J,EAIVyrC,EAFJrC,EAAWt8B,IAAMu8B,uBAAuBoC,IAEV/jC,KAAKg9B,yBAE/Bh9B,KAAKu9B,WAAamE,EAClB1hC,KAAKy9B,aAAc,GAGvB,MACJ,KAAKvB,EAAWE,OACZ,IAAK,IAAI5tC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IADwB,EAChBwR,KAAK+hC,cAAcvzC,GAChBwzC,yBAAyBhiC,KAAK8+B,YAFjB,mBAEvBtkC,EAFuB,KAEpBlC,EAFoB,KAGxByrC,EAAcv1C,GAAKgM,EACnB4mC,EAAK5yC,GAAK8J,EAIGyrC,EADjBrC,EAAWt8B,IAAMu8B,uBAAuBoC,IACG/jC,KAAKg9B,yBAE5Ch9B,KAAKu9B,WAAamE,EAClB1hC,KAAKy9B,aAAc,GAEvB,MACJ,KAAKvB,EAAWG,MAIR,GAFgBr8B,KAAK4iC,mBAAmBC,aAAa7iC,KAAK8+B,YAE5CgE,aACV9iC,KAAKy9B,aAAc,EACnBz9B,KAAKu9B,WAAaf,EAAWC,YAE5B,CACD,IAAK,IAAIjuC,EAAI,EAAGA,EAAI,EAAGA,IAAK,OACfwR,KAAK6/B,YAAYrxC,GAAG6yC,uBACzBrhC,KAAK8+B,YAFe,mBACvBtkC,EADuB,KACpBlC,EADoB,KAIxByrC,EAAcv1C,GAAKgM,EACnB4mC,EAAK5yC,GAAK8J,EAGGyrC,EADjBrC,EAAWt8B,IAAMu8B,uBAAuBoC,IACG/jC,KAAKg9B,yBAE5Ch9B,KAAKy9B,aAAc,EACnBz9B,KAAKu9B,WAAamE,O,6BAQ1C,SAAgBsC,GACZ,IAAIC,EAAOl9B,IAAKjgB,SAGhB,OAFAigB,IAAK1e,OAAO47C,EAAMjkC,KAAK+9B,gBACT3/B,IAAK/W,WAAY48C,EAAgB,EAAXD,EAAe,GAAGC,EAAgB,EAAXD,EAAe,GAAIC,EAAgB,EAAXD,EAAe,M,wBAItG,WACI,OAAOhkC,KAAKw9B,c,wBAGhB,WACI,OAAOx9B,KAAKy9B,c,8BAGhB,WACI,OAAOz9B,KAAK2+B,kB,6BAGhB,WACI,OAAO3+B,KAAKs9B,gB,0BAGhB,WACI,OAAOt9B,KAAKu9B,e,mCCvjBpB,qDAEe,SAAS2G,IACtB,OAAO50B,aAAiB60B,O,6BCH1B,IACIC,EAAS,mBAWE9Y,IAVf,SAAmB+Y,EAAWC,GAC1B,IAAID,EAIA,MAAM,IAAI3hB,MAAM0hB,K,8BCPxB,kCAAO,IAAIG,EAA4B,WACrC,SAASA,IACPvkC,KAAKwkC,UAAY,GAGnB,IAAIzf,EAASwf,EAAa3kC,UA8B1B,OA5BAmlB,EAAO0f,UAAY,SAAmBC,GACpC,IAAIvf,EAAQnlB,KAERwW,EAAWkuB,GAAY,aAM3B,OAFA1kC,KAAKwkC,UAAUzkB,KAAKvJ,GACpBxW,KAAK2kC,cACE,WACLxf,EAAMqf,UAAYrf,EAAMqf,UAAUzlB,QAAO,SAAUn1B,GACjD,OAAOA,IAAM4sB,KAGf2O,EAAMyf,kBAIV7f,EAAO8f,aAAe,WACpB,OAAO7kC,KAAKwkC,UAAU91C,OAAS,GAGjCq2B,EAAO4f,YAAc,aAGrB5f,EAAO6f,cAAgB,aAGhBL,EAnC8B,I,6BCAvC,8DAGe,SAASx0B,IAQtB,OAPY+0B,eAA4Bl2B,M,6BCJ3B,SAASm2B,EAAiBC,GACvC,IAAIj3B,EAAQi3B,EAAKj3B,MACbk3B,EAASD,EAAKC,OACdC,EAAiBF,EAAKE,eAC1B,OAAOD,EAAO5vB,QAAO,SAAU8vB,EAAKzwB,GASlC,OARAywB,EAAIzwB,GAAS3G,EAAM2G,GAEfwwB,GAC0B,qBAAjBn3B,EAAM2G,KACfywB,EAAIzwB,GAASwwB,EAAexwB,IAIzBywB,IACN,IAdL,mC,oPCAA,SAASC,EAAWhc,GAClB,MAA8B,MAAvBA,EAASxG,OAAO,GAIzB,SAASyiB,EAAUC,EAAM3+B,GACvB,IAAK,IAAInY,EAAImY,EAAOhJ,EAAInP,EAAI,EAAGyY,EAAIq+B,EAAK52C,OAAQiP,EAAIsJ,EAAGzY,GAAK,EAAGmP,GAAK,EAClE2nC,EAAK92C,GAAK82C,EAAK3nC,GAGjB2nC,EAAKC,MAgEQC,MA5Df,SAAyBrQ,EAAIsQ,QACdh4B,IAATg4B,IAAoBA,EAAO,IAE/B,IAkBIC,EAlBAC,EAAWxQ,GAAMA,EAAG7a,MAAM,MAAS,GACnCsrB,EAAaH,GAAQA,EAAKnrB,MAAM,MAAS,GAEzCurB,EAAU1Q,GAAMiQ,EAAWjQ,GAC3B2Q,EAAYL,GAAQL,EAAWK,GAC/BM,EAAaF,GAAWC,EAW5B,GATI3Q,GAAMiQ,EAAWjQ,GAEnByQ,EAAYD,EACHA,EAAQj3C,SAEjBk3C,EAAUL,MACVK,EAAYA,EAAU5f,OAAO2f,KAG1BC,EAAUl3C,OAAQ,MAAO,IAG9B,GAAIk3C,EAAUl3C,OAAQ,CACpB,IAAIs3C,EAAOJ,EAAUA,EAAUl3C,OAAS,GACxCg3C,EAA4B,MAATM,GAAyB,OAATA,GAA0B,KAATA,OAEpDN,GAAmB,EAIrB,IADA,IAAItwC,EAAK,EACA5G,EAAIo3C,EAAUl3C,OAAQF,GAAK,EAAGA,IAAK,CAC1C,IAAIy3C,EAAOL,EAAUp3C,GAER,MAATy3C,EACFZ,EAAUO,EAAWp3C,GACH,OAATy3C,GACTZ,EAAUO,EAAWp3C,GACrB4G,KACSA,IACTiwC,EAAUO,EAAWp3C,GACrB4G,KAIJ,IAAK2wC,EAAY,KAAO3wC,IAAMA,EAAIwwC,EAAUM,QAAQ,OAGlDH,GACiB,KAAjBH,EAAU,IACRA,EAAU,IAAOR,EAAWQ,EAAU,KAExCA,EAAUM,QAAQ,IAEpB,IAAIlgC,EAAS4/B,EAAUzf,KAAK,KAI5B,OAFIuf,GAA0C,MAAtB1/B,EAAO8f,QAAQ,KAAY9f,GAAU,KAEtDA,GCvET,SAASmgC,EAAQvoB,GACf,OAAOA,EAAIuoB,QAAUvoB,EAAIuoB,UAAY3mC,OAAOI,UAAUumC,QAAQrmC,KAAK8d,GAkCtDwoB,MA/Bf,SAASA,EAAWl/C,EAAGiC,GAErB,GAAIjC,IAAMiC,EAAG,OAAO,EAGpB,GAAS,MAALjC,GAAkB,MAALiC,EAAW,OAAO,EAEnC,GAAI1C,MAAM+lB,QAAQtlB,GAChB,OACET,MAAM+lB,QAAQrjB,IACdjC,EAAEwH,SAAWvF,EAAEuF,QACfxH,EAAEm/C,OAAM,SAASC,EAAM3/B,GACrB,OAAOy/B,EAAWE,EAAMn9C,EAAEwd,OAKhC,GAAiB,kBAANzf,GAA+B,kBAANiC,EAAgB,CAClD,IAAIo9C,EAASJ,EAAQj/C,GACjBs/C,EAASL,EAAQh9C,GAErB,OAAIo9C,IAAWr/C,GAAKs/C,IAAWr9C,EAAUi9C,EAAWG,EAAQC,GAErDhnC,OAAO2V,KAAK3V,OAAOC,OAAO,GAAIvY,EAAGiC,IAAIk9C,OAAM,SAAS1mC,GACzD,OAAOymC,EAAWl/C,EAAEyY,GAAMxW,EAAEwW,OAIhC,OAAO,G,QC1BT,SAASmrB,EAAgB9B,GACvB,MAA0B,MAAnBA,EAAKpG,OAAO,GAAaoG,EAAO,IAAMA,EAE/C,SAASyd,EAAkBzd,GACzB,MAA0B,MAAnBA,EAAKpG,OAAO,GAAaoG,EAAKlD,OAAO,GAAKkD,EAKnD,SAAS+B,EAAc/B,EAAMob,GAC3B,OAJF,SAAqBpb,EAAMob,GACzB,OAA4D,IAArDpb,EAAK0d,cAAct6B,QAAQg4B,EAAOsC,iBAAuE,IAA/C,MAAMt6B,QAAQ4c,EAAKpG,OAAOwhB,EAAO11C,SAG3Fi4C,CAAY3d,EAAMob,GAAUpb,EAAKlD,OAAOse,EAAO11C,QAAUs6B,EAElE,SAAS4d,EAAmB5d,GAC1B,MAAwC,MAAjCA,EAAKpG,OAAOoG,EAAKt6B,OAAS,GAAas6B,EAAKlG,MAAM,GAAI,GAAKkG,EA0BpE,SAASmC,EAAWrC,GAClB,IAAIM,EAAWN,EAASM,SACpBpL,EAAS8K,EAAS9K,OAClB6oB,EAAO/d,EAAS+d,KAChB7d,EAAOI,GAAY,IAGvB,OAFIpL,GAAqB,MAAXA,IAAgBgL,GAA6B,MAArBhL,EAAO4E,OAAO,GAAa5E,EAAS,IAAMA,GAC5E6oB,GAAiB,MAATA,IAAc7d,GAA2B,MAAnB6d,EAAKjkB,OAAO,GAAaikB,EAAO,IAAMA,GACjE7d,EAGT,SAASsM,EAAetM,EAAMtU,EAAO/U,EAAKy1B,GACxC,IAAItM,EAEgB,kBAATE,GAETF,EAvCJ,SAAmBE,GACjB,IAAII,EAAWJ,GAAQ,IACnBhL,EAAS,GACT6oB,EAAO,GACPC,EAAY1d,EAAShd,QAAQ,MAEd,IAAf06B,IACFD,EAAOzd,EAAStD,OAAOghB,GACvB1d,EAAWA,EAAStD,OAAO,EAAGghB,IAGhC,IAAIC,EAAc3d,EAAShd,QAAQ,KAOnC,OALqB,IAAjB26B,IACF/oB,EAASoL,EAAStD,OAAOihB,GACzB3d,EAAWA,EAAStD,OAAO,EAAGihB,IAGzB,CACL3d,SAAUA,EACVpL,OAAmB,MAAXA,EAAiB,GAAKA,EAC9B6oB,KAAe,MAATA,EAAe,GAAKA,GAkBfG,CAAUhe,IACZtU,MAAQA,QAISjH,KAD1Bqb,EAAWvpB,YAAS,GAAIypB,IACXI,WAAwBN,EAASM,SAAW,IAErDN,EAAS9K,OACuB,MAA9B8K,EAAS9K,OAAO4E,OAAO,KAAYkG,EAAS9K,OAAS,IAAM8K,EAAS9K,QAExE8K,EAAS9K,OAAS,GAGhB8K,EAAS+d,KACqB,MAA5B/d,EAAS+d,KAAKjkB,OAAO,KAAYkG,EAAS+d,KAAO,IAAM/d,EAAS+d,MAEpE/d,EAAS+d,KAAO,QAGJp5B,IAAViH,QAA0CjH,IAAnBqb,EAASpU,QAAqBoU,EAASpU,MAAQA,IAG5E,IACEoU,EAASM,SAAW6d,UAAUne,EAASM,UACvC,MAAOtL,GACP,MAAIA,aAAaopB,SACT,IAAIA,SAAS,aAAepe,EAASM,SAAxB,iFAEbtL,EAoBV,OAhBIne,IAAKmpB,EAASnpB,IAAMA,GAEpBy1B,EAEGtM,EAASM,SAE6B,MAAhCN,EAASM,SAASxG,OAAO,KAClCkG,EAASM,SAAWoc,EAAgB1c,EAASM,SAAUgM,EAAgBhM,WAFvEN,EAASM,SAAWgM,EAAgBhM,SAMjCN,EAASM,WACZN,EAASM,SAAW,KAIjBN,EAET,SAASqe,EAAkBjgD,EAAGiC,GAC5B,OAAOjC,EAAEkiC,WAAajgC,EAAEigC,UAAYliC,EAAE82B,SAAW70B,EAAE60B,QAAU92B,EAAE2/C,OAAS19C,EAAE09C,MAAQ3/C,EAAEyY,MAAQxW,EAAEwW,KAAOymC,EAAWl/C,EAAEwtB,MAAOvrB,EAAEurB,OAG7H,SAAS0yB,IACP,IAAIC,EAAS,KAiCb,IAAI7C,EAAY,GA4BhB,MAAO,CACL8C,UA5DF,SAAmBC,GAGjB,OADAF,EAASE,EACF,WACDF,IAAWE,IAAYF,EAAS,QAyDtCG,oBArDF,SAA6B1e,EAAU2e,EAAQC,EAAqBlxB,GAIlE,GAAc,MAAV6wB,EAAgB,CAClB,IAAIrhC,EAA2B,oBAAXqhC,EAAwBA,EAAOve,EAAU2e,GAAUJ,EAEjD,kBAAXrhC,EAC0B,oBAAxB0hC,EACTA,EAAoB1hC,EAAQwQ,GAG5BA,GAAS,GAIXA,GAAoB,IAAXxQ,QAGXwQ,GAAS,IAmCXmxB,eA7BF,SAAwBrtC,GACtB,IAAIqZ,GAAW,EAEf,SAAS+wB,IACH/wB,GAAUrZ,EAAGyF,WAAM,EAAQtR,WAIjC,OADA+1C,EAAUzkB,KAAK2kB,GACR,WACL/wB,GAAW,EACX6wB,EAAYA,EAAUzlB,QAAO,SAAUunB,GACrC,OAAOA,IAAS5B,OAmBpBkD,gBAdF,WACE,IAAK,IAAItiB,EAAO72B,UAAUC,OAAQ6e,EAAO,IAAI9mB,MAAM6+B,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhY,EAAKgY,GAAQ92B,UAAU82B,GAGzBif,EAAUvqC,SAAQ,SAAUyqC,GAC1B,OAAOA,EAAS3kC,WAAM,EAAQwN,QAYpC,IAAIs6B,IAAiC,qBAAX51B,SAA0BA,OAAOoW,WAAYpW,OAAOoW,SAASpY,eACvF,SAAS63B,EAAgBxD,EAAS9tB,GAChCA,EAASvE,OAAO81B,QAAQzD,IAwC1B,IAAI0D,EAAgB,WAChBC,EAAkB,aAEtB,SAASC,IACP,IACE,OAAOj2B,OAAO0X,QAAQjV,OAAS,GAC/B,MAAOoJ,GAGP,MAAO,IASX,SAASqqB,EAAqBp6B,QACd,IAAVA,IACFA,EAAQ,IAGT85B,GAAsGvc,aAAU,GACjH,IAAI8c,EAAgBn2B,OAAO0X,QACvB0e,EAvDN,WACE,IAAIC,EAAKr2B,OAAOs2B,UAAUC,UAC1B,QAAmC,IAA9BF,EAAGl8B,QAAQ,gBAAuD,IAA/Bk8B,EAAGl8B,QAAQ,iBAA2D,IAAjCk8B,EAAGl8B,QAAQ,mBAAqD,IAA1Bk8B,EAAGl8B,QAAQ,YAAqD,IAAjCk8B,EAAGl8B,QAAQ,mBACtJ6F,OAAO0X,SAAW,cAAe1X,OAAO0X,QAoD3B8e,GAChBC,KA7CsD,IAAnDz2B,OAAOs2B,UAAUC,UAAUp8B,QAAQ,YA8CtCu8B,EAAS56B,EACT66B,EAAsBD,EAAOE,aAC7BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAwBH,EAAOjB,oBAC/BA,OAAgD,IAA1BoB,EAAmChB,EAAkBgB,EAC3EC,EAAmBJ,EAAOK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9C/d,EAAWjd,EAAMid,SAAW4b,EAAmB9b,EAAgB/c,EAAMid,WAAa,GAEtF,SAASie,EAAeC,GACtB,IAAIlE,EAAOkE,GAAgB,GACvBvpC,EAAMqlC,EAAKrlC,IACX+U,EAAQswB,EAAKtwB,MAEby0B,EAAmBl3B,OAAO6W,SAI1BE,EAHWmgB,EAAiB/f,SACnB+f,EAAiBnrB,OACnBmrB,EAAiBtC,KAI5B,OADI7b,IAAUhC,EAAO+B,EAAc/B,EAAMgC,IAClCsK,EAAetM,EAAMtU,EAAO/U,GAGrC,SAASypC,IACP,OAAOziD,KAAKC,SAASuvB,SAAS,IAAI2P,OAAO,EAAGkjB,GAG9C,IAAIK,EAAoBjC,IAExB,SAASkC,EAASC,GAChBhqC,YAASoqB,EAAS4f,GAElB5f,EAAQj7B,OAAS05C,EAAc15C,OAC/B26C,EAAkBzB,gBAAgBje,EAAQb,SAAUa,EAAQ8d,QAG9D,SAAS+B,EAAe5T,IApE1B,SAAmCA,GACjC,YAAuBnoB,IAAhBmoB,EAAMlhB,QAAiE,IAA1C6zB,UAAUC,UAAUp8B,QAAQ,UAqE1Dq9B,CAA0B7T,IAC9B8T,EAAUT,EAAerT,EAAMlhB,QAGjC,SAASi1B,IACPD,EAAUT,EAAef,MAG3B,IAAI0B,GAAe,EAEnB,SAASF,EAAU5gB,GACjB,GAAI8gB,EACFA,GAAe,EACfN,QACK,CAELD,EAAkB7B,oBAAoB1e,EADzB,MAC2C4e,GAAqB,SAAUmC,GACjFA,EACFP,EAAS,CACP7B,OAJO,MAKP3e,SAAUA,IASpB,SAAmBghB,GACjB,IAAInT,EAAahN,EAAQb,SAIrBihB,EAAUC,EAAQ59B,QAAQuqB,EAAWh3B,MACxB,IAAboqC,IAAgBA,EAAU,GAC9B,IAAIE,EAAYD,EAAQ59B,QAAQ09B,EAAanqC,MAC1B,IAAfsqC,IAAkBA,EAAY,GAClC,IAAIC,EAAQH,EAAUE,EAElBC,IACFN,GAAe,EACfO,EAAGD,IAnBCE,CAAUthB,OAuBlB,IAAIuhB,EAAkBpB,EAAef,KACjC8B,EAAU,CAACK,EAAgB1qC,KAE/B,SAAS2qC,EAAWxhB,GAClB,OAAOkC,EAAWG,EAAWrC,GAuE/B,SAASqhB,EAAGljC,GACVmhC,EAAc+B,GAAGljC,GAWnB,IAAIsjC,EAAgB,EAEpB,SAASC,EAAkBN,GAGH,KAFtBK,GAAiBL,IAEoB,IAAVA,GACzBj4B,OAAOw4B,iBAAiBzC,EAAewB,GACnCd,GAAyBz2B,OAAOw4B,iBAAiBxC,EAAiB0B,IAC3C,IAAlBY,IACTt4B,OAAOy4B,oBAAoB1C,EAAewB,GACtCd,GAAyBz2B,OAAOy4B,oBAAoBzC,EAAiB0B,IAI7E,IAAIgB,GAAY,EAiChB,IAAIhhB,EAAU,CACZj7B,OAAQ05C,EAAc15C,OACtB+4C,OAAQ,MACR3e,SAAUuhB,EACVC,WAAYA,EACZvqB,KApIF,SAAciJ,EAAMtU,GAElB,IAAI+yB,EAAS,OACT3e,EAAWwM,EAAetM,EAAMtU,EAAO00B,IAAazf,EAAQb,UAChEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACrF,GAAKA,EAAL,CACA,IAAI5T,EAAOqU,EAAWxhB,GAClBnpB,EAAMmpB,EAASnpB,IACf+U,EAAQoU,EAASpU,MAErB,GAAI2zB,EAMF,GALAD,EAAcwC,UAAU,CACtBjrC,IAAKA,EACL+U,MAAOA,GACN,KAAMuhB,GAEL4S,EACF52B,OAAO6W,SAASmN,KAAOA,MAClB,CACL,IAAI4U,EAAYb,EAAQ59B,QAAQud,EAAQb,SAASnpB,KAC7CmrC,EAAWd,EAAQlnB,MAAM,EAAG+nB,EAAY,GAC5CC,EAAS/qB,KAAK+I,EAASnpB,KACvBqqC,EAAUc,EACVxB,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,SAKd7W,OAAO6W,SAASmN,KAAOA,OAuG3BzX,QAlGF,SAAiBwK,EAAMtU,GAErB,IAAI+yB,EAAS,UACT3e,EAAWwM,EAAetM,EAAMtU,EAAO00B,IAAazf,EAAQb,UAChEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACrF,GAAKA,EAAL,CACA,IAAI5T,EAAOqU,EAAWxhB,GAClBnpB,EAAMmpB,EAASnpB,IACf+U,EAAQoU,EAASpU,MAErB,GAAI2zB,EAMF,GALAD,EAAc2C,aAAa,CACzBprC,IAAKA,EACL+U,MAAOA,GACN,KAAMuhB,GAEL4S,EACF52B,OAAO6W,SAAStK,QAAQyX,OACnB,CACL,IAAI4U,EAAYb,EAAQ59B,QAAQud,EAAQb,SAASnpB,MAC9B,IAAfkrC,IAAkBb,EAAQa,GAAa/hB,EAASnpB,KACpD2pC,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,SAKd7W,OAAO6W,SAAStK,QAAQyX,QAuE5BkU,GAAIA,EACJa,OA/DF,WACEb,GAAI,IA+DJc,UA5DF,WACEd,EAAG,IA4DHe,MAzCF,SAAe7D,QACE,IAAXA,IACFA,GAAS,GAGX,IAAI8D,EAAU9B,EAAkB/B,UAAUD,GAO1C,OALKsD,IACHH,EAAkB,GAClBG,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZH,GAAmB,IAGdW,MAwBTC,OApBF,SAAgB1G,GACd,IAAIlb,EAAW6f,EAAkB1B,eAAejD,GAEhD,OADA8F,EAAkB,GACX,WACLA,GAAmB,GACnBhhB,OAiBJ,OAAOG,EAGT,IAAI0hB,EAAoB,aACpBC,EAAiB,CACnBC,SAAU,CACRC,WAAY,SAAoBxiB,GAC9B,MAA0B,MAAnBA,EAAKpG,OAAO,GAAaoG,EAAO,KAAOyd,EAAkBzd,IAElEyiB,WAAY,SAAoBziB,GAC9B,MAA0B,MAAnBA,EAAKpG,OAAO,GAAaoG,EAAKlD,OAAO,GAAKkD,IAGrD0iB,QAAS,CACPF,WAAY/E,EACZgF,WAAY3gB,GAEd6gB,MAAO,CACLH,WAAY1gB,EACZ2gB,WAAY3gB,IAIhB,SAAS8gB,EAAU3iB,GACjB,IAAI6d,EAAY7d,EAAI7c,QAAQ,KAC5B,OAAsB,IAAf06B,EAAmB7d,EAAMA,EAAInG,MAAM,EAAGgkB,GAG/C,SAAS+E,IAGP,IAAI5V,EAAOhkB,OAAO6W,SAASmN,KACvB6Q,EAAY7Q,EAAK7pB,QAAQ,KAC7B,OAAsB,IAAf06B,EAAmB,GAAK7Q,EAAK3P,UAAUwgB,EAAY,GAO5D,SAASgF,EAAgB9iB,GACvB/W,OAAO6W,SAAStK,QAAQotB,EAAU35B,OAAO6W,SAASmN,MAAQ,IAAMjN,GAGlE,SAAS+iB,EAAkBh+B,QACX,IAAVA,IACFA,EAAQ,IAGT85B,GAAmGvc,aAAU,GAC9G,IAAI8c,EAAgBn2B,OAAO0X,QAEvBgf,GAnUG12B,OAAOs2B,UAAUC,UAAUp8B,QAAQ,WAmU7B2B,GACT+6B,EAAwBH,EAAOjB,oBAC/BA,OAAgD,IAA1BoB,EAAmChB,EAAkBgB,EAC3EkD,EAAkBrD,EAAOsD,SACzBA,OAA+B,IAApBD,EAA6B,QAAUA,EAClDhhB,EAAWjd,EAAMid,SAAW4b,EAAmB9b,EAAgB/c,EAAMid,WAAa,GAClFkhB,EAAwBZ,EAAeW,GACvCT,EAAaU,EAAsBV,WACnCC,EAAaS,EAAsBT,WAEvC,SAASxC,IACP,IAAIjgB,EAAOyiB,EAAWI,KAGtB,OADI7gB,IAAUhC,EAAO+B,EAAc/B,EAAMgC,IAClCsK,EAAetM,GAGxB,IAAIqgB,EAAoBjC,IAExB,SAASkC,EAASC,GAChBhqC,YAASoqB,EAAS4f,GAElB5f,EAAQj7B,OAAS05C,EAAc15C,OAC/B26C,EAAkBzB,gBAAgBje,EAAQb,SAAUa,EAAQ8d,QAG9D,IAAImC,GAAe,EACfuC,EAAa,KAMjB,SAASxC,IACP,IAL4BziD,EAAGiC,EAK3B6/B,EAAO6iB,IACPO,EAAcZ,EAAWxiB,GAE7B,GAAIA,IAASojB,EAEXN,EAAgBM,OACX,CACL,IAAItjB,EAAWmgB,IACXoD,EAAe1iB,EAAQb,SAC3B,IAAK8gB,IAdwBzgD,EAc2B2/B,GAd9B5hC,EAcgBmlD,GAbnCjjB,WAAajgC,EAAEigC,UAAYliC,EAAE82B,SAAW70B,EAAE60B,QAAU92B,EAAE2/C,OAAS19C,EAAE09C,MAaL,OAEnE,GAAIsF,IAAehhB,EAAWrC,GAAW,OAEzCqjB,EAAa,KAKjB,SAAmBrjB,GACjB,GAAI8gB,EACFA,GAAe,EACfN,QACK,CACL,IAAI7B,EAAS,MACb4B,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACjFA,EACFP,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,IASpB,SAAmBghB,GACjB,IAAInT,EAAahN,EAAQb,SAIrBihB,EAAUuC,EAASpuB,YAAYiN,EAAWwL,KAC7B,IAAboT,IAAgBA,EAAU,GAC9B,IAAIE,EAAYqC,EAASpuB,YAAYiN,EAAW2e,KAC7B,IAAfG,IAAkBA,EAAY,GAClC,IAAIC,EAAQH,EAAUE,EAElBC,IACFN,GAAe,EACfO,EAAGD,IAnBCE,CAAUthB,OAjBd4gB,CAAU5gB,IAyCd,IAAIE,EAAO6iB,IACPO,EAAcZ,EAAWxiB,GACzBA,IAASojB,GAAaN,EAAgBM,GAC1C,IAAI/B,EAAkBpB,IAClBqD,EAAW,CAACnhB,EAAWkf,IAuE3B,SAASF,EAAGljC,GAEVmhC,EAAc+B,GAAGljC,GAWnB,IAAIsjC,EAAgB,EAEpB,SAASC,EAAkBN,GAGH,KAFtBK,GAAiBL,IAEoB,IAAVA,EACzBj4B,OAAOw4B,iBAAiBY,EAAmB1B,GAChB,IAAlBY,GACTt4B,OAAOy4B,oBAAoBW,EAAmB1B,GAIlD,IAAIgB,GAAY,EAiChB,IAAIhhB,EAAU,CACZj7B,OAAQ05C,EAAc15C,OACtB+4C,OAAQ,MACR3e,SAAUuhB,EACVC,WAnIF,SAAoBxhB,GAClB,IAAIyjB,EAAUlkB,SAASmkB,cAAc,QACjCvW,EAAO,GAMX,OAJIsW,GAAWA,EAAQE,aAAa,UAClCxW,EAAO2V,EAAU35B,OAAO6W,SAASmN,OAG5BA,EAAO,IAAMuV,EAAWxgB,EAAWG,EAAWrC,KA4HrD/I,KAzHF,SAAciJ,EAAMtU,GAElB,IAAI+yB,EAAS,OACT3e,EAAWwM,EAAetM,OAAMvb,OAAWA,EAAWkc,EAAQb,UAClEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACrF,GAAKA,EAAL,CACA,IAAI7gB,EAAOmC,EAAWrC,GAClBsjB,EAAcZ,EAAWxgB,EAAWhC,GAGxC,GAFkB6iB,MAAkBO,EAEnB,CAIfD,EAAanjB,EAxIrB,SAAsBA,GACpB/W,OAAO6W,SAAS+d,KAAO7d,EAwIjB0jB,CAAaN,GACb,IAAIvB,EAAYyB,EAASpuB,YAAYiN,EAAWxB,EAAQb,WACpD6jB,EAAYL,EAASxpB,MAAM,EAAG+nB,EAAY,GAC9C8B,EAAU5sB,KAAKiJ,GACfsjB,EAAWK,EACXrD,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,SAIZwgB,SAgGJ9qB,QA3FF,SAAiBwK,EAAMtU,GAErB,IAAI+yB,EAAS,UACT3e,EAAWwM,EAAetM,OAAMvb,OAAWA,EAAWkc,EAAQb,UAClEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACrF,GAAKA,EAAL,CACA,IAAI7gB,EAAOmC,EAAWrC,GAClBsjB,EAAcZ,EAAWxgB,EAAWhC,GACtB6iB,MAAkBO,IAMlCD,EAAanjB,EACb8iB,EAAgBM,IAGlB,IAAIvB,EAAYyB,EAASlgC,QAAQ+e,EAAWxB,EAAQb,YACjC,IAAf+hB,IAAkByB,EAASzB,GAAa7hB,GAC5CsgB,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,SAsEdqhB,GAAIA,EACJa,OA7DF,WACEb,GAAI,IA6DJc,UA1DF,WACEd,EAAG,IA0DHe,MAzCF,SAAe7D,QACE,IAAXA,IACFA,GAAS,GAGX,IAAI8D,EAAU9B,EAAkB/B,UAAUD,GAO1C,OALKsD,IACHH,EAAkB,GAClBG,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZH,GAAmB,IAGdW,MAwBTC,OApBF,SAAgB1G,GACd,IAAIlb,EAAW6f,EAAkB1B,eAAejD,GAEhD,OADA8F,EAAkB,GACX,WACLA,GAAmB,GACnBhhB,OAiBJ,OAAOG,EAGT,SAAStjB,EAAMY,EAAG2lC,EAAYC,GAC5B,OAAOlmD,KAAKqQ,IAAIrQ,KAAK4H,IAAI0Y,EAAG2lC,GAAaC,GAO3C,SAASC,EAAoB/+B,QACb,IAAVA,IACFA,EAAQ,IAGV,IAAI46B,EAAS56B,EACT25B,EAAsBiB,EAAOjB,oBAC7BqF,EAAwBpE,EAAOqE,eAC/BA,OAA2C,IAA1BD,EAAmC,CAAC,KAAOA,EAC5DE,EAAsBtE,EAAOuE,aAC7BA,OAAuC,IAAxBD,EAAiC,EAAIA,EACpDlE,EAAmBJ,EAAOK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CM,EAAoBjC,IAExB,SAASkC,EAASC,GAChBhqC,YAASoqB,EAAS4f,GAElB5f,EAAQj7B,OAASi7B,EAAQwjB,QAAQz+C,OACjC26C,EAAkBzB,gBAAgBje,EAAQb,SAAUa,EAAQ8d,QAG9D,SAAS2B,IACP,OAAOziD,KAAKC,SAASuvB,SAAS,IAAI2P,OAAO,EAAGkjB,GAG9C,IAAIriC,EAAQN,EAAM6mC,EAAc,EAAGF,EAAet+C,OAAS,GACvDy+C,EAAUH,EAAeruB,KAAI,SAAUC,GACzC,OAAmC0W,EAAe1W,OAAOnR,EAAjC,kBAAVmR,EAAsDwqB,IAAgDxqB,EAAMjf,KAAOypC,QAG/HkB,EAAanf,EAyCjB,SAASgf,EAAGljC,GACV,IAAImmC,EAAY/mC,EAAMsjB,EAAQhjB,MAAQM,EAAG,EAAG0iB,EAAQwjB,QAAQz+C,OAAS,GAEjEo6B,EAAWa,EAAQwjB,QAAQC,GAC/B/D,EAAkB7B,oBAAoB1e,EAFzB,MAE2C4e,GAAqB,SAAUmC,GACjFA,EACFP,EAAS,CACP7B,OALO,MAMP3e,SAAUA,EACVniB,MAAOymC,IAKT9D,OA8BN,IAAI3f,EAAU,CACZj7B,OAAQy+C,EAAQz+C,OAChB+4C,OAAQ,MACR3e,SAAUqkB,EAAQxmC,GAClBA,MAAOA,EACPwmC,QAASA,EACT7C,WAAYA,EACZvqB,KA1FF,SAAciJ,EAAMtU,GAElB,IAAI+yB,EAAS,OACT3e,EAAWwM,EAAetM,EAAMtU,EAAO00B,IAAazf,EAAQb,UAChEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GACrF,GAAKA,EAAL,CACA,IACIuD,EADYzjB,EAAQhjB,MACI,EACxB0mC,EAAc1jB,EAAQwjB,QAAQrqB,MAAM,GAEpCuqB,EAAY3+C,OAAS0+C,EACvBC,EAAYC,OAAOF,EAAWC,EAAY3+C,OAAS0+C,EAAWtkB,GAE9DukB,EAAYttB,KAAK+I,GAGnBwgB,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,EACVniB,MAAOymC,EACPD,QAASE,SAuEb7uB,QAlEF,SAAiBwK,EAAMtU,GAErB,IAAI+yB,EAAS,UACT3e,EAAWwM,EAAetM,EAAMtU,EAAO00B,IAAazf,EAAQb,UAChEugB,EAAkB7B,oBAAoB1e,EAAU2e,EAAQC,GAAqB,SAAUmC,GAChFA,IACLlgB,EAAQwjB,QAAQxjB,EAAQhjB,OAASmiB,EACjCwgB,EAAS,CACP7B,OAAQA,EACR3e,SAAUA,SA0DdqhB,GAAIA,EACJa,OAnCF,WACEb,GAAI,IAmCJc,UAhCF,WACEd,EAAG,IAgCHoD,MA7BF,SAAetmC,GACb,IAAImmC,EAAYzjB,EAAQhjB,MAAQM,EAChC,OAAOmmC,GAAa,GAAKA,EAAYzjB,EAAQwjB,QAAQz+C,QA4BrDw8C,MAzBF,SAAe7D,GAKb,YAJe,IAAXA,IACFA,GAAS,GAGJgC,EAAkB/B,UAAUD,IAqBnC+D,OAlBF,SAAgB1G,GACd,OAAO2E,EAAkB1B,eAAejD,KAmB1C,OAAO/a,I,6BCn5BM,SAAS6jB,EAAgBn7C,GAItC,OAHAm7C,EAAkBhuC,OAAOia,eAAiBja,OAAOiuC,eAAiB,SAAyBp7C,GACzF,OAAOA,EAAEq7C,WAAaluC,OAAOiuC,eAAep7C,KAEvBA,GAJzB,mC,6BCAA,6CAEe,SAASs7C,EAAc3I,GACpC,IAAI4I,EAAa5I,EAAK4I,WAClBC,EAAc7I,EAAK8I,QAMnBC,GALO/I,EAAKj2B,KACCi2B,EAAKtwB,MAGFpF,cAA4B7B,IAAfmgC,GACAplB,SAE7BwlB,EAAkB1+B,WAAeu+B,GACjCI,EAAaD,EAAgB,GAC7BE,EAAWF,EAAgB,GA0B/B,MAAO,CAxBKD,EAAeH,EAAaK,EAmBX3+B,eAAkB,SAAU6+B,GAClDJ,GACHG,EAASC,KAEV,O,iICyBDC,EAAuB9+B,cAAiB,SAAiBvB,EAAOyB,GAClE,IAAIsa,EAAW/b,EAAM+b,SACjBra,EAAU1B,EAAM0B,QAChB6mB,EAAYvoB,EAAMuoB,UAClB+X,EAAetgC,EAAM6X,MACrBA,OAAyB,IAAjByoB,EAA0B,UAAYA,EAC9CC,EAAmBvgC,EAAM8c,UACzBlc,OAAiC,IAArB2/B,EAA8B,MAAQA,EAClDC,EAAkBxgC,EAAMygC,SACxBA,OAA+B,IAApBD,EAA6B,UAAYA,EACpDE,EAAY1gC,EAAM0gC,UAClBC,EAAc3gC,EAAM2gC,YACpBC,EAAiB5gC,EAAM6gC,QACvBA,OAA6B,IAAnBD,EAA4B,YAAcA,EACpD/+B,EAAQ5D,YAAyB+B,EAAO,CAAC,WAAY,UAAW,YAAa,QAAS,YAAa,WAAY,YAAa,cAAe,YAE/I,OAAoBuB,gBAAoBX,EAAWpP,YAAS,CAC1D+2B,UAAWuY,YAAKp/B,EAAQq/B,KAAMxY,EAAqB,YAAV1Q,GAAuBnW,EAAQ,QAAQuW,OAAOxD,YAAWoD,KAAuB,YAAb4oB,GAA0B/+B,EAAQ,WAAWuW,OAAOxD,YAAWgsB,MAC3KO,UAAW,QACXH,QAASA,EACThpB,MAAO6oB,EACP,eAAeC,QAAcjhC,EAC7BuhC,KAAMN,EAAc,WAAQjhC,EAC5B+B,IAAKA,GACJI,GAAQka,EAAU4kB,EAA2Bp/B,gBAAoB,QAAS,KAAMo/B,GAAe,SAsEpGN,EAAQa,QAAU,UACHzgC,mBAxJK,SAAgBkB,GAClC,MAAO,CAELo/B,KAAM,CACJI,WAAY,OACZziD,MAAO,MACPC,OAAQ,MACRyiD,QAAS,eACTC,KAAM,eACNC,WAAY,EACZb,SAAU9+B,EAAM4/B,WAAWC,QAAQ,IACnCC,WAAY9/B,EAAM+/B,YAAY3oD,OAAO,OAAQ,CAC3C4oD,SAAUhgC,EAAM+/B,YAAYC,SAASC,WAKzCC,aAAc,CACZhqB,MAAOlW,EAAMmgC,QAAQC,QAAQC,MAI/BC,eAAgB,CACdpqB,MAAOlW,EAAMmgC,QAAQI,UAAUF,MAIjCG,YAAa,CACXtqB,MAAOlW,EAAMmgC,QAAQpI,OAAO7zB,QAI9Bu8B,WAAY,CACVvqB,MAAOlW,EAAMmgC,QAAQ5iC,MAAM8iC,MAI7BK,cAAe,CACbxqB,MAAOlW,EAAMmgC,QAAQpI,OAAO4I,UAI9BC,gBAAiB,CACf9B,SAAU,WAIZ+B,cAAe,CACb/B,SAAU9+B,EAAM4/B,WAAWC,QAAQ,KAIrCiB,cAAe,CACbhC,SAAU9+B,EAAM4/B,WAAWC,QAAQ,QAmGP,CAChCxgC,KAAM,cADOP,CAEZ4/B,GC1JY,SAAS5hB,EAAcxD,EAAM5Z,GAC1C,IAAIT,EAAY,SAAmBZ,EAAOyB,GACxC,OAAoBF,IAAMW,cAAcm+B,EAAS7uC,YAAS,CACxDiQ,IAAKA,GACJzB,GAAQib,IAUb,OADAra,EAAUsgC,QAAUb,EAAQa,QACR3/B,IAAMqb,KAAmBrb,IAAMC,WAAWZ,M,6BCZjD,SAAS8hC,IACtB,IAAK,IAAInrB,EAAO72B,UAAUC,OAAQgiD,EAAQ,IAAIjqD,MAAM6+B,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFmrB,EAAMnrB,GAAQ92B,UAAU82B,GAG1B,OAAOmrB,EAAMr7B,QAAO,SAAU8vB,EAAKwL,GACjC,OAAY,MAARA,EACKxL,EASF,WACL,IAAK,IAAIyL,EAAQniD,UAAUC,OAAQ6e,EAAO,IAAI9mB,MAAMmqD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFtjC,EAAKsjC,GAASpiD,UAAUoiD,GAG1B1L,EAAIplC,MAAMC,KAAMuN,GAChBojC,EAAK5wC,MAAMC,KAAMuN,OAElB,eAjCL,mC,6BCGe,SAASujC,EAAOzM,EAAWC,GACxC,MACE,MAAM,IAAI5hB,MAAM4hB,GAAhB,4BAFJ,mC,wHC0CA,cAqQA,OAlPI,YAAAyM,kBAAA,WAEI,MADiC,CAAC/wC,KAAKgxC,cAAehxC,KAAKixC,aAC1C9qB,KAAK,IAAW+qB,qBAAqBxK,eAM1D,YAAAyK,mBAAA,WACI,OAAOC,EAAcC,wBAAwB,CACzCL,cAAehxC,KAAKgxC,cACpBC,YAAajxC,KAAKixC,YAClBK,SAAUtxC,KAAKuxC,MACfC,SAAUxxC,KAAKwxC,SACfC,eAAgBzxC,KAAKyxC,kBAO7B,YAAAC,aAAA,WACI,OAAQ1xC,KAAK2xC,eACT,KAAK,IAAiBC,kBAClB,OAAO,IAAUhxC,KACrB,KAAK,IAAiBixC,mBAClB,OAAO,IAAUC,IACrB,KAAK,IAAiBC,mBAClB,OAAO,IAAUC,MACrB,KAAK,IAAiBC,qBAClB,OAAO,IAAUC,QACrB,QACI,MAAM,IAAgBz1B,qCAQlC,YAAA01B,eAAA,WACI,MAAO,CACHnB,cAAehxC,KAAKgxC,cACpBC,YAAajxC,KAAKixC,YAClBK,SAAUtxC,KAAKuxC,MACfC,SAAUxxC,KAAKwxC,SACfC,eAAgBzxC,KAAKyxC,eACrB1iC,KAAM/O,KAAK+O,KACXqjC,cAAepyC,KAAKoyC,gBAQrB,EAAAf,wBAAP,SAA+BgB,GAO3B,MANmB,CACfA,EAAiBrB,cACjBqB,EAAiBpB,aAAe,GAChCoB,EAAiBf,UAAY,IAGfnrB,KAAK,IAAW+qB,qBAAqBxK,eAUpD,EAAA4L,cAAP,SACIC,EACAvB,EACAwB,EACAC,EACAC,EACAC,EACAC,G,gBAEMC,EAAyB,IAAIzB,EAEnCyB,EAAQlB,cAAgB,IAAiBI,mBACzCc,EAAQN,WAAaA,EACrBM,EAAQ7B,cAAgBA,EAExB,IAAM8B,EAAMN,EAAUO,oBACtB,GAAI,IAAY31B,QAAQ01B,GACpB,MAAM,IAAgB32B,qCAyB1B,OAtBA02B,EAAQ5B,YAAc6B,EAEtBD,EAAQtB,OAAuB,QAAf,EAAO,OAAPkB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEC,MAAO,GACxCJ,EAAQH,aAAeA,EAEnBD,IACAI,EAAQT,cAAgBK,EAAQO,OAGhCH,EAAQpB,gBAAgC,QAAf,EAAO,OAAPgB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEE,OAAsB,QAAnB,EAAW,OAAPT,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEnkD,MAAO,GAMzEgkD,EAAQrB,UAA0B,QAAf,EAAO,OAAPiB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEG,uBAAsC,QAAf,EAAO,OAAPV,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEI,QAAQX,EAAQO,OAAOI,OAAO,GAAI,IAC9GP,EAAQ9jC,KAAsB,QAAlB,EAAU,OAAP0jC,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEjkC,MAGpC8jC,EAAQF,mBAAqBA,EAC7BE,EAAQD,YAAcA,EAEfC,GAQJ,EAAAQ,qBAAP,SACIb,EACAxB,EACAyB,EACAC,EACAC,EACAC,G,YAEMC,EAAyB,IAAIzB,EAEnCyB,EAAQlB,cAAiBa,EAAUb,gBAAkB,IAAc2B,KAAQ,IAAiB1B,kBAAoB,IAAiBK,qBACjIY,EAAQ7B,cAAgBA,EAExB6B,EAAQtB,MAAQ,GAChBsB,EAAQH,aAAeA,EAEvB,IAAMI,EAAMN,EAAUO,oBAEtB,GAAI,IAAY31B,QAAQ01B,GACpB,MAAM,IAAgB32B,qCAsB1B,OAnBIs2B,IAEAI,EAAQpB,gBAAgC,QAAf,EAAO,OAAPgB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEE,OAAsB,QAAnB,EAAW,OAAPT,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEnkD,MAAO,GAEzEgkD,EAAQrB,UAA0B,QAAf,EAAO,OAAPiB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEO,MAAO,GAC3CV,EAAQ9jC,MAAsB,QAAf,EAAO,OAAP0jC,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEjkC,OAAQ,GACxC8jC,EAAQT,cAAuB,OAAPK,QAAO,IAAPA,OAAO,EAAPA,EAASO,QAGrCH,EAAQ5B,YAAc6B,EAEtBD,EAAQF,mBAAqBA,EAC7BE,EAAQD,YAAcA,EAOfC,GAQJ,EAAAW,sBAAP,SAA6BC,EAA0BC,EAAyBC,EAAgBC,EAAoBnB,G,MAE1GoB,GAA2B,QAAf,EAAO,OAAPpB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAM,eAAEnkD,KAAM4jD,EAAQO,OAAOnkD,IAAM,IAAUiT,aAGxE,GAAI4xC,IAAa,IAAcJ,KAC3B,OAAOO,EAIX,GAAIJ,EAAkB,CAClB,IAAMlB,EAAa,YAAgBkB,EAAkBG,GACrD,IAAK,IAAYx2B,QAAQm1B,EAAWuB,OAAS,IAAY12B,QAAQm1B,EAAWwB,MACxE,MAAO,GAAGxB,EAAWuB,IAAM,IAAWE,sBAAwBzB,EAAWwB,KAMjF,OADAJ,EAAOM,QAAQ,8BACRJ,GAOJ,EAAAK,gBAAP,SAAuBC,GAEnB,QAAKA,IAKDA,EAAOt0C,eAAe,kBACtBs0C,EAAOt0C,eAAe,gBACtBs0C,EAAOt0C,eAAe,UACtBs0C,EAAOt0C,eAAe,mBACtBs0C,EAAOt0C,eAAe,aACtBs0C,EAAOt0C,eAAe,mBAUvB,EAAAu0C,mBAAP,SAA0BC,EAA8BC,EAA8BC,GAClF,IAAKF,IAAaC,EACd,OAAO,EAGX,IAAIE,GAAc,EAClB,GAAID,EAAe,CACf,IAAME,EAAkBJ,EAASjC,eAAiB,GAC5CsC,EAAkBJ,EAASlC,eAAiB,GAGlDoC,EAAeC,EAAeE,MAAQD,EAAeC,KACpDF,EAAeG,QAAUF,EAAeE,MAG7C,OAAQP,EAASrD,gBAAkBsD,EAAStD,eACvCqD,EAAS5C,iBAAmB6C,EAAS7C,gBACrC4C,EAAS7C,WAAa8C,EAAS9C,UAC/B6C,EAAS/C,WAAagD,EAAShD,UAC/B+C,EAASpD,cAAgBqD,EAASrD,aACnCuD,GAEZ,E,iCClTA,mIAIA,SAASK,EAAkBC,GACzB,OAAOnuD,KAAKqQ,IAAI,IAAOrQ,KAAK8V,IAAI,EAAGq4C,GAAe,KAG7C,SAASC,EAAa/nC,GAC3B,MAA0D,oBAAlC,MAATA,OAAgB,EAASA,EAAMgoC,QAEzC,IAAIC,EAAiB,SAAwBvmC,GAClD1O,KAAKk1C,OAAoB,MAAXxmC,OAAkB,EAASA,EAAQwmC,OACjDl1C,KAAKm1C,OAAoB,MAAXzmC,OAAkB,EAASA,EAAQymC,QAE5C,SAASC,EAAiBpoC,GAC/B,OAAOA,aAAiBioC,EAGnB,IAAII,EAAU,SAAiBC,GACpC,IAGIC,EACAC,EACAC,EACAC,EANAvwB,EAAQnlB,KAER21C,GAAc,EAMlB31C,KAAKg1C,OAAS,SAAUY,GACtB,OAAmB,MAAZL,OAAmB,EAASA,EAASK,IAG9C51C,KAAK21C,YAAc,WACjBA,GAAc,GAGhB31C,KAAK61C,SAAW,WACd,OAAqB,MAAdL,OAAqB,EAASA,KAGvCx1C,KAAK80C,aAAe,EACpB90C,KAAK81C,UAAW,EAChB91C,KAAK+1C,YAAa,EAClB/1C,KAAKg2C,uBAAwB,EAC7Bh2C,KAAKi2C,QAAU,IAAI9oC,SAAQ,SAAU+oC,EAAcC,GACjDV,EAAiBS,EACjBR,EAAgBS,KAGlB,IAAIxpC,EAAU,SAAiBK,GACxBmY,EAAM4wB,aACT5wB,EAAM4wB,YAAa,EACC,MAApBT,EAAOc,WAA6Bd,EAAOc,UAAUppC,GACvC,MAAdwoC,GAA8BA,IAC9BC,EAAezoC,KAIfJ,EAAS,SAAgBI,GACtBmY,EAAM4wB,aACT5wB,EAAM4wB,YAAa,EACD,MAAlBT,EAAOe,SAA2Bf,EAAOe,QAAQrpC,GACnC,MAAdwoC,GAA8BA,IAC9BE,EAAc1oC,MAiBR,SAASspC,IAEjB,IAAInxB,EAAM4wB,WAAV,CAIA,IAAIQ,EAEJ,IACEA,EAAiBjB,EAAOh7C,KACxB,MAAO2S,GACPspC,EAAiBppC,QAAQP,OAAOK,GAIlCsoC,EAAW,SAAkBK,GAC3B,IAAKzwB,EAAM4wB,aACTnpC,EAAO,IAAIqoC,EAAeW,IAEtBb,EAAawB,IACf,IACEA,EAAevB,SACf,MAAOwB,MAMfrxB,EAAM6wB,sBAAwBjB,EAAawB,GAC3CppC,QAAQR,QAAQ4pC,GAAgBnpC,KAAKT,GAAS8J,OAAM,SAAUxJ,GAC5D,IAAIwpC,EAAeC,EAGnB,IAAIvxB,EAAM4wB,WAAV,CAKA,IAAIY,EAA0C,OAAjCF,EAAgBnB,EAAOqB,OAAiBF,EAAgB,EACjEG,EAAyD,OAA3CF,EAAqBpB,EAAOsB,YAAsBF,EAAqB7B,EACrFgC,EAA8B,oBAAfD,EAA4BA,EAAWzxB,EAAM2vB,aAAc7nC,GAAS2pC,EACnFE,GAAwB,IAAVH,GAAmC,kBAAVA,GAAsBxxB,EAAM2vB,aAAe6B,GAA0B,oBAAVA,GAAwBA,EAAMxxB,EAAM2vB,aAAc7nC,IAEpJ0oC,GAAgBmB,GAMpB3xB,EAAM2vB,eAEW,MAAjBQ,EAAOyB,QAA0BzB,EAAOyB,OAAO5xB,EAAM2vB,aAAc7nC,GAEnEmJ,YAAMygC,GACLzpC,MAAK,WACJ,IAAK4pC,IAAaC,cAAgBC,IAAcC,WAC9C,OApEC,IAAIhqC,SAAQ,SAAUiqC,GAC3B5B,EAAa4B,EACbjyB,EAAM2wB,UAAW,EACC,MAAlBR,EAAO+B,SAA2B/B,EAAO+B,aACxCjqC,MAAK,WACNooC,OAAa/nC,EACb0X,EAAM2wB,UAAW,EACI,MAArBR,EAAOgC,YAA8BhC,EAAOgC,mBA+DzClqC,MAAK,WACFuoC,EACF/oC,EAAOK,GAEPqpC,QAjBF1pC,EAAOK,QAwBbqpC,K,6HClJIjpB,E,kDACF,WAAYte,EAAM2Z,GAAS,kCACvB,cAAM3Z,EAAM2Z,IACP6uB,cAAgB,KACrB,EAAKC,gBAAkB,KACvB,EAAKC,eAAiB,KACtB,EAAKC,oBAAsB,IAAIC,IAC/B,EAAKC,mBAAqB,IAAID,IANP,E,+CAS3B,WACI33C,KAAK+tB,SAAS4C,KAAKknB,WAAW73C,KAAKy3C,kB,2BAGvC,WACIz3C,KAAK+tB,SAAS4C,KAAKknB,WAAW,Q,2BAGlC,WACI73C,KAAK+tB,SAAS4C,KAAKmnB,aAAa93C,KAAKu3C,eACrCv3C,KAAK+tB,SAAS4C,KAAKmnB,aAAa93C,KAAKw3C,iBACrCx3C,KAAK+tB,SAAS4C,KAAKonB,cAAc/3C,KAAKy3C,gBACtCz3C,KAAK03C,oBAAoBM,QACzBh4C,KAAK43C,mBAAmBI,U,iCAG5B,SAAoBC,EAAiBC,EAAmBC,GAAiB,WAE/DxnB,EAAK3wB,KAAK+tB,SAAS4C,KAIzB,GAHA3wB,KAAKu3C,cAAgBv3C,KAAKo4C,cAAcH,EAAiBj4C,KAAK+tB,SAAS4C,KAAK0nB,eAC5Er4C,KAAKw3C,gBAAkBx3C,KAAKo4C,cAAcF,EAAmBl4C,KAAK+tB,SAAS4C,KAAK2nB,iBAErD,OAAvBt4C,KAAKu3C,eAAmD,OAAzBv3C,KAAKw3C,gBAA0B,CAe9D,GAdAx3C,KAAKy3C,eAAiB9mB,EAAG4nB,gBACzB5nB,EAAG6nB,aAAax4C,KAAKy3C,eAAgBz3C,KAAKu3C,eAC1C5mB,EAAG6nB,aAAax4C,KAAKy3C,eAAgBz3C,KAAKw3C,iBAGrCW,GAED34C,OAAO2V,KAAMgjC,GAAkBl+C,SAAS,SAACw+C,GACrC9nB,EAAG+nB,mBAAoB,EAAKjB,eAAgBU,EAAgBM,GAAaA,MAIjF9nB,EAAGgoB,YAAY34C,KAAKy3C,iBAEf9mB,EAAGioB,oBAAoB54C,KAAKy3C,eAAgB9mB,EAAGkoB,aAAc,CAC9D,IAAIC,EAASnoB,EAAGooB,kBAAkB/4C,KAAKy3C,gBAEvC,MADAvxC,QAAQ1J,IAAIs8C,GACN,IAAIp2B,MAAMo2B,GAGpB,IADA,IAAIE,EAAaroB,EAAGioB,oBAAoB54C,KAAKy3C,eAAgB9mB,EAAGsoB,mBACvDzqD,EAAI,EAAGA,EAAIwqD,EAAYxqD,IAAK,CACjC,IAAMue,EAAO4jB,EAAGuoB,gBAAgBl5C,KAAKy3C,eAAgBjpD,GACjD2qD,EAAOn5C,KAAK+tB,SAAS4C,KAAKyoB,kBAAkBp5C,KAAKy3C,eAAgB1qC,EAAKgC,MAC1E/O,KAAK43C,mBAAmB7vD,IAAIglB,EAAKgC,KAAMoqC,O,gCAKnD,SAAmBrwB,EAAU/Z,GAEzB,IAAM4hB,EAAK3wB,KAAK+tB,SAAS4C,KACzBA,EAAG+nB,mBAAoB14C,KAAKy3C,eAAgB3uB,EAAU/Z,GACtD4hB,EAAGgoB,YAAY34C,KAAKy3C,gBAEpBz3C,KAAK43C,mBAAmBI,QAGxB,IADA,IAAIgB,EAAaroB,EAAGioB,oBAAoB54C,KAAKy3C,eAAgB9mB,EAAGsoB,mBACvDzqD,EAAI,EAAGA,EAAIwqD,EAAYxqD,IAAK,CACjC,IAAMue,EAAO4jB,EAAGuoB,gBAAgBl5C,KAAKy3C,eAAgBjpD,GACjD2qD,EAAOn5C,KAAK+tB,SAAS4C,KAAKyoB,kBAAkBp5C,KAAKy3C,eAAgB1qC,EAAKgC,MAC1E/O,KAAK43C,mBAAmB7vD,IAAIglB,EAAKgC,KAAMoqC,M,2BAI/C,SAAcE,EAAcC,GACxB,IAAIC,EAASv5C,KAAK+tB,SAAS4C,KAAK6oB,aAAaF,GAG7C,GAFAt5C,KAAK+tB,SAAS4C,KAAK0oB,aAAaE,EAAQF,GACxCr5C,KAAK+tB,SAAS4C,KAAKynB,cAAcmB,IAC5Bv5C,KAAK+tB,SAAS4C,KAAK8oB,mBAAmBF,EAAQv5C,KAAK+tB,SAAS4C,KAAK+oB,gBAAiB,CACnF,IAAIZ,EAAS94C,KAAK+tB,SAAS4C,KAAKgpB,iBAAiBJ,GAC7CK,EAAMC,IAAoBf,EAAQO,EAAcC,GAEpD,MADApzC,QAAQ4zC,KAAKF,EAAIG,MACX,IAAIr3B,MAAMk3B,EAAII,OAExB,OAAOT,I,2BAGX,SAActB,EAAiBC,GAC3Bl4C,KAAK+3C,gBACL/3C,KAAKi6C,oBAAoBhC,EAAiBC,K,+BAG9C,SAAkBgC,GACd,IAAIC,EAAYn6C,KAAK43C,mBAAmBxrB,IAAI8tB,GAE5C,YAAkBzsC,IAAd0sC,GAEAj0C,QAAQ1J,IAAI,wBAA0B09C,GAC/B,MAEJC,I,8BAEX,WACI,OAAOn6C,KAAKy3C,iB,gCAGhB,SAAmB2C,GACf,IAAIC,EAAar6C,KAAK03C,oBAAoBtrB,IAAIguB,GAC9C,QAAmB3sC,IAAf4sC,EAA0B,CAE1B,IAAIC,EAAOt6C,KAAK+tB,SAAS4C,KAAK4pB,mBAAmBv6C,KAAKy3C,eAAgB2C,GACtE,GAAa,OAATE,EAEA,OAAO,KAEXt6C,KAAK03C,oBAAoB3vD,IAAIqyD,EAAaE,GAC1CD,EAAaC,EAEjB,OAAOD,I,+BAIX,SAAkBD,EAAaI,GAC3B,IAAMF,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK8pB,UAAUH,EAAME,K,gCAGvC,SAAmBJ,EAAaM,GAC5B,IAAMJ,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKgqB,WAAWL,EAAMI,K,0BAGxC,SAAaN,EAAaptC,GACtB,IAAMstC,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK8pB,UAAUH,EAAMttC,K,0BAGvC,SAAaotC,EAAaptC,GACtB,IAAMstC,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKiqB,UAAUN,EAAMttC,K,0BAGvC,SAAaotC,EAAa9zC,EAAIlL,GAC1B,IAAMk/C,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKkqB,UAAUP,EAAMh0C,EAAIlL,K,0BAG3C,SAAag/C,EAAa9zC,EAAIlL,EAAIC,GAC9B,IAAMi/C,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKmqB,UAAUR,EAAMh0C,EAAIlL,EAAIC,K,2BAG/C,SAAc++C,EAAalgD,GACvB,IAAMogD,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKoqB,WAAWT,EAAMpgD,K,0BAGxC,SAAakgD,EAAa9zC,EAAIlL,EAAIC,EAAIC,GAClC,IAAMg/C,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKqqB,UAAUV,EAAMh0C,EAAIlL,EAAIC,EAAIC,K,2BAGnD,SAAc8+C,EAAazwD,GACvB,IAAM2wD,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAKsqB,WAAWX,EAAM3wD,K,0BAGxC,SAAaywD,EAAac,EAAIC,EAAIC,EAAIC,GAClC,IAAMf,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK2qB,UAAUhB,EAAMY,EAAIC,EAAIC,EAAIC,K,2BAGnD,SAAcjB,EAAalgD,GACvB,IAAMogD,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK4qB,WAAWjB,EAAMpgD,K,8BAGxC,SAAiBkgD,EAAatpD,GAC1B,IAAMwpD,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK6qB,iBAAiBlB,GAAM,EAAOxpD,K,8BAGrD,SAAiBspD,EAAatpD,GAC1B,IAAMwpD,EAAOt6C,KAAKu6C,mBAAmBH,GACrCp6C,KAAK+tB,SAAS4C,KAAK8qB,iBAAiBnB,GAAM,EAAOxpD,O,GA3LlCg9B,M,6BCHvB,yDA2II4tB,EAAwB,CAC1BC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,UAAW,KACXC,UAAW,KACXC,MAAO,IACPC,MAAO,KAELC,EAA0B/sC,cAAiB,SAAoBvB,EAAOyB,GACxE,IAAI8sC,EAAevuC,EAAMwuC,MACrBA,OAAyB,IAAjBD,EAA0B,UAAYA,EAC9C7sC,EAAU1B,EAAM0B,QAChB6mB,EAAYvoB,EAAMuoB,UAClB+X,EAAetgC,EAAM6X,MACrBA,OAAyB,IAAjByoB,EAA0B,UAAYA,EAC9CxjB,EAAY9c,EAAM8c,UAClB2xB,EAAiBzuC,EAAMohC,QACvBA,OAA6B,IAAnBqN,EAA4B,UAAYA,EAClDC,EAAsB1uC,EAAM2uC,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAgB5uC,EAAM6uC,OACtBA,OAA2B,IAAlBD,GAAmCA,EAC5CE,EAAmB9uC,EAAM+uC,UACzBA,OAAiC,IAArBD,GAAsCA,EAClDE,EAAiBhvC,EAAMivC,QACvBA,OAA6B,IAAnBD,EAA4B,QAAUA,EAChDE,EAAwBlvC,EAAMmvC,eAC9BA,OAA2C,IAA1BD,EAAmCvB,EAAwBuB,EAC5ErtC,EAAQ5D,YAAyB+B,EAAO,CAAC,QAAS,UAAW,YAAa,QAAS,YAAa,UAAW,eAAgB,SAAU,YAAa,UAAW,mBAE7JY,EAAYkc,IAAciyB,EAAY,IAAMI,EAAeF,IAAYtB,EAAsBsB,KAAa,OAC9G,OAAoB1tC,gBAAoBX,EAAWpP,YAAS,CAC1D+2B,UAAWuY,YAAKp/B,EAAQq/B,KAAMxY,EAAuB,YAAZ0mB,GAAyBvtC,EAAQutC,GAAoB,YAAVp3B,GAAuBnW,EAAQ,QAAQuW,OAAOxD,YAAWoD,KAAUg3B,GAAUntC,EAAQmtC,OAAQF,GAAgBjtC,EAAQitC,aAAcI,GAAartC,EAAQqtC,UAAqB,YAAVP,GAAuB9sC,EAAQ,QAAQuW,OAAOxD,YAAW+5B,KAAsB,YAAZpN,GAAyB1/B,EAAQ,UAAUuW,OAAOxD,YAAW2sB,MACvX3/B,IAAKA,GACJI,OA0EUpB,iBApPK,SAAgBkB,GAClC,MAAO,CAELo/B,KAAM,CACJqO,OAAQ,GAIVf,MAAO1sC,EAAM4/B,WAAW8M,MAGxBD,MAAOzsC,EAAM4/B,WAAW6M,MAGxBiB,QAAS1tC,EAAM4/B,WAAW8N,QAG1BC,OAAQ3tC,EAAM4/B,WAAW+N,OAGzB1B,GAAIjsC,EAAM4/B,WAAWqM,GAGrBC,GAAIlsC,EAAM4/B,WAAWsM,GAGrBC,GAAInsC,EAAM4/B,WAAWuM,GAGrBC,GAAIpsC,EAAM4/B,WAAWwM,GAGrBC,GAAIrsC,EAAM4/B,WAAWyM,GAGrBC,GAAItsC,EAAM4/B,WAAW0M,GAGrBC,UAAWvsC,EAAM4/B,WAAW2M,UAG5BC,UAAWxsC,EAAM4/B,WAAW4M,UAG5BoB,SAAU5tC,EAAM4/B,WAAWgO,SAG3BC,OAAQ,CACNC,SAAU,WACV9wD,OAAQ,EACRD,MAAO,EACPgxD,SAAU,UAIZC,UAAW,CACTC,UAAW,QAIbC,YAAa,CACXD,UAAW,UAIbE,WAAY,CACVF,UAAW,SAIbG,aAAc,CACZH,UAAW,WAIbf,OAAQ,CACNa,SAAU,SACVM,aAAc,WACdC,WAAY,UAIdtB,aAAc,CACZuB,aAAc,UAIhBnB,UAAW,CACTmB,aAAc,IAIhBC,aAAc,CACZt4B,MAAO,WAITgqB,aAAc,CACZhqB,MAAOlW,EAAMmgC,QAAQC,QAAQC,MAI/BC,eAAgB,CACdpqB,MAAOlW,EAAMmgC,QAAQI,UAAUF,MAIjCoO,iBAAkB,CAChBv4B,MAAOlW,EAAMmgC,QAAQuO,KAAKtO,SAI5BuO,mBAAoB,CAClBz4B,MAAOlW,EAAMmgC,QAAQuO,KAAKnO,WAI5BE,WAAY,CACVvqB,MAAOlW,EAAMmgC,QAAQ5iC,MAAM8iC,MAI7BuO,cAAe,CACbnP,QAAS,UAIXoP,aAAc,CACZpP,QAAS,YAoHmB,CAChCpgC,KAAM,iBADOP,CAEZ6tC,I,6BC1OYmC,IAlBf,SAAiBna,EAAWC,M,yFCWxB,WAAY/qB,EAAoBC,EAAuB4J,GAAvD,MACI,YAAM7J,EAAWC,EAAc4J,IAAS,K,OACxC,EAAKrU,KAAO,cAEZvP,OAAOia,eAAe,EAAMglC,EAAY7+C,W,EAEhD,OARiC,iBAQjC,E,OARiC,I,iCCFrB8+C,E,kCAAZ,SAAYA,GACR,yBACA,mBAFJ,CAAYA,MAAa,M,6BCNzB,IAAIC,EAAyBr/C,EAAQ,IAEjCs/C,EAA0Bt/C,EAAQ,IAEtCE,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAET3N,EAAQyuC,aAAU,EAElB,IAAIx+B,EAAQsvC,EAAwBt/C,EAAQ,IAIxCu/C,GAAW,EAFMF,EAAuBr/C,EAAQ,KAElBwuC,SAAuBx+B,EAAMW,cAAc,OAAQ,CACnFpY,EAAG,+FACD,wBAEJwH,EAAQyuC,QAAU+Q,G,6BCjBlB,IAAIF,EAAyBr/C,EAAQ,IAEjCs/C,EAA0Bt/C,EAAQ,IAEtCE,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAET3N,EAAQyuC,aAAU,EAElB,IAAIx+B,EAAQsvC,EAAwBt/C,EAAQ,IAIxCu/C,GAAW,EAFMF,EAAuBr/C,EAAQ,KAElBwuC,SAAuBx+B,EAAMW,cAAc,OAAQ,CACnFpY,EAAG,wIACD,YAEJwH,EAAQyuC,QAAU+Q,G,6BCnBlB,qDAGIC,GAAmB,EACnBC,GAA0B,EAC1BC,EAAiC,KACjCC,EAAsB,CACxBb,MAAM,EACNpgC,QAAQ,EACRiL,KAAK,EACLi2B,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,UAAU,EACV,kBAAkB,GAqCpB,SAASC,EAAc/pB,GACjBA,EAAMgqB,SAAWhqB,EAAMiqB,QAAUjqB,EAAMkqB,UAI3ChB,GAAmB,GAWrB,SAASiB,IACPjB,GAAmB,EAGrB,SAASkB,IACsB,WAAzBhgD,KAAKigD,iBAKHlB,IACFD,GAAmB,GAqBzB,SAASoB,EAAetqB,GACtB,IAAIv/B,EAASu/B,EAAMv/B,OAEnB,IACE,OAAOA,EAAOgnB,QAAQ,kBACtB,MAAOpQ,IAQT,OAAO6xC,GAxFT,SAAuC12B,GACrC,IAAIvC,EAAOuC,EAAKvC,KACZs6B,EAAU/3B,EAAK+3B,QAEnB,QAAgB,UAAZA,IAAuBlB,EAAoBp5B,IAAUuC,EAAKg4B,WAI9C,aAAZD,IAA2B/3B,EAAKg4B,YAIhCh4B,EAAKi4B,kBA4EkBC,CAA8BjqD,GAO3D,SAASkqD,IAKPxB,GAA0B,EAC1B9sC,OAAOuuC,aAAaxB,GACpBA,EAAiC/sC,OAAOqE,YAAW,WACjDyoC,GAA0B,IACzB,KAGU,SAAS0B,IActB,MAAO,CACLP,eAAgBA,EAChBQ,cAAeH,EACf/wC,IAhBQF,eAAkB,SAAU3B,GACpC,IAlDagzC,EAkDTv4B,EAAOw4B,cAAqBjzC,GAEpB,MAARya,KApDSu4B,EAqDHv4B,EAAKD,eApDbsiB,iBAAiB,UAAWkV,GAAe,GAC/CgB,EAAIlW,iBAAiB,YAAasV,GAAmB,GACrDY,EAAIlW,iBAAiB,cAAesV,GAAmB,GACvDY,EAAIlW,iBAAiB,aAAcsV,GAAmB,GACtDY,EAAIlW,iBAAiB,mBAAoBuV,GAAwB,MAkD9D,O,6BC/IL,aAaea,IAXf,SAAe1b,EAAKmB,GAClB,OAAKA,EAIEwa,YAAU3b,EAAKmB,EAAM,CAC1Bn/C,OAAO,IAJAg+C,I,6BCJX,aACIv2B,EAAemyC,cACJnyC,O,6BCFf,6CACe,SAASoyC,EAAav1B,EAASw1B,GAC5C,OAAoB3xC,iBAAqBmc,KAAwD,IAA5Cw1B,EAAS70C,QAAQqf,EAAQ5F,KAAKopB,W,6BCFrF,6CAGWiS,EAAS,CAElBC,UAAW,+BAGXC,QAAS,+BAETC,OAAQ,6BAERC,MAAO,gCAIE5R,EAAW,CACpB6R,SAAU,IACV5R,QAAS,IACTqK,MAAO,IAEPwH,SAAU,IAEVC,QAAS,IAETC,eAAgB,IAEhBC,cAAe,KAGjB,SAASC,EAASC,GAChB,MAAO,GAAG77B,OAAOr/B,KAAKsQ,MAAM4qD,GAAe,MAY9B,KACbX,OAAQA,EACRxR,SAAUA,EACV5oD,OAAQ,WACN,IAAIinB,EAAQtf,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,CAAC,OAC7EigB,EAAUjgB,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,GAE9EqzD,EAAoBpzC,EAAQghC,SAC5BqS,OAAuC,IAAtBD,EAA+BpS,EAAS8R,SAAWM,EACpEE,EAAkBtzC,EAAQwyC,OAC1Be,OAAmC,IAApBD,EAA6Bd,EAAOC,UAAYa,EAC/DE,EAAiBxzC,EAAQmoC,MACzBA,OAA2B,IAAnBqL,EAA4B,EAAIA,EAChCl2C,YAAyB0C,EAAS,CAAC,WAAY,SAAU,UAgCrE,OAAQjoB,MAAM+lB,QAAQuB,GAASA,EAAQ,CAACA,IAAQ4Q,KAAI,SAAUwjC,GAC5D,MAAO,GAAGn8B,OAAOm8B,EAAc,KAAKn8B,OAAiC,kBAAnB+7B,EAA8BA,EAAiBH,EAASG,GAAiB,KAAK/7B,OAAOi8B,EAAc,KAAKj8B,OAAwB,kBAAV6wB,EAAqBA,EAAQ+K,EAAS/K,OAC7M1wB,KAAK,MAEVi8B,sBAAuB,SAA+B11D,GACpD,IAAKA,EACH,OAAO,EAGT,IAAI21D,EAAW31D,EAAS,GAExB,OAAO/F,KAAKsQ,MAA2D,IAApD,EAAI,GAAKtQ,KAAK8V,IAAI4lD,EAAU,KAAQA,EAAW,O,6BCnGtE,8DAsFWrL,EAAe,IAlFM,SAAUsL,GAGxC,SAASC,IACP,OAAOD,EAAcviD,MAAMC,KAAMvR,YAAcuR,KAHjDskB,YAAei+B,EAAcD,GAM7B,IAAIv9B,EAASw9B,EAAa3iD,UAwE1B,OAtEAmlB,EAAO4f,YAAc,WACd3kC,KAAK0qC,qBACR1qC,KAAKwiD,2BAITz9B,EAAO09B,iBAAmB,SAA0BC,GAClD,IAAIv9B,EAAQnlB,KAERA,KAAK0qC,qBACP1qC,KAAK0qC,sBAGP1qC,KAAK0qC,oBAAsBgY,GAAM,SAAUC,GAClB,mBAAZA,EACTx9B,EAAMy9B,WAAWD,GAEjBx9B,EAAM09B,cAKZ99B,EAAO69B,WAAa,SAAoBD,GACtC3iD,KAAK2iD,QAAUA,EAEXA,GACF3iD,KAAK6iD,WAIT99B,EAAO89B,QAAU,WACf7iD,KAAKwkC,UAAUvqC,SAAQ,SAAUyqC,GAC/BA,QAIJ3f,EAAOkyB,UAAY,WACjB,MAA4B,mBAAjBj3C,KAAK2iD,QACP3iD,KAAK2iD,QAIU,qBAAbt6B,UAIJ,MAAC5a,EAAW,UAAW,aAAaq1C,SAASz6B,SAAS43B,kBAG/Dl7B,EAAOy9B,wBAA0B,WAC/B,IAAIO,GAEC/wC,MAAmC,OAArB+wC,EAAU9wC,aAAkB,EAAS8wC,EAAQtY,mBAC9DzqC,KAAKyiD,kBAAiB,SAAUI,GAC9B,IAAIne,EAAW,WACb,OAAOme,KAMT,OAFA5wC,OAAOw4B,iBAAiB,mBAAoB/F,GAAU,GACtDzyB,OAAOw4B,iBAAiB,QAAS/F,GAAU,GACpC,WAELzyB,OAAOy4B,oBAAoB,mBAAoBhG,GAC/CzyB,OAAOy4B,oBAAoB,QAAShG,QAMrC6d,EA/EuB,CAgF9Bhe,O,6BCpFF,WAKIye,EAAc1zC,gBAAoB,IAMvB0zC,O,wFCPA,SAASr2B,EAAmBjO,GACzC,OCJa,SAA4BA,GACzC,GAAIj4B,MAAM+lB,QAAQkS,GAAM,OAAO,OAAAkO,EAAA,GAAiBlO,GDGzC,CAAkBA,IELZ,SAA0BukC,GACvC,GAAsB,qBAAX3jC,QAA0BA,OAAOC,YAAY/f,OAAOyjD,GAAO,OAAOx8D,MAAMg/C,KAAKwd,GFIvD,CAAgBvkC,IAAQ,OAAAsB,EAAA,GAA2BtB,IGLvE,WACb,MAAM,IAAI7Q,UAAU,wIHIwE,K,2QImCjFq1C,EAA2D,CACpEC,kBAAmB,WACf,OAAOh2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDy0B,qBAAsB,WAClB,OAAOj2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExD00B,mBAAoB,WAChB,OAAOl2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExD20B,eAAgB,WACZ,MAAO,IAEXC,mBAAoB,WAChB,OAAO,MAEXC,qBAAsB,WAClB,OAAO,MAEXC,oBAAqB,WACjB,OAAO,MAEXC,sBAAuB,WACnB,OAAOv2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDg1B,WAAY,WACR,OAAOx2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDi1B,cAAe,WACX,OAAOz2C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDk1B,OAAQ,WACJ,OAAO12C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDm1B,eAAgB,WACZ,OAAO32C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDo1B,YAAa,WACT,OAAO52C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDq1B,UAAW,WACP,OAAO72C,QAAQP,OAAOuhB,EAAA,EAA8BQ,qCAExDs1B,iBAAkB,WACd,OAAO,MAEXC,oBAAqB,aAGrBC,UAAW,WACP,MAAMh2B,EAAA,EAA8BQ,oCAExCy1B,UAAW,aAGXC,iBAAkB,aAGlBC,iBAAkB,WACd,OAAO,MAEXC,yBAA0B,aAG1BC,oBAAqB,c,qCC5EzB,cAuCA,OAjCW,EAAAC,8BAAP,SAAqCngB,GACjC,OAAQA,EAAQogB,WACZ,KAAK3hC,EAAA,EAAU4hC,YACX,OAAO,IAAkBC,MAC7B,KAAK7hC,EAAA,EAAU8hC,iBACX,OAAO,IAAkBC,UAC7B,KAAK/hC,EAAA,EAAUgiC,oBACX,GAAIzgB,EAAQ0gB,kBAAoB,IAAgBC,UAAY3gB,EAAQ0gB,kBAAoB,IAAgBE,MACpG,OAAO,IAAkBC,aAE7B,MACJ,KAAKpiC,EAAA,EAAUqiC,sBACX,OAAO,IAAkBC,eAC7B,KAAKtiC,EAAA,EAAUuiC,aACX,OAAO,IAAkBC,OAC7B,KAAKxiC,EAAA,EAAUyiC,cACf,KAAKziC,EAAA,EAAU0iC,mBACf,KAAK1iC,EAAA,EAAU2iC,oBACf,KAAK3iC,EAAA,EAAU4iC,cACf,KAAK5iC,EAAA,EAAU6iC,mBACf,KAAK7iC,EAAA,EAAU8iC,WACX,OAAO,IAAkBC,KAC7B,KAAK/iC,EAAA,EAAUgjC,sBACf,KAAKhjC,EAAA,EAAUijC,sBACX,GAAI1hB,EAAQ0gB,kBAAoB,IAAgBC,UAAY3gB,EAAQ0gB,kBAAoB,IAAgBE,MACpG,OAAO,IAAkBY,KAMrC,OAAO,MAEf,E,WC/CMG,EAAmC,CACrCt4C,SADqC,EAErCu4C,WAAY96C,IAFyB,KAGrC+6C,SAHqC,GAIrCxS,OAAQ,IAAIyS,EAAJ,OAGCC,EAAc/2C,2BAGC+2C,EAAYC,SCrBxC,SAAgBC,EACZz8B,EACAvc,GAEA,0BAAWuc,EACAA,EAAP,GAEJ,ECfG,IACM08B,EAAN,QCGP,SAmBgBC,EAnBhB,GAmB6B,iBAAW38B,EAAX,EAAWA,SACpC48B,qBAAU,WACN/4C,2BAAkC/B,IAAlC+B,WACD,CAFH+4C,IAIA,IAAM/S,EAAiBgT,mBAAQ,WAC3B,OAAOh5C,oBD7BR,oBC6BC,KACD,CAFH,IAKA,EAAgCi5C,mBAAhC,uBAAM,EAAN,KAAM,EAAN,KAEA,EAAoCA,mBAA4Bx7C,IAAhE,4BAAM,EAAN,KAAM,EAAN,KAEAs7C,qBAAU,WACN,IAAMG,EAAal5C,EAAA,kBAA2B22B,YAC1C,OAAQA,EAAR,WACI,KAAKvhB,IAAL,cACA,KAAKA,IAAL,mBACA,KAAKA,IAAL,oBACA,KAAKA,IAAL,cACA,KAAKA,IAAL,mBACA,KAAKA,IAAL,WACA,KAAKA,IAAL,sBACA,KAAKA,IAAL,sBACI,IAAM+jC,EAAkBn5C,EAAxB,kBFhBpB,SAAsCo5C,EAAmCC,GACrE,GAAID,WAAkBC,EAAtB,OACI,SAGJ,IAAMC,EAAkB,YAAxB,GAEA,OAAOF,EAAA,OAAcG,YACjB,IAAMC,EAAWF,EAAjB,QACA,SAAKC,IAAL,IAIQA,kBAA2BC,EAA5B,eACCD,mBAA4BC,EAD7B,gBAECD,aAAsBC,EAF9B,YEIiBC,CAAsBN,EAA3B,IACInT,gDACA0T,MAEA1T,gDAOhB,OAFAA,0EAEO,WAEH,IACIA,+DACAhmC,6BAGT,CAACA,EAAUw4C,EA9BdO,IAgCAA,qBAAU,WACN,IAAMG,EAAal5C,EAAA,kBAA2B22B,YAC1C,IAAM3vB,EAAS2yC,gCAAf,GACA,OAAI3yC,IACAg/B,gCAA8BrP,EAAQogB,UAAtC/Q,iDACA4T,SAUR,OAPA5T,0EAEAhmC,iCAAuC,eAKhC,WACH,IACIgmC,+DACAhmC,6BAGT,CAACA,EArBJ+4C,IAuBA,IAAMc,EAA6B,CAC/B75C,WACAu4C,aACAC,WACAxS,UAGJ,OACI,kBAAC0S,EAAD,UAAsBr5C,MAAOw6C,GADjC,GCzFJ,IAAaC,EAAU,kBAAoB97B,qBAApC,ICDP,SAAS+7B,EAAW/5C,EAApB,GACI,IAAMg6C,EAAch6C,EAApB,iBACA,OAAIg6C,aAA2BC,iBAAoCA,EAApCA,gBAAyEA,EAAxG,WAC4BD,EAAA,QAAmBE,YACvC,QAAID,YAA+BA,2BAA8CC,WAAjF,mBAGID,iBAAoCA,gCAAmDC,gBAA3F,kBAGID,kBAAqCA,iCAAoDC,iBAA7F,mBAOGC,IAEP,KAQR,SAAgBC,EAAWH,GACvB,MAAiCH,IAA3B,EAAN,EAAM,SAAYvB,EAAlB,EAAkBA,WAEZ8B,EAAoB9B,IAAe96C,IAAf86C,aAAkDwB,EAAW/5C,EAAvF,GACA,EAA8Bi5C,mBAA9B,sBAAM,EAAN,KAAM,EAAN,KASA,OAPAF,qBAAU,WACN,IAAMuB,EAAiBP,EAAW/5C,EAAlC,GACKyjC,4BAAL,IACI8W,OAEL,CAAChC,EAAY0B,EAAoBj6C,EALpC+4C,IAOA,ECvCJ,SAAS,EAAT,OACI,OAAGyB,IAAiBA,YAAyBA,EAAzBA,eAAuDA,EAA3E,kBACI,EAGGR,SAAP,EAOJ,SAAgBS,EAAmBD,GAC/B,MAA8CV,IAAxC,EAAN,EAAQtB,SAAuBD,EAA/B,EAA+BA,WACzBrT,EAAUkV,EAAWI,GAA3B,IAEMH,EAAoB9B,IAAe96C,IAAf86C,SAAmDmC,EAAgBV,EAAa9U,EAA1G,GACA,EAAgD+T,mBAAhD,sBAAM,EAAN,KAAM,EAAN,KAMA,OAJAF,qBAAU,WACN4B,EAAoBD,EAAgBV,EAAa9U,EAAjDyV,MACD,CAACX,EAAa9U,EAFjB6T,IAIA,EChBJ,SAAgB6B,EAAhB,GAAwC,sDAA2Cz+B,EAA3C,EAA2CA,SACzEpB,EAAU++B,IAUhB,OAFwBW,EAPsBzB,mBAAQ,WAClD,MAAO,CACHnV,WACAR,gBACAS,oBAEL,CAACD,EAAUR,EANd,MASwBtoB,eAAuBtd,IAA3C,SAAwEsd,eAAuBtd,IAAnG,eAOA,KALQkE,kBAACA,IAADA,cACKi3C,EAAsBz8B,EAF/B,ICLR,SAAgB0+B,EAAhB,GAA2C,wGAMvCC,iBANuC,IAOvCC,eACA5+B,EARuC,EAQvCA,SAEM6+B,EAAwChC,mBAAQ,WAClD,MAAO,CACHnV,WACAR,gBACAS,oBAEL,CAACD,EAAUR,EANd,IAOMtoB,EAAU++B,IACVmB,EClBV,SACI5D,EACA6D,EACAjB,GAEA,MAAyCH,IAAnC,EAAN,EAAM,WAAN,EAAM,WAAwB9T,EAA9B,EAA8BA,OACxB0U,EAAkBD,EAAxB,GACA,EAAuCxB,mBAAsD,CAAC,KAA9F,gDAAO,EAAP,KAAM,EAAN,KAAM,EAAN,KACA,EAA0CA,oBAA1C,sBAAM,EAAN,KAAM,EAAN,KAEMkC,EAAQC,sBAAW,uCAAC,iCAAA7hE,EAAA,sDAChB8hE,EAAYC,GAAlB,EACMC,EAAeC,GAArB,EAFsB,KAGtB,EAHsB,cAIbh+C,IAAL,MAJkB,SAObA,IAAL,SAPkB,SAWbA,IAAL,OAXkB,yBAKdwoC,wDALc,kBAMPhmC,aAAP,IANc,cASdgmC,2DATc,kBAUPhmC,wBAAP,OAVc,cAYdgmC,uDAZc,kBAaPhmC,YAAP,IAbc,aAed,qCAfc,4CAAD,wDAiBtB,CAACA,EAAUq3C,EAAiB6D,EAjB/B,IA0DA,OAvCAnC,qBAAU,WACN,IAAMG,EAAal5C,EAAA,kBAA2B22B,YAC1C,OAAOA,EAAP,WACI,KAAKvhB,IAAL,cACA,KAAKA,IAAL,mBACQuhB,EAAJ,SACI8kB,EAAY,CAAC9kB,EAAD,QAAZ8kB,OAEJ,MACJ,KAAKrmC,IAAL,cACA,KAAKA,IAAL,mBACQuhB,EAAJ,OACI8kB,EAAY,CAAC,KAAM9kB,EAAnB8kB,YAOhB,OAFAzV,mFAEO,WACH,IACIA,wEACAhmC,6BAGT,CAACA,EAzBJ+4C,IA2BAA,qBAAU,WACD2C,GAAD,MAAgDnD,IAAe96C,IAAnE,OACIuoC,OADuF,yEAGvF2V,MACAR,WAAc,kBAKnB,CAACT,EAAiBnC,EAAYj5C,EAAOo8C,EAAeP,EAVvDpC,IAYO,CAAEoC,QAAO9iD,SAAQiH,SDlDDs8C,CAAsBvE,EAAiB6D,EAA9D,GACMR,EAAkBD,EAAxB,GAEA,GAAIQ,SAAwBlgC,eAAuBtd,IAAnD,KAA2E,CACvE,KACI,OAAOkE,qCAAP,IAGJ,MAAMs5C,EAAN,MAGJ,SAEQt5C,kBAACA,IAADA,cACKi3C,EAAsBz8B,EAF/B,IAOA,GAAsBpB,eAAuBtd,IAAjD,KACWkE,qCAAP,IAGJ,O,6BElEJ,oEAAO,IAAIk6C,EAAS,SAAgBphC,GAClC,OAAOA,EAAKqhC,WAEP,SAASC,EAAmB37C,EAAOW,GACxC,IAAI2H,EAAUtI,EAAMsI,QAChBszC,EAAe57C,EAAM2oB,MACrBA,OAAyB,IAAjBizB,EAA0B,GAAKA,EAC3C,MAAO,CACLja,SAAUhZ,EAAMkzB,oBAAyC,kBAAZvzC,EAAuBA,EAAUA,EAAQ3H,EAAQuwB,OAAS,EACvG4X,MAAOngB,EAAMmzB,mB,gMCiBXC,EAAU,CACdx8C,KAAsB,qBAATA,MADC,KAEd2E,OAA0B,qBAAXA,QAFD,OAGd83C,OAA0B,qBAAXA,GAHD,EAId1hC,SAA8B,qBAAbA,UAA4BA,UAKzC2hC,EAAUF,UAAkBA,EAAlBA,MAAkCA,EAAlD,OAKaG,EACX,qFAA+BC,WAA0CC,EADpE,QAGMC,EAAN,oBAAwBC,cAGzBhtC,EACe,qBAAZ8sC,GAA2BA,EAAlC,SAAqDA,gBADvD,aAEaG,EAAejtC,GAAWmJ,WAAWnJ,EAAvB,KAApB,I,uDChDP,8CAGIs2B,EAASztC,SAAW,CACtB+G,MAAOiF,IACP4nC,KAAM5nC,IACN1V,IAAK0V,KAEA,SAASiyC,IACd,OAAOxQ,I,6BCHF,SAAS4W,EAASv9C,GACvB,OAAgB,MAATA,KAAmBvmB,MAAM+lB,QAAQQ,IAA2B,IAAjBA,EAAMte,QASnD,SAAS87D,EAAS5sC,GACvB,IAAI6sC,EAAMh8D,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,IAAmBA,UAAU,GACzE,OAAOmvB,IAAQ2sC,EAAS3sC,EAAI5Q,QAAwB,KAAd4Q,EAAI5Q,OAAgBy9C,GAAOF,EAAS3sC,EAAI8sC,eAAsC,KAArB9sC,EAAI8sC,cAQ9F,SAASC,EAAe/sC,GAC7B,OAAOA,EAAIgtC,eA3Bb,qE,6BCAA,6CAKIzmB,EAAqB70B,kBAMlB,SAAS40B,IACd,OAAO50B,aAAiB60B,GAEXA,O,8BCZA,SAAS0mB,EAASla,GAC/B,IACIt6B,EADAy0C,EAAOr8D,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,IAG/E,SAASs8D,IACP,IAAK,IAAIzlC,EAAO72B,UAAUC,OAAQ6e,EAAO,IAAI9mB,MAAM6+B,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhY,EAAKgY,GAAQ92B,UAAU82B,GAIzB,IAAIylC,EAAOhrD,KAEPirD,EAAQ,WACVta,EAAK5wC,MAAMirD,EAAMz9C,IAGnBizC,aAAanqC,GACbA,EAAUC,WAAW20C,EAAOH,GAO9B,OAJAC,EAAU/S,MAAQ,WAChBwI,aAAanqC,IAGR00C,EA1BT,mC,6BCAA,8CACe,SAASG,EAAY9iC,GAElC,OADUD,YAAcC,GACb+iC,aAAel5C,S,6BCH5B,+CACe,SAASm5C,EAA4B/4D,EAAGg5D,GACrD,GAAKh5D,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,YAAiBA,EAAGg5D,GACtD,IAAIpkD,EAAIzH,OAAOI,UAAUuW,SAASrW,KAAKzN,GAAGywB,MAAM,GAAI,GAEpD,MADU,WAAN7b,GAAkB5U,EAAE4jB,cAAahP,EAAI5U,EAAE4jB,YAAYlH,MAC7C,QAAN9H,GAAqB,QAANA,EAAoBxgB,MAAMg/C,KAAKpzC,GACxC,cAAN4U,GAAqB,2CAA2CmY,KAAKnY,GAAW,YAAiB5U,EAAGg5D,QAAxG,K,6BCLF,IAAIC,EAAUhsD,EAAQ,KAMlBisD,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd77C,cAAc,EACdT,aAAa,EACbu8C,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXlmC,MAAM,GAEJmmC,EAAgB,CAClBj9C,MAAM,EACNrgB,QAAQ,EACRkR,WAAW,EACXqsD,QAAQ,EACRC,QAAQ,EACRz9D,WAAW,EACX09D,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTx8C,cAAc,EACdT,aAAa,EACb28C,WAAW,EACXlmC,MAAM,GAEJymC,EAAe,GAInB,SAASC,EAAW1hC,GAElB,OAAIygC,EAAQkB,OAAO3hC,GACVuhC,EAIFE,EAAazhC,EAAS,WAAiB0gC,EAVhDe,EAAahB,EAAQmB,YAhBK,CACxB,UAAY,EACZhjC,QAAQ,EACR5Z,cAAc,EACdT,aAAa,EACb28C,WAAW,GAYbO,EAAahB,EAAQoB,MAAQN,EAY7B,IAAIh+C,EAAiB5O,OAAO4O,eACxBu+C,EAAsBntD,OAAOmtD,oBAC7BzgD,EAAwB1M,OAAO0M,sBAC/B+X,EAA2BzkB,OAAOykB,yBAClCwpB,EAAiBjuC,OAAOiuC,eACxBmf,EAAkBptD,OAAOI,UAsC7BR,EAAOC,QArCP,SAAS6Q,EAAqB28C,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIF,EAAiB,CACnB,IAAII,EAAqBvf,EAAeqf,GAEpCE,GAAsBA,IAAuBJ,GAC/C18C,EAAqB28C,EAAiBG,EAAoBD,GAI9D,IAAI53C,EAAOw3C,EAAoBG,GAE3B5gD,IACFiJ,EAAOA,EAAK6Q,OAAO9Z,EAAsB4gD,KAM3C,IAHA,IAAIG,EAAgBV,EAAWM,GAC3BK,EAAgBX,EAAWO,GAEtBt+D,EAAI,EAAGA,EAAI2mB,EAAKzmB,SAAUF,EAAG,CACpC,IAAImR,EAAMwV,EAAK3mB,GAEf,IAAKw9D,EAAcrsD,MAAUotD,IAAaA,EAAUptD,OAAWutD,IAAiBA,EAAcvtD,OAAWstD,IAAiBA,EAActtD,IAAO,CAC7I,IAAIqO,EAAaiW,EAAyB6oC,EAAiBntD,GAE3D,IAEEyO,EAAey+C,EAAiBltD,EAAKqO,GACrC,MAAO8P,OAKf,OAAO+uC,I,6BCnGM,SAASM,EAAgB96D,EAAGkH,GAMzC,OALA4zD,EAAkB3tD,OAAOia,gBAAkB,SAAyBpnB,EAAGkH,GAErE,OADAlH,EAAEq7C,UAAYn0C,EACPlH,IAGcA,EAAGkH,GAN5B,mC,iGCIM6zD,E,WAEL,aAAc,oBAEb,IAAMh8C,EAAI,kBACJE,EAAI,kBAEVtR,KAAKqtD,MACJ,CAACjvD,IAAK/W,YAAY+pB,EAAG,EAAKE,GAAIlT,IAAK/W,WAAW+pB,EAAG,EAAKE,GAAIlT,IAAK/W,YAAY+pB,EAAG,GAAME,GAAIlT,IAAK/W,WAAW+pB,EAAG,GAAME,GACjHlT,IAAK/W,WAAW,EAAKiqB,EAAGF,GAAIhT,IAAK/W,WAAW,EAAKiqB,GAAIF,GAAIhT,IAAK/W,WAAW,GAAMiqB,EAAGF,GAAIhT,IAAK/W,WAAW,GAAMiqB,GAAIF,GAChHhT,IAAK/W,WAAWiqB,EAAGF,EAAG,GAAMhT,IAAK/W,YAAYiqB,EAAGF,EAAG,GAAMhT,IAAK/W,WAAWiqB,GAAIF,EAAG,GAAMhT,IAAK/W,YAAYiqB,GAAIF,EAAG,IAC/GpR,KAAKstD,SACJ,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GACpD,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GACrD,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,IAAK,CAAC,EAAG,GAAI,GAAI,CAAC,GAAI,EAAG,GAAI,CAAC,EAAG,EAAG,GACvD,CAAC,EAAG,EAAG,IAAK,CAAC,EAAG,EAAG,IAAK,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,K,sDAGxD,SAAmBlyD,EAAIC,EAAIC,EAAIiyD,EAAcC,GAC5C,GAAa,GAATA,EAIH,OAHAD,EAAaxtC,KAAK3a,IAAMqoD,UAAUryD,EAAI,KACtCmyD,EAAaxtC,KAAK3a,IAAMqoD,UAAUpyD,EAAI,UACtCkyD,EAAaxtC,KAAK3a,IAAMqoD,UAAUnyD,EAAI,KAIvC,IAAIoyD,EAAMtvD,IAAKtX,SACX6mE,EAAMvvD,IAAKtX,SACX8mE,EAAMxvD,IAAKtX,SACfsX,IAAK5G,UAAUk2D,EAAKtoD,IAAMgF,QAAQhP,EAAIC,IACtC+C,IAAK5G,UAAUm2D,EAAKvoD,IAAMgF,QAAQ/O,EAAIC,IACtC8C,IAAK5G,UAAUo2D,EAAKxoD,IAAMgF,QAAQ9O,EAAIF,IACtC4E,KAAK6tD,mBAAmBzyD,EAAIsyD,EAAKE,EAAKL,EAAcC,EAAQ,GAC5DxtD,KAAK6tD,mBAAmBxyD,EAAIsyD,EAAKD,EAAKH,EAAcC,EAAQ,GAC5DxtD,KAAK6tD,mBAAmBvyD,EAAIsyD,EAAKD,EAAKJ,EAAcC,EAAQ,GAC5DxtD,KAAK6tD,mBAAmBH,EAAKC,EAAKC,EAAKL,EAAcC,EAAQ,K,4BAG9D,SAAeM,GAEd,IADA,IAAIC,EAAW,GACNv/D,EAAI,EAAGA,EAAI,GAAIA,IACvBwR,KAAK6tD,mBAAmB7tD,KAAKqtD,MAAMrtD,KAAKstD,SAAS9+D,GAAG,IAAKwR,KAAKqtD,MAAMrtD,KAAKstD,SAAS9+D,GAAG,IAAKwR,KAAKqtD,MAAMrtD,KAAKstD,SAAS9+D,GAAG,IAAKu/D,EAAUD,GAEtI,OAAOC,M,mCC7CT,IAAIpP,EAAyBr/C,EAAQ,IAEjCs/C,EAA0Bt/C,EAAQ,IAEtCE,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAET3N,EAAQyuC,aAAU,EAElB,IAAIx+B,EAAQsvC,EAAwBt/C,EAAQ,IAIxCu/C,GAAW,EAFMF,EAAuBr/C,EAAQ,KAElBwuC,SAAuBx+B,EAAMW,cAAc,OAAQ,CACnFpY,EAAG,wJACD,QAEJwH,EAAQyuC,QAAU+Q,G,6BCnBlB,8DAqFW3H,EAAgB,IAjFM,SAAUoL,GAGzC,SAAS0L,IACP,OAAO1L,EAAcviD,MAAMC,KAAMvR,YAAcuR,KAHjDskB,YAAe0pC,EAAe1L,GAM9B,IAAIv9B,EAASipC,EAAcpuD,UAuE3B,OArEAmlB,EAAO4f,YAAc,WACd3kC,KAAK0qC,qBACR1qC,KAAKwiD,2BAITz9B,EAAO09B,iBAAmB,SAA0BC,GAClD,IAAIv9B,EAAQnlB,KAERA,KAAK0qC,qBACP1qC,KAAK0qC,sBAGP1qC,KAAK0qC,oBAAsBgY,GAAM,SAAUuL,GACnB,mBAAXA,EACT9oC,EAAM+oC,UAAUD,GAEhB9oC,EAAMgpC,eAKZppC,EAAOmpC,UAAY,SAAmBD,GACpCjuD,KAAKiuD,OAASA,EAEVA,GACFjuD,KAAKmuD,YAITppC,EAAOopC,SAAW,WAChBnuD,KAAKwkC,UAAUvqC,SAAQ,SAAUyqC,GAC/BA,QAIJ3f,EAAOoyB,SAAW,WAChB,MAA2B,mBAAhBn3C,KAAKiuD,OACPjuD,KAAKiuD,OAGW,qBAAd1lB,WAAyD,qBAArBA,UAAU6lB,QAIlD7lB,UAAU6lB,QAGnBrpC,EAAOy9B,wBAA0B,WAC/B,IAAIO,GAEC/wC,MAAmC,OAArB+wC,EAAU9wC,aAAkB,EAAS8wC,EAAQtY,mBAC9DzqC,KAAKyiD,kBAAiB,SAAU0L,GAC9B,IAAIzpB,EAAW,WACb,OAAOypB,KAMT,OAFAl8C,OAAOw4B,iBAAiB,SAAU/F,GAAU,GAC5CzyB,OAAOw4B,iBAAiB,UAAW/F,GAAU,GACtC,WAELzyB,OAAOy4B,oBAAoB,SAAUhG,GACrCzyB,OAAOy4B,oBAAoB,UAAWhG,QAMvCspB,EA9EwB,CA+E/BzpB,O,6BCnFF,oBACej1B,QAAMqZ,cAAc,O,yGCG7B8W,E,WACF,WAAYzgC,EAAIC,GAAI,oBAChBe,KAAKo7B,SAAa3tB,IAAPzO,EAAmBA,EAAKZ,IAAK/W,WAAW,EAAK,EAAK,GAC7D2Y,KAAKq7B,SAAa5tB,IAAPxO,EAAmBA,EAAKb,IAAK/W,WAAW,EAAK,EAAK,G,2CAGjE,SAAQ2X,EAAIC,GACRb,IAAKhX,KAAK4Y,KAAKo7B,IAAIp8B,GACnBZ,IAAKhX,KAAK4Y,KAAKq7B,IAAIp8B,K,mBAGvB,SAAMD,GACFZ,IAAKhX,KAAK4Y,KAAKo7B,IAAIp8B,K,mBAGvB,SAAMC,GACFb,IAAKhX,KAAK4Y,KAAKq7B,IAAIp8B,K,gBAGvB,WACI,IAAI1F,EAAI6E,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKmS,EAAGyG,KAAKo7B,KACX7hC,I,gBAGX,WACI,IAAIA,EAAI6E,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKmS,EAAGyG,KAAKq7B,KACX9hC,I,uBAGX,WACI,IAAIkM,EAAMrH,IAAKtX,SAEf,OADAsX,IAAKrR,SAAS0Y,EAAKzF,KAAKq7B,IAAKr7B,KAAKo7B,KAC3Bh9B,IAAK1P,OAAO+W,K,wCAGvB,SAA2BlM,GACvB,IAAM80D,EAAKjpD,IAAMkpD,QAAQ/0D,EAAGyG,KAAKo7B,KAC3BmzB,EAAKnwD,IAAK3G,IAAI42D,EAAIA,GAClBG,EAAQppD,IAAMgC,iBAAiBinD,EAAIruD,KAAKwjC,oBACxCirB,EAAKrwD,IAAK3G,IAAI+2D,EAAOA,GAC3B,OAAO7nE,KAAKgI,KAAK4/D,EAAKE,K,oCAG1B,SAAuBlzB,GACnB,IAAMmzB,EAAK1uD,KAAKwjC,mBACVmrB,EAAKpzB,EAAIO,eACZ8yB,EAAK5uD,KAAKhB,KACV6vD,EAAKtzB,EAAIM,YAERizB,EAAO1pD,IAAMkpD,QAAQO,EAAGD,GACxBG,EAAO3wD,IAAK3G,IAAIi3D,EAAIC,GACpB5lE,EAAOgmE,EAAOA,EAAQ,EAE1B,GAAIpoE,KAAK2H,IAAIvF,GAAO6c,IAAU2L,MAC1B,MAAO,CAACy9C,2BAA2BH,GAAK,GAG5C,IAAI3lD,EAAS,EAAMngB,EACfkmE,EAAS7wD,IAAK3G,IAAIq3D,EAAMJ,GACxBQ,EAAS9wD,IAAK3G,IAAIq3D,EAAMH,GAExBjrB,EAAKx6B,GAAoB6lD,EAAOG,EAAhBD,GAChBtrB,EAAKz6B,IAAW+lD,EAASF,EAAOG,GAEhCzpD,EAAMrH,IAAKtX,SAEfsX,IAAKhU,MAAMqb,EAAKipD,EAAIhrB,GACpB,IAAIh6B,EAAKtE,IAAMgF,QAAQwkD,EAAInpD,GAE3BrH,IAAKhU,MAAMqb,EAAKkpD,EAAIhrB,GACpB,IAAIwrB,EAAK/pD,IAAMgF,QAAQykD,EAAIppD,GAE3B,OAAIi+B,EAAK,GACLtlC,IAAKrR,SAAS0Y,EAAK0pD,EAAInvD,KAAKo7B,KACrB,CAACh9B,IAAK1P,OAAO+W,GAAMk+B,IACnBD,EAAK1jC,KAAKovD,aACjBhxD,IAAKrR,SAAS0Y,EAAK0pD,EAAInvD,KAAKq7B,KACrB,CAACj9B,IAAK1P,OAAO+W,GAAKk+B,KAE7BvlC,IAAKrR,SAAS0Y,EAAK0pD,EAAIzlD,GAChB,CAACtL,IAAK1P,OAAO+W,GAAMk+B,M,8BAG9B,WACI,IAAIl+B,EAAMrH,IAAKtX,SACXuoE,EAAMjxD,IAAKtX,SAKf,OAHAsX,IAAKrR,SAAS0Y,EAAKzF,KAAKq7B,IAAKr7B,KAAKo7B,KAClCh9B,IAAK5G,UAAU63D,EAAK5pD,GAEb4pD,I,sBAGX,SAAS//D,GACL,IAAIiK,EAAI6E,IAAKtX,SACTshB,EAAOhK,IAAKtX,SACZo7C,EAAO9jC,IAAKtX,SAKhB,OAHAsX,IAAKrR,SAASqb,EAAMpI,KAAKq7B,IAAKr7B,KAAKo7B,KACnCh9B,IAAKhU,MAAM83C,EAAM95B,EAAM9Y,GACvB8O,IAAKtR,IAAIyM,EAAGyG,KAAKo7B,IAAK8G,GACf3oC,I,gCAGX,SAAmBA,GACf,IAAI81D,EAAMjxD,IAAKtX,SACfsX,IAAKvP,IAAIwgE,EAAK91D,EAAGyG,KAAKo7B,KACtB,IAAIn0B,EAAIjH,KAAKwjC,mBACT8rB,EAAUlxD,IAAK3G,IAAI43D,EAAKpoD,GACxBxB,EAAMrH,IAAKtX,SACXyoE,EAAUnxD,IAAKtX,SAGnB,OAFAsX,IAAKhU,MAAMqb,EAAKwB,EAAGqoD,GACnBlxD,IAAKtR,IAAIyiE,EAASvvD,KAAKo7B,IAAK31B,GACrB8pD,I,uBAGX,SAAUjgE,GACN0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GACjB0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GACjB0Q,KAAKo7B,IAAI,IAAM9rC,EAAE,GAEjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,GACjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,GACjB0Q,KAAKq7B,IAAI,IAAM/rC,EAAE,O,2HCjIZkgE,EAAe,CACxBC,WAAY,EACZC,aAAc,EACdC,YAAa,GAGXC,E,WACF,aAAc,oBACV5vD,KAAKm3B,OAAS,EACdn3B,KAAKo3B,QAAU,EAEfp3B,KAAK6vD,cAAgB,EAAC,GAAO,GAAO,GACpC7vD,KAAK8vD,oBAAsB,EAAC,GAAO,GAAO,GAC1C9vD,KAAK+vD,WAAa,EAAC,GAAO,GAAO,GAEjC/vD,KAAKgwD,SAAW,EAChBhwD,KAAKiwD,SAAW,EAChBjwD,KAAKkwD,SAAW,EAChBlwD,KAAKmwD,SAAW,EAEhBnwD,KAAKowD,OAAS,EACdpwD,KAAKqwD,OAAS,EAEdrwD,KAAKswD,aAAe,EACpBtwD,KAAKuwD,aAAe,EAEpBvwD,KAAKwwD,cAAe,E,kDAGxB,WACI,OAAOxwD,KAAKswD,e,4BAEhB,WACI,OAAOtwD,KAAKuwD,e,oBAGhB,SAAOE,GACH,OAAOzwD,KAAK+vD,WAAWU,K,uBAG3B,SAAUA,GACN,OAAOzwD,KAAK6vD,cAAcY,K,6BAG9B,SAAgBA,GACZ,OAAOzwD,KAAK8vD,oBAAoBW,K,2BAGpC,WACI,OAAOzwD,KAAKwwD,e,6BAGhB,WACIxwD,KAAKilB,QACLjlB,KAAKgwD,SAAW,EAChBhwD,KAAKiwD,SAAW,EAChBjwD,KAAKkwD,SAAW,EAChBlwD,KAAKmwD,SAAW,EAChBnwD,KAAKowD,OAAS,EACdpwD,KAAKqwD,OAAS,EACdrwD,KAAKswD,aAAe,EACpBtwD,KAAKuwD,aAAe,EAEpBvwD,KAAK0wD,YAAc,EAEnB1wD,KAAK2wD,OAAS,EACd3wD,KAAK4wD,OAAS,EAEd,IAAK,IAAIpiE,EAAI,EAAGA,EAAI,EAAGA,IACnBwR,KAAK+vD,WAAWvhE,IAAK,I,sBAI7B,WACI,OAAOwR,KAAK2wD,S,sBAEhB,WACI,OAAO3wD,KAAK4wD,S,gCAEhB,WACI,OAAO5wD,KAAK0wD,c,mBAGhB,WACI,IAAK,IAAIliE,EAAI,EAAGA,EAAI,EAAGA,IACnBwR,KAAK6vD,cAAcrhE,IAAK,EACxBwR,KAAK8vD,oBAAoBthE,IAAK,EAGlCwR,KAAKswD,aAAe,EACpBtwD,KAAKuwD,aAAe,EACpBvwD,KAAK0wD,YAAc,I,yBAGvB,SAAY96B,GACR51B,KAAKgwD,SAAWp6B,EAAMi7B,QACtB7wD,KAAKiwD,SAAWr6B,EAAMk7B,QACtB9wD,KAAKkwD,SAAWt6B,EAAMm7B,QACtB/wD,KAAKmwD,SAAWv6B,EAAMo7B,QAEtB,IAAIC,EAAOr7B,EAAMv/B,OAAO66D,wBACxBlxD,KAAKm3B,OAAS85B,EAAK79D,MAAQ69D,EAAK99D,KAChC6M,KAAKo3B,QAAU65B,EAAK59D,OAAS49D,EAAK39D,IAE9B0M,KAAKwwD,eACLxwD,KAAKswD,cAAgBtwD,KAAKkwD,SAAWlwD,KAAKowD,QAAUpwD,KAAKm3B,OACzDn3B,KAAKuwD,cAAgBvwD,KAAKmwD,SAAWnwD,KAAKqwD,QAAUrwD,KAAKo3B,SAG7Dp3B,KAAKowD,OAASpwD,KAAKkwD,SACnBlwD,KAAKqwD,OAASrwD,KAAKmwD,SACnBnwD,KAAK2wD,OAAS3wD,KAAKkwD,UAAYe,EAAK79D,MAAQ69D,EAAK99D,MACjD6M,KAAK4wD,OAAS,EAAM5wD,KAAKmwD,UAAYc,EAAK59D,OAAS49D,EAAK39D,KACxD0M,KAAKwwD,cAAe,I,yBAGxB,SAAY56B,GACR51B,KAAK+vD,WAAWn6B,EAAMynB,QAAkBr9C,KAAKwwD,e,uBAGjD,SAAU56B,GACN51B,KAAK+vD,WAAWn6B,EAAMynB,SAAU,I,0BAGpC,SAAaznB,GACT51B,KAAK6vD,cAAcj6B,EAAMynB,SAAU,I,+BAGvC,WACIr9C,KAAK6vD,cAAcL,EAAaG,cAAe,I,gCAGnD,SAAmB/5B,GACf51B,KAAK8vD,oBAAoBl6B,EAAMynB,SAAU,I,0BAG7C,SAAaznB,GACT51B,KAAK0wD,YAAc96B,EAAMu7B,S,gCAG7B,SAAmBv7B,M,0BAEnB,SAAaA,GACT51B,KAAKwwD,cAAe,EACpBxwD,KAAKoxD,sB,gHC5IPC,E,WACF,WAAYC,EAAaC,EAAc9kE,EAAO+gE,GAAO,oBAEjDxtD,KAAKwxD,QAAUpzD,IAAK/W,WAAW,EAAI,EAAI,QAEpBomB,IAAhB6jD,GAEClzD,IAAK5G,UAAUwI,KAAKwxD,QAAQF,GAGhC,IAAIG,EAAKrzD,IAAK3G,IAAI85D,EAAcvxD,KAAKwxD,SACrCxxD,KAAK0xD,SAAWzzD,IAAK5W,WAAW2Y,KAAKwxD,QAAQ,GAAGxxD,KAAKwxD,QAAQ,GAAGxxD,KAAKwxD,QAAQ,IAAIC,GACjFzxD,KAAK2xD,YAAcvzD,IAAKtX,SACxBsX,IAAKhU,MAAM4V,KAAK2xD,YAAa3xD,KAAKwxD,QAASC,G,6CAG/C,WACI,IAAIG,EAAIxzD,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKwqE,EAAG5xD,KAAKwxD,SACXI,I,sBAGX,WACI,IAAIC,EAAIzzD,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKyqE,EAAG7xD,KAAK2xD,aACXE,I,+BAGX,SAAkBt4D,GAEd,OAAO6E,IAAK3G,IAAI8B,EAAGyG,KAAKwxD,SAAWxxD,KAAK0xD,SAAS,K,0BAGrD,SAAan2B,GACT,IAAIC,EAAY,IAAI3M,IACd+iC,EAAI5xD,KAAKwxD,QACXM,EAAK1zD,IAAK3G,IAAI8jC,EAAIO,eAAgB81B,GAEtC,GAAIjrE,KAAK2H,IAAIwjE,GAAMlsD,IAAU2L,MAAO,OAAOiqB,EAE3C,IAEIlsC,MAFU8O,IAAK3G,IAAIm6D,EAAG5xD,KAAK2xD,aACnBvzD,IAAK3G,IAAI8jC,EAAIM,YAAa+1B,IACVE,EAE5B,GAAIxiE,EAAI,EAAK,OAAOksC,EAEpB,IAAIu2B,EAASx2B,EAAIkG,YAAYnyC,GACzB0iE,EAAS5zD,IAAKtX,SAOlB,OALAsX,IAAKvP,IAAImjE,EAAQD,EAAQ/xD,KAAK2xD,aAE9Bn2B,EAAU1M,WAAY,EACtB0M,EAAUzM,UAAUhP,KAAKzwB,GAElBksC,I,8BAGX,gB,KCzDEkE,E,WACF,WAAYuyB,EAAgBC,EAAQC,EAAQC,GAAQ,oBAChDpyD,KAAKqyD,aAA8B5kD,IAAnBwkD,EAAgCA,EAAiB7zD,IAAK/W,WAAW,EAAK,EAAK,GAC3F2Y,KAAKwxD,QAAUpzD,IAAK/W,WAAW,EAAK,EAAK,QACzBomB,IAAXykD,GACD9zD,IAAK5G,UAAUwI,KAAKwxD,QAASU,GAEjClyD,KAAKsyD,aAAqB7kD,IAAX0kD,EAAuBA,EAAS,EAC/CnyD,KAAKuyD,aAAqB9kD,IAAX2kD,EAAuBA,EAAS,E,6CAGnD,SAAUroD,EAAKmoD,EAAQC,GACnB/zD,IAAKhX,KAAK4Y,KAAKqyD,QAAStoD,GACxB3L,IAAKhX,KAAK4Y,KAAKwxD,QAASU,GACxBlyD,KAAKsyD,QAAUH,I,+BAGnB,SAAkBpoD,GACd3L,IAAKhX,KAAK4Y,KAAKqyD,QAAStoD,K,uBAG5B,SAAUmoD,GACN9zD,IAAKhX,KAAK4Y,KAAKwxD,QAASU,K,+BAG5B,WACI,OAAOlyD,KAAKuyD,U,uBAGhB,WACI,OAAOvyD,KAAKsyD,U,4BAGhB,WACI,IAAI1oD,EAAIxL,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKwiB,EAAG5J,KAAKqyD,SACXzoD,I,uBAGX,WACI,IAAIgoD,EAAIxzD,IAAKtX,SAEb,OADAsX,IAAKhX,KAAKwqE,EAAG5xD,KAAKwxD,SACXI,I,sCAGX,SAAyBr2B,GACrB,IAAIC,EAAY,IAAI3M,IAIpB,IADA2M,EAFkB,IAAI61B,EAAOrxD,KAAKwxD,QAASxxD,KAAKqyD,SAExBxvB,aAAatH,IACvBzM,UAAW,CACrB,IAAI0jC,EAAaj3B,EAAIkG,YAAYjG,EAAUzM,UAAU,IAEjD0jC,EAAuBr0D,IAAKtX,SAC5B2e,EAAMrH,IAAKtX,SACfsX,IAAKrR,SAAS0Y,EAAK+sD,EAAYxyD,KAAKqyD,SACpC,IAAIjqD,EAAOhK,IAAKtX,SAChBsX,IAAK5G,UAAU4Q,EAAM3C,GACrB,IAAIy8B,EAAO9jC,IAAKtX,SAChBsX,IAAKhU,MAAM83C,EAAM95B,EAAMpI,KAAKsyD,SAC5Bl0D,IAAKtR,IAAI2lE,EAAsBzyD,KAAKqyD,QAASnwB,GAC7C,IAAIC,EAAO/jC,IAAKtX,SAEhB,OADAsX,IAAKrR,SAASo1C,EAAMqwB,EAAYC,GACzB,CAACr0D,IAAK1P,OAAOyzC,GAAO3G,EAAUzM,UAAU,IAKnD,MAAO,CAAC,IAAQ,O,0BAGpB,SAAawM,GACT,IAAIC,EAAY,IAAI3M,IAIpB,IAFA2M,EADkB,IAAI61B,EAAOrxD,KAAKwxD,QAASxxD,KAAKqyD,SACxBxvB,aAAatH,IAEvBzM,UAAW,CACrB,IAAIx/B,EAAIksC,EAAUzM,UAAU,GACxBgjC,EAASx2B,EAAIkG,YAAYnyC,GACzB0iE,EAAS5zD,IAAKtX,SAClBsX,IAAKvP,IAAImjE,EAAQD,EAAQ/xD,KAAKqyD,SAG9B,IAAIK,EAAQt0D,IAAK1P,OAAOsjE,GAExB,KAAIrrE,KAAK2H,IAAIokE,GAAS1yD,KAAKsyD,SAIvB,OAAO,IAAIzjC,IAHX2M,EAAU1M,WAAY,EACtB0M,EAAUzM,UAAUhP,KAAKzwB,GAMjC,OAAOksC,I,uBAGX,SAAUlsC,GACN0Q,KAAKqyD,QAAQ,IAAM/iE,EAAE,GACrB0Q,KAAKqyD,QAAQ,IAAM/iE,EAAE,GACrB0Q,KAAKqyD,QAAQ,IAAM/iE,EAAE,K,uBAMzB,SAAWmJ,GACP,IAAIgN,EAAMrH,IAAKtX,SACfsX,IAAK5F,cAAciN,EAAKzF,KAAKqyD,QAAS55D,GACtC2F,IAAKhX,KAAK4Y,KAAKqyD,QAAS5sD,GACxBrH,IAAK5F,cAAciN,EAAKzF,KAAKwxD,QAAS/4D,GACtC2F,IAAKhX,KAAK4Y,KAAKwxD,QAAS/rD,GACxBsB,IAAKhW,WAAW0U,EAAIhN,GACpB,IAAIzO,EAAIoU,IAAK3G,IAAIgO,EAAIrH,IAAK/W,WAAW,EAAI,EAAI,IAC7C2C,GAAK,EACLgW,KAAKsyD,QAAUtyD,KAAKsyD,QAAQtoE,M,yHCnH9ByjC,E,kDACF,WAAY1e,EAAM2Z,GAAS,kCACvB,cAAM3Z,EAAM2Z,EAASoE,IAAeW,QAC/BklC,WAAa,EAClB,EAAKC,YAAc,EACnB,EAAKC,kBAAoB,GACzB,EAAKC,kBAAmB,EACxB,EAAKC,eAAgB,EACrB,EAAKC,WAAa,EAAKzgC,aAAa5B,KAAKsiC,oBACzC,EAAKC,oBAAsB,KARJ,E,iDAW3B,SAAcC,GACV,IAAMxiC,EAAK3wB,KAAKuyB,aAAa5B,KAE7B,GAAsC,IAAlC3wB,KAAK6yD,kBAAkBnkE,OACvBsR,KAAK2yD,UAAYQ,EAAQ16B,WACzBz4B,KAAK4yD,WAAaO,EAAQz6B,gBAEzB,CAED,GAAIy6B,EAAQ16B,YAAcz4B,KAAK2yD,UAE3B,YADAzsD,QAAQ1J,IAAI,wCAA0CwD,KAAK2yD,UAAY,qBAAuBQ,EAAQ16B,YAI1G,GAAI06B,EAAQz6B,aAAe14B,KAAK4yD,WAE5B,YADA1sD,QAAQ1J,IAAI,yCAA2CwD,KAAK4yD,WAAa,sBAAwBO,EAAQz6B,aAIjH,IAAI06B,EAAcpzD,KAAK6yD,kBAAkBnkE,OACzCsR,KAAK6yD,kBAAkB9yC,KAAKozC,GAC5B,IAAIE,EAAoB1iC,EAAG2iC,kBAAoBF,EAG/CpzD,KAAKoyB,OACLzB,EAAG4iC,qBAAqB5iC,EAAG6iC,YAAaH,EAAmB1iC,EAAGuH,WAAYi7B,EAAQn6B,mBAAoB,GACtGh5B,KAAKsyB,W,kBAGT,WACItyB,KAAKuyB,aAAa5B,KAAK8iC,gBAAgBzzD,KAAKuyB,aAAa5B,KAAK6iC,YAAaxzD,KAAKgzD,c,oBAGpF,WACIhzD,KAAKuyB,aAAa5B,KAAK8iC,gBAAgBzzD,KAAKuyB,aAAa5B,KAAK6iC,YAAa,Q,sCAG/E,SAAyB/mE,EAAOC,GAC5B,IAAMikC,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OAE2B,MAA5BpyB,KAAKkzD,qBACLviC,EAAG+iC,mBAAmB1zD,KAAKkzD,qBAG/BlzD,KAAKkzD,oBAAsBviC,EAAGgjC,qBAC9BhjC,EAAGijC,iBAAiBjjC,EAAGkjC,aAAc7zD,KAAKkzD,qBAC1CviC,EAAGmjC,oBAAoBnjC,EAAGkjC,aAAcljC,EAAGojC,kBAAmBtnE,EAAOC,GACrEikC,EAAGqjC,wBAAwBrjC,EAAG6iC,YAAa7iC,EAAGsjC,iBAAkBtjC,EAAGkjC,aAAc7zD,KAAKkzD,qBACtFlzD,KAAKsyB,SACLtyB,KAAK8yD,kBAAmB,I,oCAG5B,SAAuBoB,EAAgBC,GAEnC,GAAqC,GAAjCn0D,KAAK6yD,kBAAkBnkE,OAA3B,CAKA,IAAMiiC,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OAELpyB,KAAK2yD,UAAYuB,EACjBl0D,KAAK4yD,WAAauB,EAGlB,IAAIC,EAAwB,IAAI7mC,IAAU,2BAA4BvtB,KAAKuyB,cAC3E6hC,EAAsBC,4BAA4Br0D,KAAK2yD,UAAW3yD,KAAK4yD,YACvE5yD,KAAK6yD,kBAAkB9yC,KAAKq0C,GAG5Bp0D,KAAKoyB,OACLzB,EAAG4iC,qBAAqB5iC,EAAG6iC,YAAa7iC,EAAGsjC,iBAAkBtjC,EAAGuH,WAAYk8B,EAAsBp7B,mBAAoB,GACtHrI,EAAG2jC,YAAY,CAAC3jC,EAAG9tB,OACnB8tB,EAAG4jC,WAAW5jC,EAAG9tB,MACjB7C,KAAKsyB,SAEL8hC,EAAsB9hC,SAEtBtyB,KAAK8yD,kBAAmB,EACxB9yD,KAAK+yD,eAAgB,OAzBjB7sD,QAAQ1J,IAAI,kF,6CA4BpB,SAAgC03D,EAAgBC,EAAiBK,GAE7D,GAAqC,GAAjCx0D,KAAK6yD,kBAAkBnkE,OAA3B,CAKA,IAAMiiC,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OAELpyB,KAAK2yD,UAAYuB,EACjBl0D,KAAK4yD,WAAauB,EAGlB,IAAK,IAAI3lE,EAAI,EAAGA,EAAIgmE,EAAkBhmE,IAAK,CACvC,IAAI4lE,EAAwB,IAAI7mC,IAAU,YAAc/+B,EAAGwR,KAAKuyB,cAChE6hC,EAAsBC,4BAA4Br0D,KAAK2yD,UAAW3yD,KAAK4yD,YACvEwB,EAAsBK,iBAAiB9jC,EAAG2H,SAAW9pC,GACrDwR,KAAK6yD,kBAAkB9yC,KAAKq0C,GAC5BA,EAAsB9hC,SAG1BtyB,KAAK8yD,kBAAmB,EACxB9yD,KAAK+yD,eAAgB,OApBjB7sD,QAAQ1J,IAAI,kF,6BAwBpB,SAAgBmK,GACZ,KAAGA,EAAQ,GAAKA,GAAS3G,KAAK6yD,kBAAkBnkE,QAAhD,CAEA,IAAMiiC,EAAK3wB,KAAKuyB,aAAa5B,KAC7B3wB,KAAKoyB,OACLzB,EAAG4iC,qBAAqB5iC,EAAG6iC,YAAa7iC,EAAGsjC,iBAAkBtjC,EAAGuH,WAAYl4B,KAAK6yD,kBAAkBlsD,GAAOqyB,mBAAoB,GAC9HrI,EAAG2jC,YAAY,CAAC3jC,EAAG9tB,OACnB8tB,EAAG4jC,WAAW5jC,EAAG9tB,MACjB7C,KAAKsyB,Y,2BAGT,SAAc3rB,GACV,OAAIA,GAAS3G,KAAK6yD,kBAAkBnkE,OACzB,KAEJsR,KAAK6yD,kBAAkBlsD,K,oBAGlC,SAAOla,EAAOC,GACV,IAAIsT,KAAK+yD,cAAT,CAEA,IAAI2B,GAAiB,EAYrB,GAVI10D,KAAK2yD,WAAalmE,IAClBuT,KAAK2yD,UAAYlmE,EACjBioE,GAAiB,GAGjB10D,KAAK4yD,YAAclmE,IACnBsT,KAAK4yD,WAAalmE,EAClBgoE,GAAiB,GAGjBA,EAAgB,CAGhB,IAFA,IAAM/jC,EAAK3wB,KAAKuyB,aAAa5B,KAEpBniC,EAAI,EAAGA,EAAIwR,KAAK6yD,kBAAkBnkE,OAAQF,IAAK,CACpDwR,KAAK6yD,kBAAkBrkE,GAAGmmE,SAASloE,EAAOC,GAC1C,IAAM2mE,EAAoB1iC,EAAG2iC,kBAAoB9kE,EAGjDwR,KAAKoyB,OACLzB,EAAG4iC,qBAAqB5iC,EAAG6iC,YAAaH,EAAmB1iC,EAAGuH,WAAYl4B,KAAK6yD,kBAAkBrkE,GAAGwqC,mBAAoB,GACxHh5B,KAAKsyB,SAGLtyB,KAAK8yD,mBAC2B,MAA5B9yD,KAAKkzD,sBACLviC,EAAG+iC,mBAAmB1zD,KAAKkzD,qBAC3BlzD,KAAKkzD,oBAAsB,MAE/BlzD,KAAK40D,yBAAyBnoE,EAAOC,U,GA9KjCohC,M,8BCHL,SAAS+mC,EAAkBn2C,EAAKnvB,IAClC,MAAPA,GAAeA,EAAMmvB,EAAIhwB,UAAQa,EAAMmvB,EAAIhwB,QAE/C,IAAK,IAAIF,EAAI,EAAGsmE,EAAO,IAAIruE,MAAM8I,GAAMf,EAAIe,EAAKf,IAC9CsmE,EAAKtmE,GAAKkwB,EAAIlwB,GAGhB,OAAOsmE,EAPT,mC,6BCAe,SAASD,EAAkBn2C,EAAKnvB,IAClC,MAAPA,GAAeA,EAAMmvB,EAAIhwB,UAAQa,EAAMmvB,EAAIhwB,QAE/C,IAAK,IAAIF,EAAI,EAAGsmE,EAAO,IAAIruE,MAAM8I,GAAMf,EAAIe,EAAKf,IAC9CsmE,EAAKtmE,GAAKkwB,EAAIlwB,GAGhB,OAAOsmE,EAPT,mC,6BCAe,SAASC,EAAuBznD,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI0nD,eAAe,6DAG3B,OAAO1nD,EALT,mC,0FCEMyxB,E,WACF,WAAYk2B,EAAQC,GAAW,oBAC3Bl1D,KAAKm1D,QAAU/2D,IAAK/W,WAAW,EAAK,EAAK,GACzC2Y,KAAKo1D,KAAOh3D,IAAK/W,WAAW,EAAK,EAAK,GACtC2Y,KAAKq1D,QAAUj3D,IAAKtX,cAEL2mB,IAAXwnD,GACA72D,IAAKhX,KAAK4Y,KAAKm1D,QAASF,QAGVxnD,IAAdynD,GACA92D,IAAKhX,KAAK4Y,KAAKo1D,KAAMF,GAEzBl1D,KAAKs1D,Y,6CAGT,WACI,IAAIL,EAAS72D,IAAKtX,SAElB,OADAsX,IAAKhX,KAAK6tE,EAAQj1D,KAAKm1D,SAChBF,I,0BAGX,WACI,IAAI5F,EAAMjxD,IAAKtX,SAEf,OADAsX,IAAKhX,KAAKioE,EAAKrvD,KAAKo1D,MACb/F,I,6BAIX,WACI,IAAIkG,EAASn3D,IAAKtX,SAElB,OADAsX,IAAKhX,KAAKmuE,EAAQv1D,KAAKq1D,SAChBE,I,oBAIX,SAAON,EAAQC,QACIznD,IAAXwnD,GACA72D,IAAKhX,KAAK4Y,KAAKm1D,QAASF,QAEVxnD,IAAdynD,GACA92D,IAAKhX,KAAK4Y,KAAKo1D,KAAMF,GAEzBl1D,KAAKs1D,c,uBAGT,WACI,IAAI7vD,EAAMrH,IAAKtX,SACfsX,IAAK5G,UAAUiO,EAAKzF,KAAKo1D,MACzBh3D,IAAKhX,KAAK4Y,KAAKo1D,KAAM3vD,GACrB,IAAK,IAAIjX,EAAI,EAAGA,EAAI,EAAGA,IACnBwR,KAAKq1D,QAAQ7mE,GAAM7H,KAAK2H,IAAI0R,KAAKo1D,KAAK5mE,IAAM,KAAY,EAAMwR,KAAKo1D,KAAK5mE,GAAO,EAAM,O,yBAI7F,SAAYc,GACR,IAAIkmE,EAASp3D,IAAKtX,SACd2uE,EAAOr3D,IAAKtX,SAGhB,OAFAsX,IAAKhU,MAAMqrE,EAAMz1D,KAAKo1D,KAAM9lE,GAC5B8O,IAAKtR,IAAI0oE,EAAQx1D,KAAKm1D,QAASM,GACxBD,I,+BAGX,SAAkBE,GAEd11D,KAAKs1D,gB,kIC1CPxL,EAAU,CACdx8C,KAAsB,qBAATA,MADC,KAEd2E,OAA0B,qBAAXA,QAFD,OAGd83C,OAA0B,qBAAXA,GAHD,EAId1hC,SAA8B,qBAAbA,UAA4BA,UAKzC2hC,EAAUF,UAAkBA,EAAlBA,MAAkCA,EAAlD,OAKaG,EAEX,qFAA+BC,WAA0CC,EAFpE,QAOD9sC,EACe,qBAAZ8sC,GAA2BA,EAAlC,SAAqDA,gBADvD,aAE4B9sC,GAAWmJ,WAAWnJ,EAAvB,M,6GCtCds4C,EAAsC,CAC/C,uBACA,mBACA,kBAGSC,EAAyC,CAClD,eACA,oBACA,eACA,wBACA,oB,cAQA,WAAYr8C,EAAoBC,EAAuB4J,GAAvD,MACI,YAAM7J,EAAWC,EAAc4J,IAAS,K,OACxC,EAAKrU,KAAO,+BAEZvP,OAAOia,eAAe,EAAMo8C,EAA6Bj2D,W,EAYjE,OAlBkD,iBASvC,EAAAk2D,2BAAP,SAAkCv8C,EAAoBqB,EAAsBwI,GACxE,IAAM2yC,IAAmCx8C,GAAao8C,EAAoCvpD,QAAQmN,IAAc,EAC1Gy8C,IAAkC5yC,GAAYwyC,EAAuCxpD,QAAQgX,IAAa,EAC1G6yC,IAAmCr7C,GAAe+6C,EAAoCpgD,MAAK,SAAC2gD,GAC9F,OAAOt7C,EAAYxO,QAAQ8pD,IAAgB,KAG/C,OAAOH,GAAkCE,GAAkCD,GAEnF,E,CAlBkD,M,gBC3BlD,IAAIG,EAGJA,EAAK,WACJ,OAAOn2D,KADH,GAIL,IAECm2D,EAAIA,GAAK,IAAIC,SAAS,cAAb,GACR,MAAOt4C,GAEc,kBAAX7L,SAAqBkkD,EAAIlkD,QAOrC7S,EAAOC,QAAU82D,G,6BCnBjB,6CAKe,SAASE,EAAMC,GAC5B,IAAItoB,EAAkB1+B,WAAegnD,GACjCC,EAAYvoB,EAAgB,GAC5BwoB,EAAexoB,EAAgB,GAE/ByoB,EAAKH,GAAcC,EASvB,OARAjnD,aAAgB,WACG,MAAbinD,GAIFC,EAAa,OAAOxwC,OAAOr/B,KAAKsQ,MAAsB,IAAhBtQ,KAAKC,cAE5C,CAAC2vE,IACGE,I,qGCGGC,E,gBAAZ,SAAYA,GACR,qBACA,yBACA,mBACA,yBACA,qBALJ,CAAYA,MAAQ,K,iBAsChB,WAAYC,EAA8BC,EAAsBC,GAdxD,KAAAC,MAAkBJ,EAASK,KAgB/B/2D,KAAKg3D,cAAgBL,EAAcM,gBADL,aAE9Bj3D,KAAKk3D,kBAAoBP,EAAcO,oBAAqB,EAC5Dl3D,KAAK82D,MAAQH,EAAcQ,UAAYT,EAASK,KAEhD/2D,KAAK42D,YAAcA,GAAe,IAAU90D,aAC5C9B,KAAK62D,eAAiBA,GAAkB,IAAU/0D,aAqJ1D,OA/IW,YAAA3a,MAAP,SAAayvE,EAAqBC,GAC9B,OAAO,IAAIzQ,EAAO,CAAC6Q,eAAgBj3D,KAAKg3D,cAAeE,kBAAmBl3D,KAAKk3D,kBAAmBC,SAAUn3D,KAAK82D,OAAQF,EAAaC,IAMlI,YAAAO,WAAR,SAAmBA,EAAoB1oD,GACnC,KAAKA,EAAQyoD,SAAWn3D,KAAK82D,QAAY92D,KAAKk3D,mBAAqBxoD,EAAQ2oD,aAA3E,CAGA,IAAMC,GAAY,IAAI3kD,MAAO4kD,cAEvB/6D,GADoB,IAAY4gB,QAAQpd,KAAKw3D,eAAiB,IAAIF,EAAS,OAAS,IAAIA,EAAS,QAAQt3D,KAAKw3D,cAAa,KACzG,MAAMx3D,KAAK42D,YAAW,IAAI52D,KAAK62D,eAAc,MAAMH,EAAShoD,EAAQyoD,UAAS,MAAMC,EAE3Gp3D,KAAKy3D,gBAAgB/oD,EAAQyoD,SAAU36D,EAAKkS,EAAQ2oD,cAAe,KAMvE,YAAAI,gBAAA,SAAgBX,EAAiBxyB,EAAiB+yB,GAC1Cr3D,KAAKg3D,eACLh3D,KAAKg3D,cAAcF,EAAOxyB,EAAS+yB,IAO3C,YAAApqD,MAAA,SAAMq3B,EAAiBkzB,GACnBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASh0C,MACnB20C,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAE,SAAA,SAASpzB,EAAiBkzB,GACtBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASh0C,MACnB20C,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAhZ,QAAA,SAAQla,EAAiBkzB,GACrBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASiB,QACnBN,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAI,WAAA,SAAWtzB,EAAiBkzB,GACxBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASiB,QACnBN,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAzqD,KAAA,SAAKu3B,EAAiBkzB,GAClBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASK,KACnBM,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAK,QAAA,SAAQvzB,EAAiBkzB,GACrBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASK,KACnBM,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAvjB,QAAA,SAAQ3P,EAAiBkzB,GACrBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASoB,QACnBT,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAO,WAAA,SAAWzzB,EAAiBkzB,GACxBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASoB,QACnBT,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAA1lE,MAAA,SAAMwyC,EAAiBkzB,GACnBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASsB,MACnBX,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAS,SAAA,SAAS3zB,EAAiBkzB,GACtBx3D,KAAKo3D,WAAW9yB,EAAS,CACrB6yB,SAAUT,EAASsB,MACnBX,aAAa,EACbG,cAAeA,GAAiB,MAOxC,YAAAU,oBAAA,WACI,OAAOl4D,KAAKk3D,oBAAqB,GAEzC,E,gGClMgBiB,EAAgBC,EAAuBC,GACnD,GAAI,IAAYj7C,QAAQg7C,GACpB,MAAM,IAAgBv+C,6BAG1B,IACI,IAAMy+C,EAA4BD,EAAOE,aAAaH,GACtD,OAAOtjD,KAAK+I,MAAMy6C,GACpB,MAAOx6C,GACL,MAAM,IAAgBnE,8BAA8BmE,M,6BC/B5D,+CACe,SAASstC,EAA4B/4D,EAAGg5D,GACrD,GAAKh5D,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,YAAiBA,EAAGg5D,GACtD,IAAIpkD,EAAIzH,OAAOI,UAAUuW,SAASrW,KAAKzN,GAAGywB,MAAM,GAAI,GAEpD,MADU,WAAN7b,GAAkB5U,EAAE4jB,cAAahP,EAAI5U,EAAE4jB,YAAYlH,MAC7C,QAAN9H,GAAqB,QAANA,EAAoBxgB,MAAMg/C,KAAKpzC,GACxC,cAAN4U,GAAqB,2CAA2CmY,KAAKnY,GAAW,YAAiB5U,EAAGg5D,QAAxG,K,6BCPF,yDAOI9kC,GAPJ,YAOa,CACXiyC,GAAI,EACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,OAEFC,EAAqB,CAGvB1jD,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,MAC/B/f,GAAI,SAAYuK,GACd,MAAO,qBAAqBqmB,OAAOO,EAAO5mB,GAAM,SAG7C,SAASm5D,EAAkB/qD,EAAOgrD,EAAWC,GAOlD,GAAIvyE,MAAM+lB,QAAQusD,GAAY,CAC5B,IAAIE,EAAmBlrD,EAAM2B,MAAMwpD,aAAeL,EAClD,OAAOE,EAAU1jD,QAAO,SAAU8vB,EAAKmB,EAAM3/B,GAE3C,OADAw+B,EAAI8zB,EAAiB7jE,GAAG6jE,EAAiB9jD,KAAKxO,KAAWqyD,EAAmBD,EAAUpyD,IAC/Ew+B,IACN,IAGL,GAA2B,WAAvB9gB,YAAQ00C,GAAyB,CACnC,IAAII,EAAoBprD,EAAM2B,MAAMwpD,aAAeL,EAEnD,OAAOr5D,OAAO2V,KAAK4jD,GAAW1jD,QAAO,SAAU8vB,EAAKi0B,GAElD,OADAj0B,EAAIg0B,EAAkB/jE,GAAGgkE,IAAeJ,EAAmBD,EAAUK,IAC9Dj0B,IACN,IAIL,OADa6zB,EAAmBD,K,6BC9ClC,WACIM,EADJ,OACmB/pD,EAAMqZ,cAAc,MAMxB0wC,O,6BCPf,IAAIC,EAA8B,oBAAXh6C,QAAyBA,OAAOi6C,IACxCD,MAAYh6C,OAAOi6C,IAAI,cAAgB,oB,6BCUvCC,IATF,CACXC,cAAe,IACfC,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,MAAO,KACPC,SAAU,KACVC,QAAS,O,6BCTX,qEASA,IAqBIC,EAAKC,WAAYC,EAAMC,YAAaC,EAAM7xD,YAE1C8xD,EAAO,IAAIL,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAgB,EAAG,EAAoB,IAG1IM,EAAO,IAAIN,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAiB,EAAG,IAEjIO,EAAO,IAAIP,EAAG,CAAC,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,KAE7EQ,EAAO,SAAUC,EAAIC,GAErB,IADA,IAAIvxE,EAAI,IAAI+wE,EAAI,IACP1rE,EAAI,EAAGA,EAAI,KAAMA,EACtBrF,EAAEqF,GAAKksE,GAAS,GAAKD,EAAGjsE,EAAI,GAGhC,IAAI8J,EAAI,IAAI8hE,EAAIjxE,EAAE,KAClB,IAASqF,EAAI,EAAGA,EAAI,KAAMA,EACtB,IAAK,IAAIkP,EAAIvU,EAAEqF,GAAIkP,EAAIvU,EAAEqF,EAAI,KAAMkP,EAC/BpF,EAAEoF,GAAOA,EAAIvU,EAAEqF,IAAO,EAAKA,EAGnC,MAAO,CAACrF,EAAGmP,IAEXqiE,EAAKH,EAAKH,EAAM,GAAIO,EAAKD,EAAG,GAAIE,EAAQF,EAAG,GAE/CC,EAAG,IAAM,IAAKC,EAAM,KAAO,GAI3B,IAHA,IAAIC,EAAKN,EAAKF,EAAM,GAAIS,EAAKD,EAAG,GAAIE,EAAQF,EAAG,GAE3CG,EAAM,IAAIf,EAAI,OACT1rE,EAAI,EAAGA,EAAI,QAASA,EAAG,CAE5B,IAAI5E,GAAU,MAAJ4E,KAAgB,GAAW,MAAJA,IAAe,EAEhD5E,GAAU,OADVA,GAAU,MAAJA,KAAgB,GAAW,MAAJA,IAAe,MACtB,GAAW,KAAJA,IAAe,EAC5CqxE,EAAIzsE,KAAY,MAAJ5E,KAAgB,GAAW,IAAJA,IAAe,KAAQ,EAK9D,IAAIsxE,EAAQ,SAAUC,EAAIC,EAAI9iE,GAO1B,IANA,IAAItO,EAAImxE,EAAGzsE,OAEPF,EAAI,EAEJgM,EAAI,IAAI0/D,EAAIkB,GAET5sE,EAAIxE,IAAKwE,IACVgM,EAAE2gE,EAAG3sE,GAAK,GAEhB,IAII6sE,EAJAC,EAAK,IAAIpB,EAAIkB,GACjB,IAAK5sE,EAAI,EAAGA,EAAI4sE,IAAM5sE,EAClB8sE,EAAG9sE,GAAM8sE,EAAG9sE,EAAI,GAAKgM,EAAEhM,EAAI,IAAO,EAGtC,GAAI8J,EAAG,CAEH+iE,EAAK,IAAInB,EAAI,GAAKkB,GAElB,IAAIG,EAAM,GAAKH,EACf,IAAK5sE,EAAI,EAAGA,EAAIxE,IAAKwE,EAEjB,GAAI2sE,EAAG3sE,GAQH,IANA,IAAIgtE,EAAMhtE,GAAK,EAAK2sE,EAAG3sE,GAEnBitE,EAAML,EAAKD,EAAG3sE,GAEd7E,EAAI2xE,EAAGH,EAAG3sE,GAAK,MAAQitE,EAElBhjE,EAAI9O,GAAM,GAAK8xE,GAAO,EAAI9xE,GAAK8O,IAAK9O,EAEzC0xE,EAAGJ,EAAItxE,KAAO4xE,GAAOC,OAOjC,IADAH,EAAK,IAAInB,EAAIlwE,GACRwE,EAAI,EAAGA,EAAIxE,IAAKwE,EACb2sE,EAAG3sE,KACH6sE,EAAG7sE,GAAKysE,EAAIK,EAAGH,EAAG3sE,GAAK,QAAW,GAAK2sE,EAAG3sE,IAItD,OAAO6sE,GAGPK,EAAM,IAAI1B,EAAG,KACjB,IAASxrE,EAAI,EAAGA,EAAI,MAAOA,EACvBktE,EAAIltE,GAAK,EACb,IAASA,EAAI,IAAKA,EAAI,MAAOA,EACzBktE,EAAIltE,GAAK,EACb,IAASA,EAAI,IAAKA,EAAI,MAAOA,EACzBktE,EAAIltE,GAAK,EACb,IAASA,EAAI,IAAKA,EAAI,MAAOA,EACzBktE,EAAIltE,GAAK,EAEb,IAAImtE,EAAM,IAAI3B,EAAG,IACjB,IAASxrE,EAAI,EAAGA,EAAI,KAAMA,EACtBmtE,EAAIntE,GAAK,EAEb,IAAIotE,EAAoBV,EAAKQ,EAAK,EAAG,GAAIG,EAAqBX,EAAKQ,EAAK,EAAG,GAEvEI,EAAoBZ,EAAKS,EAAK,EAAG,GAAII,EAAqBb,EAAKS,EAAK,EAAG,GAEvEptE,EAAM,SAAUrH,GAEhB,IADA,IAAIuR,EAAIvR,EAAE,GACDsH,EAAI,EAAGA,EAAItH,EAAEwH,SAAUF,EACxBtH,EAAEsH,GAAKiK,IACPA,EAAIvR,EAAEsH,IAEd,OAAOiK,GAGP6P,EAAO,SAAUzQ,EAAG0B,EAAGd,GACvB,IAAIpG,EAAKkH,EAAI,EAAK,EAClB,OAAS1B,EAAExF,GAAMwF,EAAExF,EAAI,IAAM,KAAY,EAAJkH,GAAUd,GAG/CujE,EAAS,SAAUnkE,EAAG0B,GACtB,IAAIlH,EAAKkH,EAAI,EAAK,EAClB,OAAS1B,EAAExF,GAAMwF,EAAExF,EAAI,IAAM,EAAMwF,EAAExF,EAAI,IAAM,MAAa,EAAJkH,IAGxD0iE,EAAO,SAAU1iE,GAAK,OAASA,EAAI,GAAK,EAAK,GAG7C2iE,EAAM,SAAUvyE,EAAGK,EAAG8zB,IACb,MAAL9zB,GAAaA,EAAI,KACjBA,EAAI,IACC,MAAL8zB,GAAaA,EAAIn0B,EAAE+E,UACnBovB,EAAIn0B,EAAE+E,QAEV,IAAIuY,EAAI,IAAKtd,aAAauwE,EAAMA,EAAMvwE,aAAaywE,EAAMA,EAAMJ,GAAIl8C,EAAI9zB,GAEvE,OADAid,EAAElf,IAAI4B,EAAEwyE,SAASnyE,EAAG8zB,IACb7W,GAuBPm1D,EAAK,CACL,iBACA,qBACA,yBACA,mBACA,kBACA,oBANK,CAQL,cACA,qBACA,uBACA,8BACA,oBACA,mBACA,oBAIA5uD,EAAM,SAANA,EAAgB6uD,EAAKC,EAAKC,GAC1B,IAAIz+C,EAAI,IAAI4E,MAAM45C,GAAOF,EAAGC,IAI5B,GAHAv+C,EAAElH,KAAOylD,EACL35C,MAAM85C,mBACN95C,MAAM85C,kBAAkB1+C,EAAGtQ,IAC1B+uD,EACD,MAAMz+C,EACV,OAAOA,GAGP2+C,EAAQ,SAAUC,EAAKC,EAAKC,GAE5B,IAAIC,EAAKH,EAAIhuE,OACb,IAAKmuE,GAAOD,GAAMA,EAAG7oE,IAAM6oE,EAAGpiE,EAC1B,OAAOmiE,GAAO,IAAI3C,EAAG,GAEzB,IAAI8C,GAASH,GAAOC,EAEhBG,GAAQH,GAAMA,EAAGpuE,EAChBouE,IACDA,EAAK,IAEJD,IACDA,EAAM,IAAI3C,EAAQ,EAAL6C,IAEjB,IAAIG,EAAO,SAAUxiE,GACjB,IAAIyiE,EAAKN,EAAIjuE,OAEb,GAAI8L,EAAIyiE,EAAI,CAER,IAAIC,EAAO,IAAIlD,EAAGrzE,KAAK4H,IAAS,EAAL0uE,EAAQziE,IACnC0iE,EAAKn1E,IAAI40E,GACTA,EAAMO,IAIVC,EAAQP,EAAG7oE,GAAK,EAAGgW,EAAM6yD,EAAGrjE,GAAK,EAAGvE,EAAK4nE,EAAGzzE,GAAK,EAAGi0E,EAAKR,EAAGpiE,EAAG6iE,EAAKT,EAAG/kE,EAAGylE,EAAMV,EAAGnkE,EAAG8kE,EAAMX,EAAG31D,EAE/Fu2D,EAAY,EAALX,EACX,EAAG,CACC,IAAKO,EAAI,CAELD,EAAQ70D,EAAKo0D,EAAK3yD,EAAK,GAEvB,IAAI8b,EAAOvd,EAAKo0D,EAAK3yD,EAAM,EAAG,GAE9B,GADAA,GAAO,GACF8b,EAAM,CAEP,IAAuBrrB,EAAIkiE,GAAvB1yE,EAAIiyE,EAAKlyD,GAAO,GAAe,GAAM2yD,EAAI1yE,EAAI,IAAM,EAAIsF,EAAItF,EAAIwQ,EACnE,GAAIlL,EAAIutE,EAAI,CACJE,GACAvvD,EAAI,GACR,MAGAsvD,GACAE,EAAKhoE,EAAKwF,GAEdmiE,EAAI50E,IAAI20E,EAAIP,SAASnyE,EAAGsF,GAAI0F,GAE5B4nE,EAAGzzE,EAAI6L,GAAMwF,EAAGoiE,EAAGrjE,EAAIwQ,EAAU,EAAJza,EAAOstE,EAAG7oE,EAAIopE,EAC3C,SAEC,GAAY,GAARt3C,EACLu3C,EAAKvB,EAAMwB,EAAKtB,EAAMuB,EAAM,EAAGC,EAAM,OACpC,GAAY,GAAR13C,EAAW,CAEhB,IAAI43C,EAAOn1D,EAAKo0D,EAAK3yD,EAAK,IAAM,IAAK2zD,EAAQp1D,EAAKo0D,EAAK3yD,EAAM,GAAI,IAAM,EACnE4zD,EAAKF,EAAOn1D,EAAKo0D,EAAK3yD,EAAM,EAAG,IAAM,EACzCA,GAAO,GAKP,IAHA,IAAI6zD,EAAM,IAAI5D,EAAG2D,GAEbE,EAAM,IAAI7D,EAAG,IACRxrE,EAAI,EAAGA,EAAIkvE,IAASlvE,EAEzBqvE,EAAItD,EAAK/rE,IAAM8Z,EAAKo0D,EAAK3yD,EAAU,EAAJvb,EAAO,GAE1Cub,GAAe,EAAR2zD,EAEP,IAAII,EAAMvvE,EAAIsvE,GAAME,GAAU,GAAKD,GAAO,EAEtCE,EAAM9C,EAAK2C,EAAKC,EAAK,GACzB,IAAStvE,EAAI,EAAGA,EAAImvE,GAAK,CACrB,IAII3zE,EAJAsO,EAAI0lE,EAAI11D,EAAKo0D,EAAK3yD,EAAKg0D,IAM3B,GAJAh0D,GAAW,GAAJzR,GAEHtO,EAAIsO,IAAM,GAEN,GACJslE,EAAIpvE,KAAOxE,MAEV,CAED,IAAIE,EAAI,EAAG+c,EAAI,EAOf,IANS,IAALjd,GACAid,EAAI,EAAIqB,EAAKo0D,EAAK3yD,EAAK,GAAIA,GAAO,EAAG7f,EAAI0zE,EAAIpvE,EAAI,IACvC,IAALxE,GACLid,EAAI,EAAIqB,EAAKo0D,EAAK3yD,EAAK,GAAIA,GAAO,GACxB,IAAL/f,IACLid,EAAI,GAAKqB,EAAKo0D,EAAK3yD,EAAK,KAAMA,GAAO,GAClC9C,KACH22D,EAAIpvE,KAAOtE,GAIvB,IAAI+zE,EAAKL,EAAIzB,SAAS,EAAGsB,GAAOS,EAAKN,EAAIzB,SAASsB,GAElDH,EAAM/uE,EAAI0vE,GAEVV,EAAMhvE,EAAI2vE,GACVd,EAAKlC,EAAK+C,EAAIX,EAAK,GACnBD,EAAKnC,EAAKgD,EAAIX,EAAK,QAGnB/vD,EAAI,GACR,GAAIzD,EAAMyzD,EAAM,CACRT,GACAvvD,EAAI,GACR,OAKJsvD,GACAE,EAAKhoE,EAAK,QAGd,IAFA,IAAImpE,GAAO,GAAKb,GAAO,EAAGc,GAAO,GAAKb,GAAO,EACzCc,EAAOt0D,GACHs0D,EAAOt0D,EAAK,CAEhB,IAAoCia,GAAhC95B,EAAIkzE,EAAGpB,EAAOU,EAAK3yD,GAAOo0D,MAAkB,EAEhD,IADAp0D,GAAW,GAAJ7f,GACGszE,EAAM,CACRT,GACAvvD,EAAI,GACR,MAIJ,GAFKtjB,GACDsjB,EAAI,GACJwW,EAAM,IACN24C,EAAI3nE,KAAQgvB,MACX,IAAW,KAAPA,EAAY,CACjBq6C,EAAOt0D,EAAKqzD,EAAK,KACjB,MAGA,IAAItwE,EAAMk3B,EAAM,IAEhB,GAAIA,EAAM,IAAK,CAEX,IAAmB76B,EAAIkxE,EAAnB7rE,EAAIw1B,EAAM,KACdl3B,EAAMwb,EAAKo0D,EAAK3yD,GAAM,GAAK5gB,GAAK,GAAKyxE,EAAGpsE,GACxCub,GAAO5gB,EAGX,IAAI0O,GAAIwlE,EAAGrB,EAAOU,EAAK3yD,GAAOq0D,GAAME,GAAOzmE,KAAM,EAC5CA,IACD2V,EAAI,GACRzD,GAAW,GAAJlS,GACHqmE,EAAKnD,EAAGuD,IACZ,GAAIA,GAAO,EAAG,CACNn1E,EAAImxE,EAAKgE,IACbJ,GAAMlC,EAAOU,EAAK3yD,IAAS,GAAK5gB,GAAK,EAAI4gB,GAAO5gB,EAEpD,GAAI4gB,EAAMyzD,EAAM,CACRT,GACAvvD,EAAI,GACR,MAEAsvD,GACAE,EAAKhoE,EAAK,QAEd,IADA,IAAI01B,GAAM11B,EAAKlI,EACRkI,EAAK01B,GAAK11B,GAAM,EACnB2nE,EAAI3nE,GAAM2nE,EAAI3nE,EAAKkpE,GACnBvB,EAAI3nE,EAAK,GAAK2nE,EAAI3nE,EAAK,EAAIkpE,GAC3BvB,EAAI3nE,EAAK,GAAK2nE,EAAI3nE,EAAK,EAAIkpE,GAC3BvB,EAAI3nE,EAAK,GAAK2nE,EAAI3nE,EAAK,EAAIkpE,GAE/BlpE,EAAK01B,IAGbkyC,EAAGpiE,EAAI4iE,EAAIR,EAAGrjE,EAAI8kE,EAAMzB,EAAGzzE,EAAI6L,EAAI4nE,EAAG7oE,EAAIopE,EACtCC,IACAD,EAAQ,EAAGP,EAAGnkE,EAAI6kE,EAAKV,EAAG/kE,EAAIwlE,EAAIT,EAAG31D,EAAIs2D,UACvCJ,GACV,OAAOnoE,GAAM2nE,EAAIjuE,OAASiuE,EAAMT,EAAIS,EAAK,EAAG3nE,IAG5CupE,EAAQ,SAAU1mE,EAAG0B,EAAG5P,GACxBA,IAAU,EAAJ4P,EACN,IAAIlH,EAAKkH,EAAI,EAAK,EAClB1B,EAAExF,IAAM1I,EACRkO,EAAExF,EAAI,IAAM1I,IAAM,GAGlB60E,EAAU,SAAU3mE,EAAG0B,EAAG5P,GAC1BA,IAAU,EAAJ4P,EACN,IAAIlH,EAAKkH,EAAI,EAAK,EAClB1B,EAAExF,IAAM1I,EACRkO,EAAExF,EAAI,IAAM1I,IAAM,EAClBkO,EAAExF,EAAI,IAAM1I,IAAM,IAGlB80E,EAAQ,SAAU5mE,EAAGujE,GAGrB,IADA,IAAI9rE,EAAI,GACCd,EAAI,EAAGA,EAAIqJ,EAAEnJ,SAAUF,EACxBqJ,EAAErJ,IACFc,EAAEywB,KAAK,CAAE/1B,EAAGwE,EAAGuF,EAAG8D,EAAErJ,KAE5B,IAAIxE,EAAIsF,EAAEZ,OACNi1C,EAAKr0C,EAAEwzB,QACX,IAAK94B,EACD,MAAO,CAACqS,EAAI,GAChB,GAAS,GAALrS,EAAQ,CACR,IAAIL,EAAI,IAAIqwE,EAAG1qE,EAAE,GAAGtF,EAAI,GAExB,OADAL,EAAE2F,EAAE,GAAGtF,GAAK,EACL,CAACL,EAAG,GAEf2F,EAAE8lB,MAAK,SAAUluB,EAAGiC,GAAK,OAAOjC,EAAE6M,EAAI5K,EAAE4K,KAGxCzE,EAAEywB,KAAK,CAAE/1B,GAAI,EAAG+J,EAAG,QACnB,IAAIyG,EAAIlL,EAAE,GAAIgJ,EAAIhJ,EAAE,GAAI4rD,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAO7C,IANA9rD,EAAE,GAAK,CAAEtF,GAAI,EAAG+J,EAAGyG,EAAEzG,EAAIuE,EAAEvE,EAAGyG,EAAGA,EAAGlC,EAAGA,GAMhC6iD,GAAMnxD,EAAI,GACbwQ,EAAIlL,EAAEA,EAAE4rD,GAAInnD,EAAIzE,EAAE8rD,GAAIrnD,EAAImnD,IAAOE,KACjC9iD,EAAIhJ,EAAE4rD,GAAMC,GAAM7rD,EAAE4rD,GAAInnD,EAAIzE,EAAE8rD,GAAIrnD,EAAImnD,IAAOE,KAC7C9rD,EAAE6rD,KAAQ,CAAEnxD,GAAI,EAAG+J,EAAGyG,EAAEzG,EAAIuE,EAAEvE,EAAGyG,EAAGA,EAAGlC,EAAGA,GAE9C,IAAIomE,EAAS/6B,EAAG,GAAG35C,EACnB,IAASwE,EAAI,EAAGA,EAAIxE,IAAKwE,EACjBm1C,EAAGn1C,GAAGxE,EAAI00E,IACVA,EAAS/6B,EAAGn1C,GAAGxE,GAGvB,IAAI20E,EAAK,IAAIzE,EAAIwE,EAAS,GAEtBE,EAAMtiE,EAAGhN,EAAE6rD,EAAK,GAAIwjB,EAAI,GAC5B,GAAIC,EAAMxD,EAAI,CAIN5sE,EAAI,EAAR,IAAW0vE,EAAK,EAEZW,EAAMD,EAAMxD,EAAI0D,EAAM,GAAKD,EAE/B,IADAl7B,EAAGvuB,MAAK,SAAUluB,EAAGiC,GAAK,OAAOw1E,EAAGx1E,EAAEa,GAAK20E,EAAGz3E,EAAE8C,IAAM9C,EAAE6M,EAAI5K,EAAE4K,KACvDvF,EAAIxE,IAAKwE,EAAG,CACf,IAAIuwE,EAAOp7B,EAAGn1C,GAAGxE,EACjB,KAAI20E,EAAGI,GAAQ3D,GAKX,MAJA8C,GAAMY,GAAO,GAAMF,EAAMD,EAAGI,IAC5BJ,EAAGI,GAAQ3D,EAMnB,IADA8C,KAAQW,EACDX,EAAK,GAAG,CACX,IAAIc,EAAOr7B,EAAGn1C,GAAGxE,EACb20E,EAAGK,GAAQ5D,EACX8C,GAAM,GAAM9C,EAAKuD,EAAGK,KAAU,IAE5BxwE,EAEV,KAAOA,GAAK,GAAK0vE,IAAM1vE,EAAG,CACtB,IAAIywE,EAAOt7B,EAAGn1C,GAAGxE,EACb20E,EAAGM,IAAS7D,MACVuD,EAAGM,KACHf,GAGVU,EAAMxD,EAEV,MAAO,CAAC,IAAIpB,EAAG2E,GAAKC,IAGpBtiE,EAAK,SAALA,EAAe2K,EAAGzM,EAAG3C,GACrB,OAAe,GAARoP,EAAEjd,EACHrD,KAAK4H,IAAI+N,EAAG2K,EAAEzM,EAAGA,EAAG3C,EAAI,GAAIyE,EAAG2K,EAAE3O,EAAGkC,EAAG3C,EAAI,IAC1C2C,EAAEyM,EAAEjd,GAAK6N,GAGhBqnE,EAAK,SAAUh1E,GAGf,IAFA,IAAIF,EAAIE,EAAEwE,OAEH1E,IAAME,IAAIF,KAMjB,IAJA,IAAIm1E,EAAK,IAAIjF,IAAMlwE,GAEfo1E,EAAM,EAAGC,EAAMn1E,EAAE,GAAIo1E,EAAM,EAC3B10E,EAAI,SAAUjB,GAAKw1E,EAAGC,KAASz1E,GAC1B6E,EAAI,EAAGA,GAAKxE,IAAKwE,EACtB,GAAItE,EAAEsE,IAAM6wE,GAAO7wE,GAAKxE,IAClBs1E,MACD,CACD,IAAKD,GAAOC,EAAM,EAAG,CACjB,KAAOA,EAAM,IAAKA,GAAO,IACrB10E,EAAE,OACF00E,EAAM,IACN10E,EAAE00E,EAAM,GAAOA,EAAM,IAAO,EAAK,MAAUA,EAAM,GAAM,EAAK,OAC5DA,EAAM,QAGT,GAAIA,EAAM,EAAG,CAEd,IADA10E,EAAEy0E,KAAQC,EACHA,EAAM,EAAGA,GAAO,EACnB10E,EAAE,MACF00E,EAAM,IACN10E,EAAI00E,EAAM,GAAM,EAAK,MAAOA,EAAM,GAE1C,KAAOA,KACH10E,EAAEy0E,GACNC,EAAM,EACND,EAAMn1E,EAAEsE,GAGhB,MAAO,CAAC2wE,EAAGhD,SAAS,EAAGiD,GAAMp1E,IAG7Bu1E,EAAO,SAAUC,EAAIL,GAErB,IADA,IAAI3kE,EAAI,EACChM,EAAI,EAAGA,EAAI2wE,EAAGzwE,SAAUF,EAC7BgM,GAAKglE,EAAGhxE,GAAK2wE,EAAG3wE,GACpB,OAAOgM,GAIPilE,EAAQ,SAAU14E,EAAKgjB,EAAK2yD,GAE5B,IAAI1yE,EAAI0yE,EAAIhuE,OACR2D,EAAI4pE,EAAKlyD,EAAM,GACnBhjB,EAAIsL,GAAS,IAAJrI,EACTjD,EAAIsL,EAAI,GAAKrI,IAAM,EACnBjD,EAAIsL,EAAI,GAAc,IAATtL,EAAIsL,GACjBtL,EAAIsL,EAAI,GAAkB,IAAbtL,EAAIsL,EAAI,GACrB,IAAK,IAAI7D,EAAI,EAAGA,EAAIxE,IAAKwE,EACrBzH,EAAIsL,EAAI7D,EAAI,GAAKkuE,EAAIluE,GACzB,OAAqB,GAAb6D,EAAI,EAAIrI,IAGhB01E,EAAO,SAAUhD,EAAK31E,EAAKo2E,EAAOwC,EAAMC,EAAIC,EAAIpF,EAAIqF,EAAIC,EAAI9C,EAAI1jE,GAChEglE,EAAMx3E,EAAKwS,IAAK4jE,KACdyC,EAAG,KAML,IALA,IAAIjF,EAAK8D,EAAMmB,EAAI,IAAKI,EAAMrF,EAAG,GAAIsF,EAAMtF,EAAG,GAC1CG,EAAK2D,EAAMoB,EAAI,IAAKK,EAAMpF,EAAG,GAAIqF,EAAMrF,EAAG,GAC1CsF,EAAKlB,EAAGc,GAAMK,EAAOD,EAAG,GAAIE,EAAMF,EAAG,GACrC1gD,EAAKw/C,EAAGgB,GAAMK,EAAO7gD,EAAG,GAAI8gD,EAAM9gD,EAAG,GACrC+gD,EAAS,IAAIvG,EAAI,IACZ1rE,EAAI,EAAGA,EAAI6xE,EAAK3xE,SAAUF,EAC/BiyE,EAAiB,GAAVJ,EAAK7xE,MAChB,IAASA,EAAI,EAAGA,EAAI+xE,EAAK7xE,SAAUF,EAC/BiyE,EAAiB,GAAVF,EAAK/xE,MAGhB,IAFA,IAAImxB,EAAK8+C,EAAMgC,EAAQ,GAAIC,EAAM/gD,EAAG,GAAIghD,EAAOhhD,EAAG,GAC9CihD,EAAO,GACJA,EAAO,IAAMF,EAAInG,EAAKqG,EAAO,MAAOA,GAE3C,IAKIxD,EAAIyD,EAAIxD,EAAIyD,EALZC,EAAQ9D,EAAK,GAAM,EACnB+D,EAAQzB,EAAKK,EAAIlE,GAAO6D,EAAKM,EAAIlE,GAAOlB,EACxCwG,EAAQ1B,EAAKK,EAAII,GAAOT,EAAKM,EAAIK,GAAOzF,EAAK,GAAK,EAAImG,EAAOrB,EAAKkB,EAAQC,IAAQ,EAAID,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,KACnI,GAAIM,GAAQC,GAASD,GAAQE,EACzB,OAAOxB,EAAM14E,EAAKwS,EAAGmjE,EAAIP,SAAS4D,EAAIA,EAAK9C,IAG/C,GADAsB,EAAMx3E,EAAKwS,EAAG,GAAK0nE,EAAQD,IAASznE,GAAK,EACrC0nE,EAAQD,EAAO,CACf5D,EAAKlC,EAAK8E,EAAKC,EAAK,GAAIY,EAAKb,EAAK3C,EAAKnC,EAAKgF,EAAKC,EAAK,GAAIW,EAAKZ,EAC/D,IAAIgB,EAAMhG,EAAKwF,EAAKC,EAAM,GAC1BpC,EAAMx3E,EAAKwS,EAAG+mE,EAAM,KACpB/B,EAAMx3E,EAAKwS,EAAI,EAAGinE,EAAM,GACxBjC,EAAMx3E,EAAKwS,EAAI,GAAIqnE,EAAO,GAC1BrnE,GAAK,GACL,IAAS/K,EAAI,EAAGA,EAAIoyE,IAAQpyE,EACxB+vE,EAAMx3E,EAAKwS,EAAI,EAAI/K,EAAGkyE,EAAInG,EAAK/rE,KACnC+K,GAAK,EAAIqnE,EAET,IADA,IAAIO,EAAO,CAACd,EAAME,GACTa,EAAK,EAAGA,EAAK,IAAKA,EACvB,KAAIC,GAAOF,EAAKC,GAChB,IAAS5yE,EAAI,EAAGA,EAAI6yE,GAAK3yE,SAAUF,EAAG,CAClC,IAAIe,GAAgB,GAAV8xE,GAAK7yE,GACf+vE,EAAMx3E,EAAKwS,EAAG2nE,EAAI3xE,KAAOgK,GAAKmnE,EAAInxE,IAC9BA,GAAM,KACNgvE,EAAMx3E,EAAKwS,EAAI8nE,GAAK7yE,KAAO,EAAK,KAAM+K,GAAK8nE,GAAK7yE,KAAO,WAKnE4uE,EAAKxB,EAAKiF,EAAKnF,EAAK2B,EAAKvB,EAAKgF,EAAKnF,EAEvC,IAASntE,EAAI,EAAGA,EAAIsxE,IAAMtxE,EACtB,GAAImxE,EAAKnxE,GAAK,IAAK,CACXe,GAAOowE,EAAKnxE,KAAO,GAAM,GAC7BgwE,EAAQz3E,EAAKwS,EAAG6jE,EAAG7tE,GAAM,MAAOgK,GAAKsnE,EAAGtxE,GAAM,KAC1CA,GAAM,IACNgvE,EAAMx3E,EAAKwS,EAAIomE,EAAKnxE,KAAO,GAAM,IAAK+K,GAAK8gE,EAAK9qE,KACpD,IAAI+xE,GAAgB,GAAV3B,EAAKnxE,GACfgwE,EAAQz3E,EAAKwS,EAAG8jE,EAAGiE,KAAO/nE,GAAKunE,EAAGQ,IAC9BA,GAAM,IACN9C,EAAQz3E,EAAKwS,EAAIomE,EAAKnxE,KAAO,EAAK,MAAO+K,GAAK+gE,EAAKgH,UAGvD9C,EAAQz3E,EAAKwS,EAAG6jE,EAAGuC,EAAKnxE,KAAM+K,GAAKsnE,EAAGlB,EAAKnxE,IAInD,OADAgwE,EAAQz3E,EAAKwS,EAAG6jE,EAAG,MACZ7jE,EAAIsnE,EAAG,MAGdU,EAAoB,IAAInH,EAAI,CAAC,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,UAE/F/9D,EAAmB,IAAI29D,EAAG,GAE1BwH,EAAO,SAAU9E,EAAK+E,EAAKC,EAAMC,EAAKC,EAAMC,GAC5C,IAAI73E,EAAI0yE,EAAIhuE,OACR2D,EAAI,IAAI2nE,EAAG2H,EAAM33E,EAAI,GAAK,EAAIrD,KAAKmQ,KAAK9M,EAAI,MAAS43E,GAErDh3E,EAAIyH,EAAE8pE,SAASwF,EAAKtvE,EAAE3D,OAASkzE,GAC/B73D,EAAM,EACV,IAAK03D,GAAOz3E,EAAI,EACZ,IAAK,IAAIwE,EAAI,EAAGA,GAAKxE,EAAGwE,GAAK,MAAO,CAEhC,IAAIsvB,EAAItvB,EAAI,MACRsvB,EAAI9zB,EAEJ+f,EAAM01D,EAAM70E,EAAGmf,EAAK2yD,EAAIP,SAAS3tE,EAAGsvB,KAIpClzB,EAAE4D,GAAKqzE,EACP93D,EAAM01D,EAAM70E,EAAGmf,EAAK2yD,EAAIP,SAAS3tE,EAAGxE,SAI3C,CAeD,IAdA,IAAI83E,EAAMP,EAAIE,EAAM,GAChBx6D,EAAI66D,IAAQ,GAAI53E,EAAU,KAAN43E,EACpBC,GAAS,GAAKL,GAAQ,EAEtBM,EAAO,IAAI9H,EAAI,OAAQ+H,EAAO,IAAI/H,EAAI6H,EAAQ,GAC9CG,EAAQv7E,KAAKmQ,KAAK4qE,EAAO,GAAIS,EAAQ,EAAID,EACzCE,EAAM,SAAU5zE,GAAK,OAAQkuE,EAAIluE,GAAMkuE,EAAIluE,EAAI,IAAM0zE,EAAUxF,EAAIluE,EAAI,IAAM2zE,GAAUJ,GAGvFpC,EAAO,IAAIvF,EAAI,MAEfwF,EAAK,IAAI1F,EAAI,KAAM2F,EAAK,IAAI3F,EAAI,IAEhCmI,EAAO,EAAG5H,EAAK,EAAUqF,GAAPtxE,EAAI,EAAQ,GAAG8zE,EAAK,EAAGvC,EAAK,EAC3CvxE,EAAIxE,IAAKwE,EAAG,CAGf,IAAI+zE,EAAKH,EAAI5zE,GAETg0E,EAAW,MAAJh0E,EAAWi0E,EAAQR,EAAKM,GAKnC,GAJAP,EAAKQ,GAAQC,EACbR,EAAKM,GAAMC,EAGPF,GAAM9zE,EAAG,CAET,IAAIk0E,EAAM14E,EAAIwE,EACd,IAAK6zE,EAAO,KAAQvC,EAAK,QAAU4C,EAAM,IAAK,CAC1C34D,EAAM21D,EAAKhD,EAAK9xE,EAAG,EAAG+0E,EAAMC,EAAIC,EAAIpF,EAAIqF,EAAIC,EAAIvxE,EAAIuxE,EAAIh2D,GACxD+1D,EAAKuC,EAAO5H,EAAK,EAAGsF,EAAKvxE,EACzB,IAAK,IAAIkP,EAAI,EAAGA,EAAI,MAAOA,EACvBkiE,EAAGliE,GAAK,EACZ,IAASA,EAAI,EAAGA,EAAI,KAAMA,EACtBmiE,EAAGniE,GAAK,EAGhB,IAAIlD,EAAI,EAAG3C,EAAI,EAAG8qE,EAAOz4E,EAAG04E,EAAOJ,EAAOC,EAAS,MACnD,GAAIC,EAAM,GAAKH,GAAMH,EAAI5zE,EAAIo0E,GAMzB,IALA,IAAIC,EAAOl8E,KAAKqQ,IAAIiQ,EAAGy7D,GAAO,EAC1BI,EAAOn8E,KAAKqQ,IAAI,MAAOxI,GAGvBu0E,EAAKp8E,KAAKqQ,IAAI,IAAK0rE,GAChBE,GAAOE,KAAUH,GAAQH,GAAQC,GAAO,CAC3C,GAAI/F,EAAIluE,EAAIgM,IAAMkiE,EAAIluE,EAAIgM,EAAIooE,GAAM,CAEhC,IADA,IAAII,GAAK,EACFA,GAAKD,GAAMrG,EAAIluE,EAAIw0E,KAAOtG,EAAIluE,EAAIw0E,GAAKJ,KAAQI,IAEtD,GAAIA,GAAKxoE,EAAG,CAGR,GAFAA,EAAIwoE,GAAInrE,EAAI+qE,EAERI,GAAKH,EACL,MAIJ,IAAII,GAAMt8E,KAAKqQ,IAAI4rE,EAAKI,GAAK,GACzBtK,GAAK,EACT,IAASh7D,EAAI,EAAGA,EAAIulE,KAAOvlE,EAAG,CAC1B,IAAIwlE,GAAM10E,EAAIo0E,EAAMllE,EAAI,MAAS,MAE7By9D,GAAM+H,GADAlB,EAAKkB,IACM,MAAS,MAC1B/H,GAAKzC,KACLA,GAAKyC,GAAIsH,EAAQS,MAMjCN,IADAJ,EAAOC,IAAOA,EAAQT,EAAKQ,IACJ,MAAS,MAIxC,GAAI3qE,EAAG,CAGH8nE,EAAKG,KAAQ,UAAajF,EAAMrgE,IAAM,GAAMwgE,EAAMnjE,GAClD,IAAIsrE,GAAiB,GAAXtI,EAAMrgE,GAAS4oE,GAAiB,GAAXpI,EAAMnjE,GACrC4iE,GAAMJ,EAAK8I,IAAO7I,EAAK8I,MACrBxD,EAAG,IAAMuD,MACTtD,EAAGuD,IACLd,EAAK9zE,EAAIgM,IACP6nE,OAGF1C,EAAKG,KAAQpD,EAAIluE,KACfoxE,EAAGlD,EAAIluE,KAIrBub,EAAM21D,EAAKhD,EAAK9xE,EAAGi3E,EAAKlC,EAAMC,EAAIC,EAAIpF,EAAIqF,EAAIC,EAAIvxE,EAAIuxE,EAAIh2D,IAErD83D,GAAa,EAAN93D,IACRA,EAAM01D,EAAM70E,EAAGmf,EAAM,EAAG1N,IAEhC,OAAO6/D,EAAI7pE,EAAG,EAAGsvE,EAAM1F,EAAKlyD,GAAO63D,IAGnCyB,EAAsB,WAEtB,IADA,IAAI/zE,EAAI,IAAIg0E,WAAW,KACd90E,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAE1B,IADA,IAAItE,EAAIsE,EAAGmP,EAAI,IACNA,GACLzT,GAAU,EAAJA,IAAW,WAAcA,IAAM,EACzCoF,EAAEd,GAAKtE,EAEX,OAAOoF,EARe,GAWtBi0E,EAAM,WACN,IAAIr5E,GAAK,EACT,MAAO,CACHqP,EAAG,SAAU1B,GAGT,IADA,IAAI2rE,EAAKt5E,EACAsE,EAAI,EAAGA,EAAIqJ,EAAEnJ,SAAUF,EAC5Bg1E,EAAKH,EAAW,IAALG,EAAY3rE,EAAErJ,IAAOg1E,IAAO,EAC3Ct5E,EAAIs5E,GAER3rE,EAAG,WAAc,OAAQ3N,KA2B7Bu5E,EAAO,SAAU/G,EAAKoF,EAAKH,EAAKC,EAAMhF,GACtC,OAAO4E,EAAK9E,EAAkB,MAAboF,EAAIhL,MAAgB,EAAIgL,EAAIhL,MAAkB,MAAXgL,EAAI4B,IAAc/8E,KAAKmQ,KAAuD,IAAlDnQ,KAAK4H,IAAI,EAAG5H,KAAKqQ,IAAI,GAAIrQ,KAAK6V,IAAIkgE,EAAIhuE,WAAoB,GAAKozE,EAAI4B,IAAM/B,EAAKC,GAAOhF,IA8HrK+G,EAAS,SAAU9rE,EAAG1O,EAAGQ,GACzB,KAAOA,IAAKR,EACR0O,EAAE1O,GAAKQ,EAAGA,KAAO,GAGrBi6E,EAAM,SAAU15E,EAAGmI,GACnB,IAAIiI,EAAKjI,EAAEwxE,SAIX,GAHA35E,EAAE,GAAK,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,EAAGA,EAAE,GAAKmI,EAAEykE,MAAQ,EAAI,EAAe,GAAXzkE,EAAEykE,MAAa,EAAI,EAAG5sE,EAAE,GAAK,EACxE,GAAXmI,EAAEyxE,OACFH,EAAOz5E,EAAG,EAAGvD,KAAKoQ,MAAM,IAAI4b,KAAKtgB,EAAEyxE,OAASnxD,KAAKC,OAAS,MAC1DtY,EAAI,CACJpQ,EAAE,GAAK,EACP,IAAK,IAAIsE,EAAI,EAAGA,GAAK8L,EAAG5L,SAAUF,EAC9BtE,EAAEsE,EAAI,IAAM8L,EAAGypE,WAAWv1E,KAKlCw1E,EAAM,SAAUnsE,GACJ,IAARA,EAAE,IAAoB,KAARA,EAAE,IAAqB,GAARA,EAAE,IAC/B2V,EAAI,EAAG,qBACX,IAAIy2D,EAAMpsE,EAAE,GACR+kE,EAAK,GACC,EAANqH,IACArH,GAAM/kE,EAAE,IAAqB,GAAdA,EAAE,KAAO,IAC5B,IAAK,IAAIqsE,GAAMD,GAAO,EAAI,IAAMA,GAAO,EAAI,GAAIC,EAAK,EAAGA,IAAOrsE,EAAE+kE,MAEhE,OAAOA,GAAY,EAANqH,IAGbE,EAAM,SAAUtsE,GAChB,IAAI2C,EAAI3C,EAAEnJ,OACV,OAASmJ,EAAE2C,EAAI,GAAK3C,EAAE2C,EAAI,IAAM,EAAI3C,EAAE2C,EAAI,IAAM,GAAO3C,EAAE2C,EAAI,IAAM,MAAS,GAG5E4pE,EAAO,SAAU/xE,GAAK,OAAO,IAAOA,EAAEwxE,UAAaxxE,EAAEwxE,SAASn1E,OAAS,GAAO,IAqO3E,SAAS21E,EAAS3yC,EAAM4yC,GACtBA,IACDA,EAAO,IACX,IAAIp6E,EAAIq5E,IAAO/oE,EAAIk3B,EAAKhjC,OACxBxE,EAAEqP,EAAEm4B,GACJ,IAAI75B,EAAI4rE,EAAK/xC,EAAM4yC,EAAMF,EAAKE,GAAO,GAAIt6E,EAAI6N,EAAEnJ,OAC/C,OAAOk1E,EAAI/rE,EAAGysE,GAAOX,EAAO9rE,EAAG7N,EAAI,EAAGE,EAAE2N,KAAM8rE,EAAO9rE,EAAG7N,EAAI,EAAGwQ,GAAI3C,EA8EhE,SAAS0sE,GAAW7yC,EAAM3qC,GAC7B,OAAO01E,EAAM/qC,EAAKyqC,SAAS6H,EAAItyC,IAAQ,GAAI3qC,GAAO,IAAIizE,EAAGmK,EAAIzyC,KA4PjE,IAcI8yC,GAA2B,oBAAfC,aAA4C,IAAIA,YAGhE,IACID,GAAGlmD,OAAOjiB,EAAI,CAAEqoE,QAAQ,IAClB,EAEV,MAAO5mD,KAu2B2B,mBAAlB6mD,eAA+BA,eAAsC,mBAAdruD,YAA2BA,Y,6BC12ElG,+GAOWsuD,EAAwB,WACjC,SAASA,EAAStvB,GAChBt1C,KAAK0O,QAAUnP,YAAS,GAAI+1C,EAAOuvB,eAAgBvvB,EAAO5mC,SAC1D1O,KAAK8kE,WAAaxvB,EAAOwvB,WACzB9kE,KAAK+kE,cAAgBzvB,EAAOyvB,cAC5B/kE,KAAKglE,UAAY,GACjBhlE,KAAK0U,MAAQ4gC,EAAO5gC,OAASuwD,IAG/B,IAAIlgD,EAAS6/C,EAAShlE,UAoJtB,OAlJAmlB,EAAOukB,SAAW,SAAkB50B,GAClC1U,KAAKklE,SAAS,CACZr/C,KAAM,WACNnR,MAAOA,KAIXqQ,EAAOogD,YAAc,SAAqBC,IACE,IAAtCplE,KAAKglE,UAAU54D,QAAQg5D,IACzBplE,KAAKglE,UAAUjlD,KAAKqlD,IAIxBrgD,EAAOsgD,eAAiB,SAAwBD,GAC9CplE,KAAKglE,UAAYhlE,KAAKglE,UAAUjmD,QAAO,SAAUn1B,GAC/C,OAAOA,IAAMw7E,MAIjBrgD,EAAOiwB,OAAS,WACd,OAAIh1C,KAAKslE,SACPtlE,KAAKslE,QAAQtwB,SACNh1C,KAAKslE,QAAQrvB,QAAQ7oC,KAAK8E,KAAMuE,MAAMvE,MAGxC/E,QAAQR,WAGjBoY,EAAO8wB,SAAW,WAChB,OAAI71C,KAAKslE,SACPtlE,KAAKslE,QAAQzvB,WACN71C,KAAKslE,QAAQrvB,SAGfj2C,KAAKulE,WAGdxgD,EAAOwgD,QAAU,WACf,IAEI7zC,EAFAvM,EAAQnlB,KAGRwlE,EAAiC,YAAtBxlE,KAAK0U,MAAMC,OACtBshC,EAAU9oC,QAAQR,UAoBtB,OAlBK64D,IACHxlE,KAAKklE,SAAS,CACZr/C,KAAM,UACN4/C,UAAWzlE,KAAK0O,QAAQ+2D,YAE1BxvB,EAAUA,EAAQ7oC,MAAK,WACrB,OAAiC,MAA1B+X,EAAMzW,QAAQg3D,cAAmB,EAASvgD,EAAMzW,QAAQg3D,SAASvgD,EAAMzQ,MAAM+wD,cACnFr4D,MAAK,SAAUsb,GACZA,IAAYvD,EAAMzQ,MAAMgU,SAC1BvD,EAAM+/C,SAAS,CACbr/C,KAAM,UACN6C,QAASA,EACT+8C,UAAWtgD,EAAMzQ,MAAM+wD,gBAMxBxvB,EAAQ7oC,MAAK,WAClB,OAAO+X,EAAMwgD,qBACZv4D,MAAK,SAAUpH,GAChB0rB,EAAO1rB,KACNoH,MAAK,WACN,OAAkC,MAA3B+X,EAAMzW,QAAQ0nC,eAAoB,EAASjxB,EAAMzW,QAAQ0nC,UAAU1kB,EAAMvM,EAAMzQ,MAAM+wD,UAAWtgD,EAAMzQ,MAAMgU,YAClHtb,MAAK,WACN,OAAkC,MAA3B+X,EAAMzW,QAAQk3D,eAAoB,EAASzgD,EAAMzW,QAAQk3D,UAAUl0C,EAAM,KAAMvM,EAAMzQ,MAAM+wD,UAAWtgD,EAAMzQ,MAAMgU,YACxHtb,MAAK,WAMN,OALA+X,EAAM+/C,SAAS,CACbr/C,KAAM,UACN6L,KAAMA,IAGDA,KACNjb,OAAM,SAAUxJ,GAQjB,OANIkY,EAAM4/C,cAAczvB,OAAOe,SAC7BlxB,EAAM4/C,cAAczvB,OAAOe,QAAQppC,EAAOkY,EAAMzQ,MAAM+wD,UAAWtgD,EAAMzQ,MAAMgU,QAASvD,GAIxFg/B,cAAYl3C,MAAMA,GACXE,QAAQR,UAAUS,MAAK,WAC5B,OAAgC,MAAzB+X,EAAMzW,QAAQ2nC,aAAkB,EAASlxB,EAAMzW,QAAQ2nC,QAAQppC,EAAOkY,EAAMzQ,MAAM+wD,UAAWtgD,EAAMzQ,MAAMgU,YAC/Gtb,MAAK,WACN,OAAkC,MAA3B+X,EAAMzW,QAAQk3D,eAAoB,EAASzgD,EAAMzW,QAAQk3D,eAAUn4D,EAAWR,EAAOkY,EAAMzQ,MAAM+wD,UAAWtgD,EAAMzQ,MAAMgU,YAC9Htb,MAAK,WAMN,MALA+X,EAAM+/C,SAAS,CACbr/C,KAAM,QACN5Y,MAAOA,IAGHA,SAKZ8X,EAAO4gD,gBAAkB,WACvB,IACIE,EADAxgD,EAASrlB,KA6Bb,OA1BAA,KAAKslE,QAAU,IAAIjwB,IAAQ,CACzB/6C,GAAI,WACF,OAAK+qB,EAAO3W,QAAQ4E,WAIb+R,EAAO3W,QAAQ4E,WAAW+R,EAAO3Q,MAAM+wD,WAHrCt4D,QAAQP,OAAO,wBAK1BmqC,OAAQ,WACN1xB,EAAO6/C,SAAS,CACdr/C,KAAM,YAGVwxB,QAAS,WACPhyB,EAAO6/C,SAAS,CACdr/C,KAAM,WAGVyxB,WAAY,WACVjyB,EAAO6/C,SAAS,CACdr/C,KAAM,cAGV8wB,MAAqD,OAA7CkvB,EAAsB7lE,KAAK0O,QAAQioC,OAAiBkvB,EAAsB,EAClFjvB,WAAY52C,KAAK0O,QAAQkoC,aAEpB52C,KAAKslE,QAAQrvB,SAGtBlxB,EAAOmgD,SAAW,SAAkBz9B,GAClC,IAAIjiB,EAASxlB,KAEbA,KAAK0U,MAwBT,SAAiBA,EAAO+yB,GACtB,OAAQA,EAAO5hB,MACb,IAAK,SACH,OAAOtmB,YAAS,GAAImV,EAAO,CACzBogC,aAAcpgC,EAAMogC,aAAe,IAGvC,IAAK,QACH,OAAOv1C,YAAS,GAAImV,EAAO,CACzBohC,UAAU,IAGd,IAAK,WACH,OAAOv2C,YAAS,GAAImV,EAAO,CACzBohC,UAAU,IAGd,IAAK,UACH,OAAOv2C,YAAS,GAAImV,EAAO,CACzBgU,QAAS+e,EAAO/e,QAChBgJ,UAAMjkB,EACNR,MAAO,KACP6oC,UAAU,EACVnhC,OAAQ,UACR8wD,UAAWh+B,EAAOg+B,YAGtB,IAAK,UACH,OAAOlmE,YAAS,GAAImV,EAAO,CACzBgd,KAAM+V,EAAO/V,KACbzkB,MAAO,KACP0H,OAAQ,UACRmhC,UAAU,IAGd,IAAK,QACH,OAAOv2C,YAAS,GAAImV,EAAO,CACzBgd,UAAMjkB,EACNR,MAAOw6B,EAAOx6B,MACd6nC,aAAcpgC,EAAMogC,aAAe,EACnCgB,UAAU,EACVnhC,OAAQ,UAGZ,IAAK,WACH,OAAOpV,YAAS,GAAImV,EAAO+yB,EAAO/yB,OAEpC,QACE,OAAOA,GAxEIoxD,CAAQ9lE,KAAK0U,MAAO+yB,GACjChjB,IAAcO,OAAM,WAClBQ,EAAOw/C,UAAU/qE,SAAQ,SAAUmrE,GACjCA,EAASW,iBAAiBt+B,MAG5BjiB,EAAOu/C,cAAciB,OAAOxgD,OAIzBo/C,EA7J0B,GA+J5B,SAASK,IACd,MAAO,CACLv8C,aAASjb,EACTikB,UAAMjkB,EACNR,MAAO,KACP6nC,aAAc,EACdgB,UAAU,EACVnhC,OAAQ,OACR8wD,eAAWh4D,K,6BC9Kf,wFACIw4D,EAA8B32D,IAAMqZ,mBAAclb,GAClDy4D,EAAyC52D,IAAMqZ,eAAc,GAOjE,SAASw9C,EAAsBC,GAC7B,OAAIA,GAAoC,qBAAXn0D,QACtBA,OAAOo0D,0BACVp0D,OAAOo0D,wBAA0BJ,GAG5Bh0D,OAAOo0D,yBAGTJ,EAGF,IAAIK,EAAiB,WAC1B,IAAIC,EAAcj3D,IAAMqc,WAAWw6C,EAAsB72D,IAAMqc,WAAWu6C,KAE1E,IAAKK,EACH,MAAM,IAAI7jD,MAAM,0DAGlB,OAAO6jD,GAEEC,EAAsB,SAA6BxhC,GAC5D,IAAIyhC,EAASzhC,EAAKyhC,OACdC,EAAsB1hC,EAAKohC,eAC3BA,OAAyC,IAAxBM,GAAyCA,EAC1D58C,EAAWkb,EAAKlb,SACpBxa,IAAMo3C,WAAU,WAEd,OADA+f,EAAOE,QACA,WACLF,EAAOG,aAER,CAACH,IACJ,IAAII,EAAUV,EAAsBC,GACpC,OAAoB92D,IAAMW,cAAci2D,EAA0BY,SAAU,CAC1E95D,MAAOo5D,GACO92D,IAAMW,cAAc42D,EAAQC,SAAU,CACpD95D,MAAOy5D,GACN38C,M,6BC5CU,SAASi9C,IACtB,IAAIC,EAAY3+C,SAASpY,cAAc,OACvC+2D,EAAUtwC,MAAMjqC,MAAQ,OACxBu6E,EAAUtwC,MAAMhqC,OAAS,OACzBs6E,EAAUtwC,MAAM8mB,SAAW,WAC3BwpB,EAAUtwC,MAAMpjC,IAAM,UACtB0zE,EAAUtwC,MAAM+mB,SAAW,SAC3Bp1B,SAAS4+C,KAAKC,YAAYF,GAC1B,IAAIG,EAAgBH,EAAUI,YAAcJ,EAAUK,YAEtD,OADAh/C,SAAS4+C,KAAKK,YAAYN,GACnBG,EAZT,mC,6BCAe,SAAS9iD,EAAQzG,GAa9B,OATEyG,EADoB,oBAAX/E,QAAoD,kBAApBA,OAAOC,SACtC,SAAiB3B,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAX0B,QAAyB1B,EAAI3H,cAAgBqJ,QAAU1B,IAAQ0B,OAAO1f,UAAY,gBAAkBge,IAI9GA,GAbjB,mC,6BCAe,SAAS2pD,IACtB,GAAuB,qBAAZt/C,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUs/C,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA90D,KAAK/S,UAAUuW,SAASrW,KAAKmoB,QAAQC,UAAUvV,KAAM,IAAI,iBAClD,EACP,MAAOmL,GACP,OAAO,GATX,mC,6BCAe,SAASi3C,EAAuBznD,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI0nD,eAAe,6DAG3B,OAAO1nD,EALT,mC,stCCMO,SAASo6D,EAAch2C,GAO5B,GALItJ,kBAEFsJ,EAAOtJ,gBAAPsJ,IAGEA,aAAJ,YACE,SAIF,GAAIi2C,mBAAJ,GACE,OAAOj2C,EAAP,OAGF,qBAAWA,EAAmB,CAC5B,IAAM0sB,EAAN,EAEA,OADmB,IAAIwpB,aAAcC,OAArC,GACA,OAIF,OAAIn2C,cAAQ,gBAA4BA,EAAxC,eACSA,EAAP,iBAGKof,aAAP,GAIK,SAASg3B,EAAoBC,EAAcC,EAAcC,GAE9D,GADAA,EAAaA,GAAcF,EAA3BE,WACIF,gBAAwCC,aAA5C,EACE,SAIF,IAFA,IAAME,EAAS,IAAIjO,WAAnB,GACMkO,EAAS,IAAIlO,WAAnB,GACSzrE,EAAT,EAAgBA,EAAI05E,EAApB,WACE,GAAIA,OAAcC,EAAlB35E,GACE,SAGJ,SAKK,SAAS45E,IAAoC,2BAATC,EAAS,yBAATA,EAAS,gBAElD,IAFkD,EAE5CC,EAAeD,EAAA,KACnB,SAAAE,GAAO,OAAKA,yBAAiC,IAAItO,WAArCsO,GAAL,KAIHN,EAAaK,EAAA,QAAoB,qBAAwB55E,EAAS85E,EAAjC,aAAvC,GAGMxiE,EAAS,IAAIi0D,WAAnB,GAGI7/D,EAAJ,EAbkD,WAclD,2BAAwC,KAA7BquE,EAA6B,QACtCziE,WACA5L,GAAUquE,EAAVruE,YAhBgD,8BAoBlD,OAAO4L,EAAP,OAIK,SAAS0iE,EAAiBC,EAAaC,EAAYX,GACxD,IAAMY,OACJZ,MACI,IAAIhO,WAAW0O,GAAaxM,SAASyM,EAAYA,EADrDX,GAEI,IAAIhO,WAAW0O,GAAaxM,SAHlC,GAKA,OADkB,IAAIlC,WAAtB,GACA,S,6BCpFF,kFAkCI6O,EAA0Bx5D,cAAiB,SAAoBvB,EAAOyB,GACxE,IAAIu5D,EAAYh7D,EAAMg7D,UAClBC,EAAcj7D,EAAMk7D,QACpBC,EAAcn7D,EAAMm7D,YACpBz5D,EAAU1B,EAAM0B,QAChB6mB,EAAYvoB,EAAMuoB,UAClB6yC,EAAiBp7D,EAAMo7D,eACvBC,EAAer7D,EAAMsiC,SACrBg5B,EAAOt7D,EAAMs7D,KACb5S,EAAK1oD,EAAM0oD,GACX6S,EAAav7D,EAAMu7D,WACnBC,EAAWx7D,EAAMw7D,SACjBx6D,EAAOhB,EAAMgB,KACby6D,EAASz7D,EAAMy7D,OACfC,EAAW17D,EAAM07D,SACjB5mB,EAAU90C,EAAM80C,QAChBzC,EAAWryC,EAAMqyC,SACjBspB,EAAW37D,EAAM27D,SACjBC,EAAW57D,EAAM47D,SACjB9jD,EAAO9X,EAAM8X,KACb7Y,EAAQe,EAAMf,MACd4C,EAAQ5D,YAAyB+B,EAAO,CAAC,YAAa,UAAW,cAAe,UAAW,YAAa,iBAAkB,WAAY,OAAQ,KAAM,aAAc,WAAY,OAAQ,SAAU,WAAY,UAAW,WAAY,WAAY,WAAY,OAAQ,UAEnQ67D,EAAiBj8B,YAAc,CACjCC,WAAYo7B,EACZl7B,QAAS+7B,QAAQV,GACjBp6D,KAAM,aACN2F,MAAO,YAELo1D,EAAkBzqD,YAAeuqD,EAAgB,GACjDX,EAAUa,EAAgB,GAC1BC,EAAkBD,EAAgB,GAElC5kC,EAAiBhB,cAgCjBmM,EAAW+4B,EAEXlkC,GACsB,qBAAbmL,IACTA,EAAWnL,EAAemL,UAI9B,IAAI25B,EAAuB,aAATnkD,GAAgC,UAATA,EACzC,OAAoBvW,gBAAoB26D,IAAY1qE,YAAS,CAC3DsrB,UAAW,OACXyL,UAAWuY,YAAKp/B,EAAQq/B,KAAMxY,EAAW2yC,GAAWx5D,EAAQw5D,QAAS54B,GAAY5gC,EAAQ4gC,UACzFA,SAAUA,EACVs5B,SAAU,KACV36B,UAAMvhC,EACNo1C,QA7CgB,SAAqBjtB,GACjCitB,GACFA,EAAQjtB,GAGNsP,GAAkBA,EAAe2d,SACnC3d,EAAe2d,QAAQjtB,IAwCzB4zC,OApCe,SAAoB5zC,GAC/B4zC,GACFA,EAAO5zC,GAGLsP,GAAkBA,EAAeskC,QACnCtkC,EAAeskC,OAAO5zC,IA+BxBpmB,IAAKA,GACJI,GAAqBN,gBAAoB,QAAS/P,YAAS,CAC5DwpE,UAAWA,EACXE,QAASD,EACTG,eAAgBA,EAChB7yC,UAAW7mB,EAAQ4C,MACnBg+B,SAAUA,EACVomB,GAAIuT,GAAevT,EACnB1nD,KAAMA,EACN06D,SApCsB,SAA2B7zC,GACjD,IAAIs0C,EAAat0C,EAAMv/B,OAAO4yE,QAC9Bc,EAAgBG,GAEZT,GAEFA,EAAS7zC,EAAOs0C,IA+BlB9pB,SAAUA,EACV5wC,IAAK+5D,EACLG,SAAUA,EACVC,SAAUA,EACV9jD,KAAMA,EACN7Y,MAAOA,GACNs8D,IAAcL,EAAUC,EAAcG,MA8G5B76D,gBAvOK,CAClBsgC,KAAM,CACJq7B,QAAS,GAEXlB,QAAS,GACT54B,SAAU,GACVh+B,MAAO,CACL+3D,OAAQ,UACR5sB,SAAU,WACV6sB,QAAS,EACT59E,MAAO,OACPC,OAAQ,OACR4G,IAAK,EACLH,KAAM,EACNgqD,OAAQ,EACRgtB,QAAS,EACT3Q,OAAQ,IAuNsB,CAChCzqD,KAAM,qBADOP,CAEZs6D,I,iGClPY,SAAS,EAAWwB,EAAQ/8D,EAAMg9D,GAc/C,OAZE,EADE,OAAAC,EAAA,KACWviD,QAAQC,UAER,SAAoBoiD,EAAQ/8D,EAAMg9D,GAC7C,IAAIrjF,EAAI,CAAC,MACTA,EAAE64B,KAAKhgB,MAAM7Y,EAAGqmB,GAChB,IACII,EAAW,IADGyoD,SAAShkC,KAAKryB,MAAMuqE,EAAQpjF,IAG9C,OADIqjF,GAAO,OAAA9wD,EAAA,GAAe9L,EAAU48D,EAAM3qE,WACnC+N,IAIO5N,MAAM,KAAMtR,WCZjB,SAAS,EAAiB87E,GACvC,IAAIE,EAAwB,oBAAR9yB,IAAqB,IAAIA,SAAQlqC,EA8BrD,OA5BA,EAAmB,SAA0B88D,GAC3C,GAAc,OAAVA,ICRkCjwE,EDQEiwE,GCPsB,IAAzDnU,SAASjgD,SAASrW,KAAKxF,GAAI8R,QAAQ,kBDOQ,OAAOm+D,ECR5C,IAA2BjwE,EDUtC,GAAqB,oBAAViwE,EACT,MAAM,IAAI18D,UAAU,sDAGtB,GAAsB,qBAAX48D,EAAwB,CACjC,GAAIA,EAAOt+C,IAAIo+C,GAAQ,OAAOE,EAAOr+C,IAAIm+C,GAEzCE,EAAO1iF,IAAIwiF,EAAOG,GAGpB,SAASA,IACP,OAAO,EAAUH,EAAO97E,UAAW,OAAAg/C,EAAA,GAAeztC,MAAMiW,aAW1D,OARAy0D,EAAQ9qE,UAAYJ,OAAO1Y,OAAOyjF,EAAM3qE,UAAW,CACjDqW,YAAa,CACXjJ,MAAO09D,EACPz8D,YAAY,EACZE,UAAU,EACVD,cAAc,KAGX,OAAAuL,EAAA,GAAeixD,EAASH,KAGTA,K,6BEnBXI,IAhBJ,CACTC,GAAI,UACJC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,Y,+BCNR,IAAIv/D,EAAwB1M,OAAO0M,sBAC/BrM,EAAiBL,OAAOI,UAAUC,eAClC6rE,EAAmBlsE,OAAOI,UAAUyM,qBAExC,SAASs/D,EAAS12D,GACjB,GAAY,OAARA,QAAwBxH,IAARwH,EACnB,MAAM,IAAIpH,UAAU,yDAGrB,OAAOrO,OAAOyV,GA+Cf7V,EAAOC,QA5CP,WACC,IACC,IAAKG,OAAOC,OACX,OAAO,EAMR,IAAImsE,EAAQ,IAAI1hB,OAAO,OAEvB,GADA0hB,EAAM,GAAK,KACkC,MAAzCpsE,OAAOmtD,oBAAoBif,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHr9E,EAAI,EAAGA,EAAI,GAAIA,IACvBq9E,EAAM,IAAM3hB,OAAO4hB,aAAat9E,IAAMA,EAKvC,GAAwB,eAHXgR,OAAOmtD,oBAAoBkf,GAAOltD,KAAI,SAAU1X,GAC5D,OAAO4kE,EAAM5kE,MAEHkf,KAAK,IACf,OAAO,EAIR,IAAI4lD,EAAQ,GAIZ,MAHA,uBAAuBzxD,MAAM,IAAIrgB,SAAQ,SAAU+xE,GAClDD,EAAMC,GAAUA,KAGf,yBADExsE,OAAO2V,KAAK3V,OAAOC,OAAO,GAAIssE,IAAQ5lD,KAAK,IAM9C,MAAO3Y,GAER,OAAO,GAIQy+D,GAAoBzsE,OAAOC,OAAS,SAAUpJ,EAAQqJ,GAKtE,IAJA,IAAI+lC,EAEA1hB,EADAoR,EAAKw2C,EAASt1E,GAGTrM,EAAI,EAAGA,EAAIyE,UAAUC,OAAQ1E,IAAK,CAG1C,IAAK,IAAI2V,KAFT8lC,EAAOjmC,OAAO/Q,UAAUzE,IAGnB6V,EAAeC,KAAK2lC,EAAM9lC,KAC7Bw1B,EAAGx1B,GAAO8lC,EAAK9lC,IAIjB,GAAIuM,EAAuB,CAC1B6X,EAAU7X,EAAsBu5B,GAChC,IAAK,IAAIj3C,EAAI,EAAGA,EAAIu1B,EAAQr1B,OAAQF,IAC/Bk9E,EAAiB5rE,KAAK2lC,EAAM1hB,EAAQv1B,MACvC2mC,EAAGpR,EAAQv1B,IAAMi3C,EAAK1hB,EAAQv1B,MAMlC,OAAO2mC,I,6BCxFO,SAAS+2C,EAAmBC,GAEvC,OAAO,WACL,OAAO,MAHb,mC,6BCGE/sE,EAAOC,QAAUC,EAAQ,M,6BCH3B,wDAEe,SAAS8sE,EAA2B9+D,EAAMxN,GACvD,OAAIA,GAA2B,WAAlB,YAAQA,IAAsC,oBAATA,EAI3C,YAAsBwN,GAHpBxN,I,mFCJLusE,E,WACF,aAAc,oBACVrsE,KAAKssE,SAAW,IAChBtsE,KAAKusE,SAAW,GAChBvsE,KAAKwsE,YAAc,GAEnB,IAAK,IAAIh+E,EAAI,EAAGA,EAAIwR,KAAKssE,SAAU99E,IAC/BwR,KAAKusE,SAASxsD,MAAK,GACnB/f,KAAKwsE,YAAYzsD,MAAK,G,yCAI9B,WACI,IAAK,IAAIvxB,EAAI,EAAGA,EAAIwR,KAAKssE,SAAU99E,IAC/BwR,KAAKusE,SAAS/9E,IAAK,EACnBwR,KAAKwsE,YAAYh+E,IAAK,I,qBAI9B,SAAQi+E,GACJzsE,KAAKusE,SAASE,IAAY,I,mBAG9B,SAAMA,GACCzsE,KAAKusE,SAASE,KAEbzsE,KAAKwsE,YAAYC,IAAY,GAEjCzsE,KAAKusE,SAASE,IAAY,I,oBAG9B,SAAO9sE,GACH,OAAOK,KAAKusE,SAAS5sE,K,uBAGzB,SAAUA,GACN,IAAMhW,EAAIqW,KAAKwsE,YAAY7sE,GAE3B,OADAK,KAAKwsE,YAAY7sE,IAAO,EACjBhW,M,yFCIT+iF,E,WACF,aAAc,oBACV1sE,KAAKm3B,OAAS,EACdn3B,KAAKo3B,QAAU,EAEfp3B,KAAK2sE,SAAU,EAEf3sE,KAAKgwD,SAAW,EAChBhwD,KAAKiwD,SAAW,EAChBjwD,KAAKkwD,SAAW,EAChBlwD,KAAKmwD,SAAW,EAEhBnwD,KAAKowD,OAAS,EACdpwD,KAAKqwD,OAAS,EAEdrwD,KAAK4sE,QAAU,EACf5sE,KAAK6sE,QAAU,EAEf7sE,KAAK2wD,OAAS,EACd3wD,KAAK4wD,OAAS,EAEd5wD,KAAK8sE,SAAU,E,0CAGnB,WACI,OAAO9sE,KAAK2sE,U,uBAGhB,WACI,OAAO3sE,KAAK4sE,U,uBAEhB,WACI,OAAO5sE,KAAK6sE,U,sBAGhB,WACI,OAAO7sE,KAAK2wD,S,sBAEhB,WACI,OAAO3wD,KAAK4wD,S,6BAGhB,WACI5wD,KAAKilB,QACLjlB,KAAKgwD,SAAW,EAChBhwD,KAAKiwD,SAAW,EAChBjwD,KAAKkwD,SAAW,EAChBlwD,KAAKmwD,SAAW,EAChBnwD,KAAKowD,OAAS,EACdpwD,KAAKqwD,OAAS,EACdrwD,KAAK4sE,QAAU,EACf5sE,KAAK6sE,QAAU,EAEf7sE,KAAK2wD,OAAS,EACd3wD,KAAK4wD,OAAS,EACd5wD,KAAK2sE,SAAU,EACf3sE,KAAK+sE,eAAgB,I,mBAGzB,WACI/sE,KAAK4sE,QAAU,EACf5sE,KAAK6sE,QAAU,I,0BAGnB,SAAaj3C,GACT51B,KAAK2sE,SAAU,EACf3sE,KAAK+sE,eAAgB,EACrB7mE,QAAQ1J,IAAI,cACZo5B,EAAMo3C,mB,wBAGV,SAAWp3C,GACP51B,KAAK2sE,SAAU,EACfzmE,QAAQ1J,IAAI,YACZo5B,EAAMo3C,mB,2BAGV,SAAcp3C,GACNA,EAAMq3C,QAAQv+E,OAAS,IACvBknC,EAAMo3C,iBACNp3C,EAAMs3C,4BAEVltE,KAAK2sE,SAAU,EACf/2C,EAAMo3C,mB,yBAGV,SAAYp3C,GACR,IAAIu3C,EAAWv3C,EAAMw3C,eAAe,GACpCptE,KAAKgwD,SAAWmd,EAAStc,QACzB7wD,KAAKiwD,SAAWkd,EAASrc,QACzB9wD,KAAKkwD,SAAWid,EAASE,QACzBrtE,KAAKmwD,SAAWgd,EAASG,QAGzB,IAAIrc,EAAOkc,EAAS92E,OAAO66D,wBAC3BlxD,KAAKm3B,OAAS85B,EAAK79D,MAAQ69D,EAAK99D,KAChC6M,KAAKo3B,QAAU65B,EAAK59D,OAAS49D,EAAK39D,IAE9B0M,KAAK8sE,UACD9sE,KAAK+sE,gBACL/sE,KAAKowD,OAASpwD,KAAKkwD,SACnBlwD,KAAKqwD,OAASrwD,KAAKmwD,SACnBnwD,KAAK+sE,eAAgB,EAErB7mE,QAAQ1J,IAAI,SAAWwD,KAAK4sE,QAAU,IAAM5sE,KAAK6sE,UAErD7sE,KAAK4sE,SAAW5sE,KAAKkwD,SAAWlwD,KAAKowD,QAAUpwD,KAAKm3B,OACpDn3B,KAAK6sE,SAAW7sE,KAAKmwD,SAAWnwD,KAAKqwD,QAAUrwD,KAAKo3B,SAKpDp3B,KAAKkwD,UAAYe,EAAK99D,MACtB6M,KAAKkwD,SAAWe,EAAK79D,OACrB4M,KAAKmwD,UAAYc,EAAK39D,KACtB0M,KAAKmwD,SAAWc,EAAK59D,QAErB2M,KAAKowD,OAASpwD,KAAKkwD,SACnBlwD,KAAKqwD,OAASrwD,KAAKmwD,SACnBnwD,KAAK8sE,SAAU,EACf9sE,KAAK2wD,OAAS3wD,KAAKkwD,UAAYe,EAAK79D,MAAQ69D,EAAK99D,MACjD6M,KAAK4wD,OAAS,EAAM5wD,KAAKmwD,UAAYc,EAAK59D,OAAS49D,EAAK39D,MAExD0M,KAAK8sE,SAAU,EAEnBl3C,EAAMo3C,qB,oCCvKd,yDAKIO,EAAwB,WACxBC,EAAuC,qBAAfC,WAA6BA,WAA+B,qBAAXx7D,OAAyBA,OAA2B,qBAAX83C,EAAyBA,EAAS,GAexJ,SAAS2jB,EAAmB1gE,GAC1B,IAAI2gE,EAAW,GACf,MAAO,CACLC,GAAI,SAAYC,GACdF,EAAS5tD,KAAK8tD,IAEhBC,IAAK,SAAaD,GAChBF,EAAWA,EAAS5uD,QAAO,SAAUkI,GACnC,OAAOA,IAAM4mD,MAGjBzhD,IAAK,WACH,OAAOpf,GAETjlB,IAAK,SAAaomD,EAAU4/B,GAC1B/gE,EAAQmhC,EACRw/B,EAAS1zE,SAAQ,SAAU4zE,GACzB,OAAOA,EAAQ7gE,EAAO+gE,QAuI9B,IAAIpnE,EAAQ2I,IAAMqZ,eA7HlB,SAA4B+hC,EAAcsjB,GACxC,IAAIC,EAAuBC,EAEvBC,EAAc,0BA3CpB,WACE,IAAIxuE,EAAM,uBACV,OAAO6tE,EAAe7tE,IAAQ6tE,EAAe7tE,IAAQ,GAAK,EAyCZyuE,GAAgB,KAE1DtH,EAAwB,SAAUuH,GAGpC,SAASvH,IACP,IAAI3hD,EAIJ,OAFAA,EAAQkpD,EAAWtuE,MAAMC,KAAMvR,YAAcuR,MACvCsuE,QAAUZ,EAAmBvoD,EAAMpX,MAAMf,OACxCmY,EAPTb,YAAewiD,EAAUuH,GAUzB,IAAItpD,EAAS+hD,EAASlnE,UAoCtB,OAlCAmlB,EAAOwpD,gBAAkB,WACvB,IAAIvpC,EAEJ,OAAOA,EAAO,IAASmpC,GAAenuE,KAAKsuE,QAAStpC,GAGtDjgB,EAAOypD,0BAA4B,SAAmCC,GACpE,GAAIzuE,KAAK+N,MAAMf,QAAUyhE,EAAUzhE,MAAO,CACxC,IAEI+gE,EAFAW,EAAW1uE,KAAK+N,MAAMf,MACtBmhC,EAAWsgC,EAAUzhE,QA9DfpjB,EAiEG8kF,MAjEA7kF,EAiEUskD,GA/Dd,IAANvkD,GAAW,EAAIA,IAAM,EAAIC,EAEzBD,IAAMA,GAAKC,IAAMA,GA8DlBkkF,EAAc,GAEdA,EAA8C,oBAAzBC,EAAsCA,EAAqBU,EAAUvgC,GAAYo/B,EAQlF,KAFpBQ,GAAe,IAGb/tE,KAAKsuE,QAAQvmF,IAAI0mF,EAAUzhE,MAAO+gE,IA7E9C,IAAkBnkF,EAAGC,GAmFjBk7B,EAAO0E,OAAS,WACd,OAAOzpB,KAAK+N,MAAM+b,UAGbg9C,EA/CmB,CAgD1Bn4D,aAEFm4D,EAAStb,oBAAqByiB,EAAwB,IAA0BE,GAAeQ,IAAU9qD,OAAO+qD,WAAYX,GAE5H,IAAI3nB,EAAwB,SAAUuoB,GAGpC,SAASvoB,IACP,IAAIjhC,EAiBJ,OAfAA,EAASwpD,EAAY9uE,MAAMC,KAAMvR,YAAcuR,MACxC0U,MAAQ,CACb1H,MAAOqY,EAAOypD,YAGhBzpD,EAAO0pD,SAAW,SAAU5gC,EAAU4/B,GAGC,MAFI,EAAtB1oD,EAAO2pD,cAENjB,IAClB1oD,EAAOikB,SAAS,CACdt8B,MAAOqY,EAAOypD,cAKbzpD,EApBTf,YAAegiC,EAAUuoB,GAuBzB,IAAII,EAAU3oB,EAAS1mD,UAkCvB,OAhCAqvE,EAAQT,0BAA4B,SAAmCC,GACrE,IAAIO,EAAeP,EAAUO,aAC7BhvE,KAAKgvE,kBAAgCvhE,IAAjBuhE,GAA+C,OAAjBA,EAAwBzB,EAAwByB,GAGpGC,EAAQ5lD,kBAAoB,WACtBrpB,KAAK0oB,QAAQylD,IACfnuE,KAAK0oB,QAAQylD,GAAaP,GAAG5tE,KAAK+uE,UAGpC,IAAIC,EAAehvE,KAAK+N,MAAMihE,aAC9BhvE,KAAKgvE,kBAAgCvhE,IAAjBuhE,GAA+C,OAAjBA,EAAwBzB,EAAwByB,GAGpGC,EAAQ1lD,qBAAuB,WACzBvpB,KAAK0oB,QAAQylD,IACfnuE,KAAK0oB,QAAQylD,GAAaL,IAAI9tE,KAAK+uE,WAIvCE,EAAQH,SAAW,WACjB,OAAI9uE,KAAK0oB,QAAQylD,GACRnuE,KAAK0oB,QAAQylD,GAAa/hD,MAE1Bs+B,GAIXukB,EAAQxlD,OAAS,WACf,OApHaK,EAoHI9pB,KAAK+N,MAAM+b,SAnHzBrjC,MAAM+lB,QAAQsd,GAAYA,EAAS,GAAKA,GAmHL9pB,KAAK0U,MAAM1H,OApHvD,IAAmB8c,GAuHRw8B,EA1DmB,CA2D1B33C,aAGF,OADA23C,EAASoF,eAAgBwiB,EAAwB,IAA0BC,GAAeQ,IAAU9qD,OAAQqqD,GACrG,CACLpH,SAAUA,EACVxgB,SAAUA,IAMC3/C,Q,mCC/Kf,IAAIuoE,EAAU5vE,EAAQ,KAKtBF,EAAOC,QAAUmrB,EACjBprB,EAAOC,QAAQwe,MAAQA,EACvBze,EAAOC,QAAQ8vE,QAsGf,SAAkBxiF,EAAK+hB,GACrB,OAAO0gE,EAAiBvxD,EAAMlxB,EAAK+hB,GAAUA,IAtG/CtP,EAAOC,QAAQ+vE,iBAAmBA,EAClChwE,EAAOC,QAAQgwE,eAAiBA,EAOhC,IAAIC,EAAc,IAAInwD,OAAO,CAG3B,UAOA,0GACAgH,KAAK,KAAM,KASb,SAAStI,EAAOlxB,EAAK+hB,GAQnB,IAPA,IAKInJ,EALAgqE,EAAS,GACT5vE,EAAM,EACNgH,EAAQ,EACRqiB,EAAO,GACPwmD,EAAmB9gE,GAAWA,EAAQ+gE,WAAa,IAGf,OAAhClqE,EAAM+pE,EAAYhyD,KAAK3wB,KAAe,CAC5C,IAAI8L,EAAI8M,EAAI,GACRmqE,EAAUnqE,EAAI,GACdnL,EAASmL,EAAIoB,MAKjB,GAJAqiB,GAAQr8B,EAAIm2B,MAAMnc,EAAOvM,GACzBuM,EAAQvM,EAAS3B,EAAE/J,OAGfghF,EACF1mD,GAAQ0mD,EAAQ,OADlB,CAKA,IAAI5vD,EAAOnzB,EAAIga,GACXy9B,EAAS7+B,EAAI,GACbwJ,EAAOxJ,EAAI,GACXoqE,EAAUpqE,EAAI,GACdqqE,EAAQrqE,EAAI,GACZsqE,EAAWtqE,EAAI,GACfuqE,EAAWvqE,EAAI,GAGfyjB,IACFumD,EAAOxvD,KAAKiJ,GACZA,EAAO,IAGT,IAAI+mD,EAAoB,MAAV3rC,GAA0B,MAARtkB,GAAgBA,IAASskB,EACrD4rC,EAAsB,MAAbH,GAAiC,MAAbA,EAC7BI,EAAwB,MAAbJ,GAAiC,MAAbA,EAC/BJ,EAAYlqE,EAAI,IAAMiqE,EACtBtwD,EAAUywD,GAAWC,EAEzBL,EAAOxvD,KAAK,CACVhR,KAAMA,GAAQpP,IACdykC,OAAQA,GAAU,GAClBqrC,UAAWA,EACXQ,SAAUA,EACVD,OAAQA,EACRD,QAASA,EACTD,WAAYA,EACZ5wD,QAASA,EAAUgxD,EAAYhxD,GAAY4wD,EAAW,KAAO,KAAOK,EAAaV,GAAa,SAclG,OATI9oE,EAAQha,EAAI+B,SACds6B,GAAQr8B,EAAIm5B,OAAOnf,IAIjBqiB,GACFumD,EAAOxvD,KAAKiJ,GAGPumD,EAoBT,SAASa,EAA0BzjF,GACjC,OAAO0jF,UAAU1jF,GAAK6xB,QAAQ,WAAW,SAAUt0B,GACjD,MAAO,IAAMA,EAAE65E,WAAW,GAAG5tD,SAAS,IAAI0M,iBAmB9C,SAASusD,EAAkBG,EAAQ7gE,GAKjC,IAHA,IAAI2O,EAAU,IAAI52B,MAAM8oF,EAAO7gF,QAGtBF,EAAI,EAAGA,EAAI+gF,EAAO7gF,OAAQF,IACR,kBAAd+gF,EAAO/gF,KAChB6uB,EAAQ7uB,GAAK,IAAI2wB,OAAO,OAASowD,EAAO/gF,GAAG0wB,QAAU,KAAMoxD,EAAM5hE,KAIrE,OAAO,SAAUkP,EAAK0mD,GAMpB,IALA,IAAIt7C,EAAO,GACP0I,EAAO9T,GAAO,GAEdiqD,GADUvD,GAAQ,IACDiM,OAASH,EAA2BI,mBAEhDhiF,EAAI,EAAGA,EAAI+gF,EAAO7gF,OAAQF,IAAK,CACtC,IAAIiiF,EAAQlB,EAAO/gF,GAEnB,GAAqB,kBAAViiF,EAAX,CAMA,IACIC,EADA1jE,EAAQ0kB,EAAK++C,EAAM1hE,MAGvB,GAAa,MAAT/B,EAAe,CACjB,GAAIyjE,EAAMR,SAAU,CAEdQ,EAAMV,UACR/mD,GAAQynD,EAAMrsC,QAGhB,SAEA,MAAM,IAAIv2B,UAAU,aAAe4iE,EAAM1hE,KAAO,mBAIpD,GAAImgE,EAAQliE,GAAZ,CACE,IAAKyjE,EAAMT,OACT,MAAM,IAAIniE,UAAU,aAAe4iE,EAAM1hE,KAAO,kCAAoC+F,KAAKC,UAAU/H,GAAS,KAG9G,GAAqB,IAAjBA,EAAMte,OAAc,CACtB,GAAI+hF,EAAMR,SACR,SAEA,MAAM,IAAIpiE,UAAU,aAAe4iE,EAAM1hE,KAAO,qBAIpD,IAAK,IAAIrR,EAAI,EAAGA,EAAIsP,EAAMte,OAAQgP,IAAK,CAGrC,GAFAgzE,EAAU7I,EAAO76D,EAAMtP,KAElB2f,EAAQ7uB,GAAG4wB,KAAKsxD,GACnB,MAAM,IAAI7iE,UAAU,iBAAmB4iE,EAAM1hE,KAAO,eAAiB0hE,EAAMvxD,QAAU,oBAAsBpK,KAAKC,UAAU27D,GAAW,KAGvI1nD,IAAe,IAANtrB,EAAU+yE,EAAMrsC,OAASqsC,EAAMhB,WAAaiB,OApBzD,CA4BA,GAFAA,EAAUD,EAAMX,SA5EbO,UA4EuCrjE,GA5ExBwR,QAAQ,SAAS,SAAUt0B,GAC/C,MAAO,IAAMA,EAAE65E,WAAW,GAAG5tD,SAAS,IAAI0M,iBA2EWglD,EAAO76D,IAErDqQ,EAAQ7uB,GAAG4wB,KAAKsxD,GACnB,MAAM,IAAI7iE,UAAU,aAAe4iE,EAAM1hE,KAAO,eAAiB0hE,EAAMvxD,QAAU,oBAAsBwxD,EAAU,KAGnH1nD,GAAQynD,EAAMrsC,OAASssC,QArDrB1nD,GAAQynD,EAwDZ,OAAOznD,GAUX,SAASmnD,EAAcxjF,GACrB,OAAOA,EAAI6xB,QAAQ,6BAA8B,QASnD,SAAS0xD,EAAaN,GACpB,OAAOA,EAAMpxD,QAAQ,gBAAiB,QAUxC,SAASmyD,EAAY5qD,EAAI5Q,GAEvB,OADA4Q,EAAG5Q,KAAOA,EACH4Q,EAST,SAASuqD,EAAO5hE,GACd,OAAOA,GAAWA,EAAQyb,UAAY,GAAK,IAwE7C,SAASklD,EAAgBE,EAAQp6D,EAAMzG,GAChCwgE,EAAQ/5D,KACXzG,EAAkCyG,GAAQzG,EAC1CyG,EAAO,IAUT,IALA,IAAI+U,GAFJxb,EAAUA,GAAW,IAEAwb,OACjBQ,GAAsB,IAAhBhc,EAAQgc,IACdkmD,EAAQ,GAGHpiF,EAAI,EAAGA,EAAI+gF,EAAO7gF,OAAQF,IAAK,CACtC,IAAIiiF,EAAQlB,EAAO/gF,GAEnB,GAAqB,kBAAViiF,EACTG,GAAST,EAAaM,OACjB,CACL,IAAIrsC,EAAS+rC,EAAaM,EAAMrsC,QAC5BurC,EAAU,MAAQc,EAAMvxD,QAAU,IAEtC/J,EAAK4K,KAAK0wD,GAENA,EAAMT,SACRL,GAAW,MAAQvrC,EAASurC,EAAU,MAaxCiB,GANIjB,EAJAc,EAAMR,SACHQ,EAAMV,QAGC3rC,EAAS,IAAMurC,EAAU,KAFzB,MAAQvrC,EAAS,IAAMurC,EAAU,MAKnCvrC,EAAS,IAAMurC,EAAU,KAOzC,IAAIF,EAAYU,EAAazhE,EAAQ+gE,WAAa,KAC9CoB,EAAoBD,EAAM9tD,OAAO2sD,EAAU/gF,UAAY+gF,EAkB3D,OAZKvlD,IACH0mD,GAASC,EAAoBD,EAAM9tD,MAAM,GAAI2sD,EAAU/gF,QAAUkiF,GAAS,MAAQnB,EAAY,WAI9FmB,GADElmD,EACO,IAIAR,GAAU2mD,EAAoB,GAAK,MAAQpB,EAAY,MAG3DkB,EAAW,IAAIxxD,OAAO,IAAMyxD,EAAON,EAAM5hE,IAAWyG,GAe7D,SAASqV,EAAcxB,EAAM7T,EAAMzG,GAQjC,OAPKwgE,EAAQ/5D,KACXzG,EAAkCyG,GAAQzG,EAC1CyG,EAAO,IAGTzG,EAAUA,GAAW,GAEjBsa,aAAgB7J,OAlJtB,SAAyB6J,EAAM7T,GAE7B,IAAI27D,EAAS9nD,EAAKtpB,OAAO0e,MAAM,aAE/B,GAAI0yD,EACF,IAAK,IAAItiF,EAAI,EAAGA,EAAIsiF,EAAOpiF,OAAQF,IACjC2mB,EAAK4K,KAAK,CACRhR,KAAMvgB,EACN41C,OAAQ,KACRqrC,UAAW,KACXQ,UAAU,EACVD,QAAQ,EACRD,SAAS,EACTD,UAAU,EACV5wD,QAAS,OAKf,OAAOyxD,EAAW3nD,EAAM7T,GAgIf47D,CAAe/nD,EAA6B7T,GAGjD+5D,EAAQlmD,GAxHd,SAAwBA,EAAM7T,EAAMzG,GAGlC,IAFA,IAAIsiE,EAAQ,GAEHxiF,EAAI,EAAGA,EAAIw6B,EAAKt6B,OAAQF,IAC/BwiF,EAAMjxD,KAAKyK,EAAaxB,EAAKx6B,GAAI2mB,EAAMzG,GAAShP,QAKlD,OAAOixE,EAFM,IAAIxxD,OAAO,MAAQ6xD,EAAM7qD,KAAK,KAAO,IAAKmqD,EAAM5hE,IAEnCyG,GAgHjB87D,CAAqCjoD,EAA8B7T,EAAOzG,GArGrF,SAAyBsa,EAAM7T,EAAMzG,GACnC,OAAO2gE,EAAexxD,EAAMmL,EAAMta,GAAUyG,EAAMzG,GAuG3CwiE,CAAsCloD,EAA8B7T,EAAOzG,K,8BCtapF,IAAIiwC,EAAyBr/C,EAAQ,IAEjCs/C,EAA0Bt/C,EAAQ,IAEtCE,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAET3N,EAAQyuC,aAAU,EAElB,IAAIx+B,EAAQsvC,EAAwBt/C,EAAQ,IAIxCu/C,GAAW,EAFMF,EAAuBr/C,EAAQ,KAElBwuC,SAAuBx+B,EAAMW,cAAc,OAAQ,CACnFpY,EAAG,sDACD,SAEJwH,EAAQyuC,QAAU+Q,G,6BCjBlB,IAAIF,EAAyBr/C,EAAQ,IAEjCs/C,EAA0Bt/C,EAAQ,IAEtCE,OAAO4O,eAAe/O,EAAS,aAAc,CAC3C2N,OAAO,IAET3N,EAAQyuC,aAAU,EAElB,IAAIx+B,EAAQsvC,EAAwBt/C,EAAQ,IAIxCu/C,GAAW,EAFMF,EAAuBr/C,EAAQ,KAElBwuC,SAAuBx+B,EAAMW,cAAc,OAAQ,CACnFpY,EAAG,wMACD,SAEJwH,EAAQyuC,QAAU+Q,G,iKCXX,SAASsyB,EAAgBrnD,EAAUsnD,GACxC,IAIIprE,EAASxG,OAAO1Y,OAAO,MAO3B,OANIgjC,GAAUunD,WAAS1yD,IAAImL,GAAU,SAAU5/B,GAC7C,OAAOA,KACN+P,SAAQ,SAAUuxB,GAEnBxlB,EAAOwlB,EAAM7rB,KATF,SAAgB6rB,GAC3B,OAAO4lD,GAASE,yBAAe9lD,GAAS4lD,EAAM5lD,GAASA,EAQnC+lD,CAAO/lD,MAEtBxlB,EAkET,SAASwrE,EAAQhmD,EAAOimD,EAAM1jE,GAC5B,OAAsB,MAAfA,EAAM0jE,GAAgB1jE,EAAM0jE,GAAQjmD,EAAMzd,MAAM0jE,GAclD,SAASC,EAAoBjD,EAAWkD,EAAkBC,GAC/D,IAAIC,EAAmBV,EAAgB1C,EAAU3kD,UAC7CA,EA/DC,SAA4Bk4C,EAAMliD,GAIvC,SAASgyD,EAAenyE,GACtB,OAAOA,KAAOmgB,EAAOA,EAAKngB,GAAOqiE,EAAKriE,GAJxCqiE,EAAOA,GAAQ,GACfliD,EAAOA,GAAQ,GAQf,IAcItxB,EAdAujF,EAAkBvyE,OAAO1Y,OAAO,MAChCkrF,EAAc,GAElB,IAAK,IAAIC,KAAWjQ,EACdiQ,KAAWnyD,EACTkyD,EAAYtjF,SACdqjF,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYjyD,KAAKkyD,GAKrB,IAAIC,EAAe,GAEnB,IAAK,IAAIC,KAAWryD,EAAM,CACxB,GAAIiyD,EAAgBI,GAClB,IAAK3jF,EAAI,EAAGA,EAAIujF,EAAgBI,GAASzjF,OAAQF,IAAK,CACpD,IAAI4jF,EAAiBL,EAAgBI,GAAS3jF,GAC9C0jF,EAAaH,EAAgBI,GAAS3jF,IAAMsjF,EAAeM,GAI/DF,EAAaC,GAAWL,EAAeK,GAIzC,IAAK3jF,EAAI,EAAGA,EAAIwjF,EAAYtjF,OAAQF,IAClC0jF,EAAaF,EAAYxjF,IAAMsjF,EAAeE,EAAYxjF,IAG5D,OAAO0jF,EAoBQG,CAAmBV,EAAkBE,GAmCpD,OAlCAryE,OAAO2V,KAAK2U,GAAU7vB,SAAQ,SAAU0F,GACtC,IAAI6rB,EAAQ1B,EAASnqB,GACrB,GAAK2xE,yBAAe9lD,GAApB,CACA,IAAI8mD,EAAW3yE,KAAOgyE,EAClBY,EAAW5yE,KAAOkyE,EAClBW,EAAYb,EAAiBhyE,GAC7B8yE,EAAYnB,yBAAekB,KAAeA,EAAUzkE,MAAM2kE,IAE1DH,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,GAAWhB,yBAAekB,KAI9C1oD,EAASnqB,GAAOgzE,uBAAannD,EAAO,CAClComD,SAAUA,EAASx/C,KAAK,KAAM5G,GAC9BknD,GAAIF,EAAUzkE,MAAM2kE,GACpBE,KAAMpB,EAAQhmD,EAAO,OAAQijD,GAC7BoE,MAAOrB,EAAQhmD,EAAO,QAASijD,MAXjC3kD,EAASnqB,GAAOgzE,uBAAannD,EAAO,CAClCknD,IAAI,IAVN5oD,EAASnqB,GAAOgzE,uBAAannD,EAAO,CAClComD,SAAUA,EAASx/C,KAAK,KAAM5G,GAC9BknD,IAAI,EACJE,KAAMpB,EAAQhmD,EAAO,OAAQijD,GAC7BoE,MAAOrB,EAAQhmD,EAAO,QAASijD,SAoB9B3kD,ECjIT,IAAIvD,EAAS/mB,OAAO+mB,QAAU,SAAU3I,GACtC,OAAOpe,OAAO2V,KAAKyI,GAAKe,KAAI,SAAUhhB,GACpC,OAAOigB,EAAIjgB,OAyBXm1E,EAA+B,SAAUC,GAG3C,SAASD,EAAgB/kE,EAAO2a,GAC9B,IAAIvD,EAIA6tD,GAFJ7tD,EAAQ4tD,EAAiBjzE,KAAKE,KAAM+N,EAAO2a,IAAY1oB,MAE9BgzE,aAAa5gD,KAAK2iC,YAAuB5vC,IAUlE,OAPAA,EAAMzQ,MAAQ,CACZ8yC,aAAc,CACZyrB,YAAY,GAEdD,aAAcA,EACdE,aAAa,GAER/tD,EAjBTb,YAAewuD,EAAiBC,GAoBhC,IAAIhuD,EAAS+tD,EAAgBlzE,UAqE7B,OAnEAmlB,EAAOsE,kBAAoB,WACzBrpB,KAAKmzE,SAAU,EACfnzE,KAAKspC,SAAS,CACZke,aAAc,CACZyrB,YAAY,MAKlBluD,EAAOwE,qBAAuB,WAC5BvpB,KAAKmzE,SAAU,GAGjBL,EAAgBjnB,yBAA2B,SAAkC4iB,EAAWzpC,GACtF,IDiBmCj3B,EAAO6jE,ECjBtCD,EAAmB3sC,EAAKlb,SACxBkpD,EAAehuC,EAAKguC,aAExB,MAAO,CACLlpD,SAFgBkb,EAAKkuC,aDeYnlE,ECbc0gE,EDaPmD,ECbkBoB,EDcvD7B,EAAgBpjE,EAAM+b,UAAU,SAAU0B,GAC/C,OAAOmnD,uBAAannD,EAAO,CACzBomD,SAAUA,EAASx/C,KAAK,KAAM5G,GAC9BknD,IAAI,EACJU,OAAQ5B,EAAQhmD,EAAO,SAAUzd,GACjC8kE,MAAOrB,EAAQhmD,EAAO,QAASzd,GAC/B6kE,KAAMpB,EAAQhmD,EAAO,OAAQzd,SCpB6C2jE,EAAoBjD,EAAWkD,EAAkBqB,GAC3HE,aAAa,IAKjBnuD,EAAOiuD,aAAe,SAAsBxnD,EAAOpD,GACjD,IAAIirD,EAAsBlC,EAAgBnxE,KAAK+N,MAAM+b,UACjD0B,EAAM7rB,OAAO0zE,IAEb7nD,EAAMzd,MAAM6jE,UACdpmD,EAAMzd,MAAM6jE,SAASxpD,GAGnBpoB,KAAKmzE,SACPnzE,KAAKspC,UAAS,SAAU50B,GACtB,IAAIoV,EAAWvqB,YAAS,GAAImV,EAAMoV,UAGlC,cADOA,EAAS0B,EAAM7rB,KACf,CACLmqB,SAAUA,QAMlB/E,EAAO0E,OAAS,WACd,IAAI6pD,EAActzE,KAAK+N,MACnBY,EAAY2kE,EAAYzoD,UACxB0oD,EAAeD,EAAYC,aAC3BxlE,EAAQgpB,YAA8Bu8C,EAAa,CAAC,YAAa,iBAEjE9rB,EAAexnD,KAAK0U,MAAM8yC,aAC1B19B,EAAWvD,EAAOvmB,KAAK0U,MAAMoV,UAAUnL,IAAI40D,GAK/C,cAJOxlE,EAAMqlE,cACNrlE,EAAM8kE,aACN9kE,EAAM6kE,KAEK,OAAdjkE,EACkBW,IAAMW,cAAcujE,IAAuB1M,SAAU,CACvE95D,MAAOw6C,GACN19B,GAGexa,IAAMW,cAAcujE,IAAuB1M,SAAU,CACvE95D,MAAOw6C,GACOl4C,IAAMW,cAActB,EAAWZ,EAAO+b,KAGjDgpD,EA1F0B,CA2FjCxjE,IAAMX,WAERmkE,EAAgB/mB,UAyDZ,GACJ+mB,EAAgBjjE,aA5KG,CACjBgb,UAAW,MACX0oD,aAAc,SAAsB/nD,GAClC,OAAOA,IA0KIsnD,QCxLXxqD,EAAsC,qBAAXrW,OAAyB3C,YAAkBA,kBA8F3DmkE,MAzFf,SAAgB1lE,GACd,IAAI0B,EAAU1B,EAAM0B,QAChBikE,EAAiB3lE,EAAM4lE,QACvBA,OAA6B,IAAnBD,GAAoCA,EAC9CE,EAAU7lE,EAAM6lE,QAChBC,EAAU9lE,EAAM8lE,QAChBC,EAAa/lE,EAAM+lE,WACnBC,EAAShmE,EAAM2kE,GACfsB,EAAkBjmE,EAAM6jE,SACxBA,OAA+B,IAApBoC,EAA6B,aAAiBA,EACzD39D,EAAUtI,EAAMsI,QAEhB23B,EAAkB1+B,YAAe,GACjC2kE,EAAUjmC,EAAgB,GAC1BkmC,EAAalmC,EAAgB,GAE7BmmC,EAAkBtlC,YAAKp/B,EAAQ2kE,OAAQ3kE,EAAQ4kE,cAAeV,GAAWlkE,EAAQ6kE,eACjFC,EAAe,CACjB9nF,MAAOqnF,EACPpnF,OAAQonF,EACRxgF,KAAOwgF,EAAa,EAAKD,EACzB1gF,MAAQ2gF,EAAa,EAAKF,GAExBY,EAAiB3lC,YAAKp/B,EAAQ+b,MAAOyoD,GAAWxkE,EAAQglE,aAAcd,GAAWlkE,EAAQilE,cACzF1B,EAAezqD,YAAiBqpD,GAepC,OAbAtpD,GAAkB,WAChB,IAAKyrD,EAAQ,CAEXG,GAAW,GAEX,IAAIS,EAAYr+D,WAAW08D,EAAc38D,GACzC,OAAO,WACLmqC,aAAam0B,OAKhB,CAAC3B,EAAce,EAAQ19D,IACN/G,gBAAoB,OAAQ,CAC9CgnB,UAAW69C,EACXz9C,MAAO69C,GACOjlE,gBAAoB,OAAQ,CAC1CgnB,UAAWk+C,MCoDXI,EAA2BtlE,cAAiB,SAAqBvB,EAAOyB,GAC1E,IAAIqlE,EAAgB9mE,EAAM5Y,OACtB2/E,OAA+B,IAAlBD,GAAmCA,EAChDplE,EAAU1B,EAAM0B,QAChB6mB,EAAYvoB,EAAMuoB,UAClB1mB,EAAQ5D,YAAyB+B,EAAO,CAAC,SAAU,UAAW,cAE9DigC,EAAkB1+B,WAAe,IACjCylE,EAAU/mC,EAAgB,GAC1BgnC,EAAahnC,EAAgB,GAE7BmkC,EAAU7iE,SAAa,GACvB2lE,EAAiB3lE,SAAa,MAClCA,aAAgB,WACV2lE,EAAezsD,UACjBysD,EAAezsD,UACfysD,EAAezsD,QAAU,QAE1B,CAACusD,IAEJ,IAAIG,EAAoB5lE,UAAa,GAGjC6lE,EAAa7lE,SAAa,MAE1B8lE,EAAmB9lE,SAAa,MAChC+lE,EAAY/lE,SAAa,MAC7BA,aAAgB,WACd,OAAO,WACLkxC,aAAa20B,EAAW3sD,YAEzB,IACH,IAAI8sD,EAAchmE,eAAkB,SAAU4Z,GAC5C,IAAIyqD,EAAUzqD,EAAOyqD,QACjBC,EAAU1qD,EAAO0qD,QACjBC,EAAU3qD,EAAO2qD,QACjBC,EAAa5qD,EAAO4qD,WACpByB,EAAKrsD,EAAOqsD,GAChBP,GAAW,SAAUQ,GACnB,MAAO,GAAGxvD,OAAO2G,YAAmB6oD,GAAa,CAAclmE,gBAAoBmkE,EAAQ,CACzF9zE,IAAKwyE,EAAQ3pD,QACb/Y,QAASA,EACT4G,QAzIO,IA0IPs9D,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,SAGhB3B,EAAQ3pD,SAAW,EACnBysD,EAAezsD,QAAU+sD,IACxB,CAAC9lE,IACAirD,EAAQprD,eAAkB,WAC5B,IAAIsmB,EAAQnnC,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,GAC5EigB,EAAUjgB,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAK,GAC9E8mF,EAAK9mF,UAAUC,OAAS,EAAID,UAAU,QAAKgf,EAC3CgoE,EAAmB/mE,EAAQilE,QAC3BA,OAA+B,IAArB8B,GAAsCA,EAChDC,EAAkBhnE,EAAQvZ,OAC1BA,OAA6B,IAApBugF,EAA6BZ,GAAcpmE,EAAQilE,QAAU+B,EACtEC,EAAuBjnE,EAAQknE,YAC/BA,OAAuC,IAAzBD,GAA0CA,EAE5D,GAAmB,cAAf//C,EAAM/P,MAAwBqvD,EAAkB1sD,QAClD0sD,EAAkB1sD,SAAU,MAD9B,CAKmB,eAAfoN,EAAM/P,OACRqvD,EAAkB1sD,SAAU,GAG9B,IAQIorD,EACAC,EACAC,EAVAroD,EAAUmqD,EAAc,KAAOP,EAAU7sD,QACzCyoC,EAAOxlC,EAAUA,EAAQylC,wBAA0B,CACrDzkE,MAAO,EACPC,OAAQ,EACRyG,KAAM,EACNG,IAAK,GAOP,GAAI6B,GAA4B,IAAlBygC,EAAMy3C,SAAmC,IAAlBz3C,EAAM03C,UAAkB13C,EAAMy3C,UAAYz3C,EAAMq3C,QACnF2G,EAAUjtF,KAAKsQ,MAAMg6D,EAAKxkE,MAAQ,GAClConF,EAAUltF,KAAKsQ,MAAMg6D,EAAKvkE,OAAS,OAC9B,CACL,IAAIs4C,EAAOpP,EAAMq3C,QAAUr3C,EAAMq3C,QAAQ,GAAKr3C,EAC1Cy3C,EAAUroC,EAAKqoC,QACfC,EAAUtoC,EAAKsoC,QAEnBsG,EAAUjtF,KAAKsQ,MAAMo2E,EAAUpc,EAAK99D,MACpC0gF,EAAUltF,KAAKsQ,MAAMq2E,EAAUrc,EAAK39D,KAGtC,GAAI6B,GACF2+E,EAAantF,KAAKgI,MAAM,EAAIhI,KAAK8V,IAAIw0D,EAAKxkE,MAAO,GAAK9F,KAAK8V,IAAIw0D,EAAKvkE,OAAQ,IAAM,IAEjE,IAAM,IACrBonF,GAAc,OAEX,CACL,IAAI+B,EAAqF,EAA7ElvF,KAAK4H,IAAI5H,KAAK2H,KAAKm9B,EAAUA,EAAQ47C,YAAc,GAAKuM,GAAUA,GAAe,EACzFkC,EAAsF,EAA9EnvF,KAAK4H,IAAI5H,KAAK2H,KAAKm9B,EAAUA,EAAQsqD,aAAe,GAAKlC,GAAUA,GAAe,EAC9FC,EAAantF,KAAKgI,KAAKhI,KAAK8V,IAAIo5E,EAAO,GAAKlvF,KAAK8V,IAAIq5E,EAAO,IAI1DlgD,EAAMq3C,QAIyB,OAA7BmI,EAAiB5sD,UAEnB4sD,EAAiB5sD,QAAU,WACzB8sD,EAAY,CACV3B,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,EACZyB,GAAIA,KAKRJ,EAAW3sD,QAAUlS,YAAW,WAC1B8+D,EAAiB5sD,UACnB4sD,EAAiB5sD,UACjB4sD,EAAiB5sD,QAAU,QA/Nb,KAoOpB8sD,EAAY,CACV3B,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,EACZyB,GAAIA,OAGP,CAACT,EAAYQ,IACZ3B,EAAUrkE,eAAkB,WAC9BorD,EAAM,GAAI,CACRiZ,SAAS,MAEV,CAACjZ,IACAsb,EAAO1mE,eAAkB,SAAUsmB,EAAO2/C,GAI5C,GAHA/0B,aAAa20B,EAAW3sD,SAGL,aAAfoN,EAAM/P,MAAuBuvD,EAAiB5sD,QAOhD,OANAoN,EAAMqgD,UACNb,EAAiB5sD,UACjB4sD,EAAiB5sD,QAAU,UAC3B2sD,EAAW3sD,QAAUlS,YAAW,WAC9B0/D,EAAKpgD,EAAO2/C,OAKhBH,EAAiB5sD,QAAU,KAC3BwsD,GAAW,SAAUQ,GACnB,OAAIA,EAAW9mF,OAAS,EACf8mF,EAAW1yD,MAAM,GAGnB0yD,KAETP,EAAezsD,QAAU+sD,IACxB,IAQH,OAPAjmE,sBAA0BE,GAAK,WAC7B,MAAO,CACLmkE,QAASA,EACTjZ,MAAOA,EACPsb,KAAMA,KAEP,CAACrC,EAASjZ,EAAOsb,IACA1mE,gBAAoB,OAAQ/P,YAAS,CACvD+2B,UAAWuY,YAAKp/B,EAAQq/B,KAAMxY,GAC9B9mB,IAAK6lE,GACJzlE,GAAqBN,gBAAoBwjE,EAAiB,CAC3DjoD,UAAW,KACX+nD,MAAM,GACLmC,OAoBUvmE,eA1SK,SAAgBkB,GAClC,MAAO,CAELo/B,KAAM,CACJ2O,SAAU,SACVy4B,cAAe,OACf14B,SAAU,WACVgc,OAAQ,EACRlmE,IAAK,EACLF,MAAO,EACPC,OAAQ,EACRF,KAAM,EACNgjF,aAAc,WAIhB/B,OAAQ,CACN/J,QAAS,EACT7sB,SAAU,YAIZ62B,cAAe,CACbhK,QAAS,GACT+L,UAAW,WACXC,UAAW,UAAUrwD,OA3BZ,IA2B6B,OAAOA,OAAOtW,EAAM+/B,YAAYyR,OAAOC,YAI/EmzB,cAAe,CACbgC,kBAAmB,GAAGtwD,OAAOtW,EAAM+/B,YAAYC,SAASC,QAAS,OAInEnkB,MAAO,CACL6+C,QAAS,EACTl7B,QAAS,QACT1iD,MAAO,OACPC,OAAQ,OACRypF,aAAc,MACdI,gBAAiB,gBAInB9B,aAAc,CACZpK,QAAS,EACTgM,UAAW,SAASrwD,OAhDX,IAgD4B,OAAOA,OAAOtW,EAAM+/B,YAAYyR,OAAOC,YAI9EuzB,aAAc,CACZl3B,SAAU,WACVrqD,KAAM,EACNG,IAAK,EACL+iF,UAAW,mBAAmBrwD,OAAOtW,EAAM+/B,YAAYyR,OAAOC,UAAW,oBAE3E,mBAAoB,CAClB,KAAM,CACJi1B,UAAW,WACX/L,QAAS,IAEX,OAAQ,CACN+L,UAAW,WACX/L,QAAS,KAGb,kBAAmB,CACjB,KAAM,CACJA,QAAS,GAEX,OAAQ,CACNA,QAAS,IAGb,qBAAsB,CACpB,KAAM,CACJ+L,UAAW,YAEb,MAAO,CACLA,UAAW,eAEb,OAAQ,CACNA,UAAW,gBAwNe,CAChCI,MAAM,EACNznE,KAAM,kBAFOP,CAGEc,OAAWslE,ICtPxB6B,EAA0BnnE,cAAiB,SAAoBvB,EAAOyB,GACxE,IAAIi4B,EAAS15B,EAAM05B,OACfivC,EAAgB3oE,EAAM4oE,UACtBC,EAAsB7oE,EAAM8oE,aAC5BA,OAAuC,IAAxBD,GAAyCA,EACxD9sD,EAAW/b,EAAM+b,SACjBra,EAAU1B,EAAM0B,QAChB6mB,EAAYvoB,EAAMuoB,UAClBgY,EAAmBvgC,EAAM8c,UACzBA,OAAiC,IAArByjB,EAA8B,SAAWA,EACrDwoC,EAAkB/oE,EAAMsiC,SACxBA,OAA+B,IAApBymC,GAAqCA,EAChDC,EAAuBhpE,EAAMipE,cAC7BA,OAAyC,IAAzBD,GAA0CA,EAC1DE,EAAwBlpE,EAAMmpE,mBAC9BA,OAA+C,IAA1BD,GAA2CA,EAChEE,EAAqBppE,EAAMqpE,YAC3BA,OAAqC,IAAvBD,GAAwCA,EACtDE,EAAwBtpE,EAAMspE,sBAC9B7N,EAASz7D,EAAMy7D,OACf9zC,EAAU3nB,EAAM2nB,QAChBmtB,EAAU90C,EAAM80C,QAChBy0B,EAAiBvpE,EAAMupE,eACvBC,EAAYxpE,EAAMwpE,UAClBC,EAAUzpE,EAAMypE,QAChBC,EAAc1pE,EAAM0pE,YACpBC,EAAe3pE,EAAM2pE,aACrBC,EAAY5pE,EAAM4pE,UAClBC,EAAa7pE,EAAM6pE,WACnBC,EAAc9pE,EAAM8pE,YACpBC,EAAe/pE,EAAM+pE,aACrBC,EAAchqE,EAAMgqE,YACpBC,EAAkBjqE,EAAM47D,SACxBA,OAA+B,IAApBqO,EAA6B,EAAIA,EAC5CC,EAAmBlqE,EAAMkqE,iBACzBC,EAAcnqE,EAAM8X,KACpBA,OAAuB,IAAhBqyD,EAAyB,SAAWA,EAC3CtoE,EAAQ5D,YAAyB+B,EAAO,CAAC,SAAU,YAAa,eAAgB,WAAY,UAAW,YAAa,YAAa,WAAY,gBAAiB,qBAAsB,cAAe,wBAAyB,SAAU,UAAW,UAAW,iBAAkB,YAAa,UAAW,cAAe,eAAgB,YAAa,aAAc,cAAe,eAAgB,cAAe,WAAY,mBAAoB,SAE9a4oE,EAAYrnE,SAAa,MAO7B,IAAI6oE,EAAY7oE,SAAa,MAEzB0+B,EAAkB1+B,YAAe,GACjC8oE,EAAepqC,EAAgB,GAC/BqqC,EAAkBrqC,EAAgB,GAElCqC,GAAY+nC,GACdC,GAAgB,GAGlB,IAAIC,EAAqB73B,cACrBP,GAAiBo4B,EAAmBp4B,eACpCQ,GAAgB43B,EAAmB53B,cACnC63B,GAAkBD,EAAmB9oE,IAgBzC,SAASgpE,GAAiBC,EAAcC,GACtC,IAAIC,EAAmBlqF,UAAUC,OAAS,QAAsB+e,IAAjBhf,UAAU,GAAmBA,UAAU,GAAKyoF,EAC3F,OAAO3uD,aAAiB,SAAUqN,GAWhC,OAVI8iD,GACFA,EAAc9iD,IAGH+iD,GAEER,EAAU3vD,SACvB2vD,EAAU3vD,QAAQiwD,GAAc7iD,IAG3B,KA3BXtmB,sBAA0Bm4B,GAAQ,WAChC,MAAO,CACL2wC,aAAc,WACZC,GAAgB,GAChB1B,EAAUnuD,QAAQowD,YAGrB,IACHtpE,aAAgB,WACV8oE,GAAgBhB,IAAgBJ,GAClCmB,EAAU3vD,QAAQmrD,YAEnB,CAACqD,EAAeI,EAAagB,IAmBhC,IAAIS,GAAkBL,GAAiB,QAASf,GAC5CqB,GAAkBN,GAAiB,OAAQT,GAC3CgB,GAAgBP,GAAiB,OAAQb,GACzCqB,GAAmBR,GAAiB,QAAQ,SAAU5iD,GACpDwiD,GACFxiD,EAAMo3C,iBAGJ0K,GACFA,EAAa9hD,MAGbqjD,GAAmBT,GAAiB,QAASV,GAC7CoB,GAAiBV,GAAiB,OAAQZ,GAC1CuB,GAAkBX,GAAiB,OAAQX,GAC3CuB,GAAaZ,GAAiB,QAAQ,SAAU5iD,GAC9CwiD,IACF13B,GAAc9qB,GACdyiD,GAAgB,IAGd7O,GACFA,EAAO5zC,MAER,GACCyjD,GAAc9wD,aAAiB,SAAUqN,GAEtC+gD,EAAUnuD,UACbmuD,EAAUnuD,QAAUoN,EAAM0jD,eAGxBp5B,GAAetqB,KACjByiD,GAAgB,GAEZf,GACFA,EAAe1hD,IAIfitB,GACFA,EAAQjtB,MAIR2jD,GAAoB,WACtB,IAAIl8B,EA9FGuD,cAAqB+1B,EAAUnuD,SA+FtC,OAAOqC,GAA2B,WAAdA,KAA+C,MAAnBwyB,EAAO8C,SAAmB9C,EAAOpnB,OAO/EujD,GAAalqE,UAAa,GAC1BqwC,GAAgBp3B,aAAiB,SAAUqN,GAEzCwhD,IAAgBoC,GAAWhxD,SAAW4vD,GAAgBD,EAAU3vD,SAAyB,MAAdoN,EAAMj2B,MACnF65E,GAAWhxD,SAAU,EACrBoN,EAAMqgD,UACNkC,EAAU3vD,QAAQwtD,KAAKpgD,GAAO,WAC5BuiD,EAAU3vD,QAAQkyC,MAAM9kC,OAIxBA,EAAMv/B,SAAWu/B,EAAM0jD,eAAiBC,MAAqC,MAAd3jD,EAAMj2B,KACvEi2B,EAAMo3C,iBAGJuK,GACFA,EAAU3hD,GAIRA,EAAMv/B,SAAWu/B,EAAM0jD,eAAiBC,MAAqC,UAAd3jD,EAAMj2B,MAAoB0wC,IAC3Fza,EAAMo3C,iBAEFt3C,GACFA,EAAQE,OAIV6jD,GAAclxD,aAAiB,SAAUqN,GAGvCwhD,GAA6B,MAAdxhD,EAAMj2B,KAAew4E,EAAU3vD,SAAW4vD,IAAiBxiD,EAAM8jD,mBAClFF,GAAWhxD,SAAU,EACrBoN,EAAMqgD,UACNkC,EAAU3vD,QAAQwtD,KAAKpgD,GAAO,WAC5BuiD,EAAU3vD,QAAQmrD,QAAQ/9C,OAI1B4hD,GACFA,EAAQ5hD,GAINF,GAAWE,EAAMv/B,SAAWu/B,EAAM0jD,eAAiBC,MAAqC,MAAd3jD,EAAMj2B,MAAgBi2B,EAAM8jD,kBACxGhkD,EAAQE,MAGR+jD,GAAgB9uD,EAEE,WAAlB8uD,IAA8B/pE,EAAMqmB,OACtC0jD,GAAgB,KAGlB,IAAIC,GAAc,GAEI,WAAlBD,IACFC,GAAY/zD,KAAOA,EACnB+zD,GAAYvpC,SAAWA,IAED,MAAlBspC,IAA0B/pE,EAAMqmB,OAClC2jD,GAAY5qC,KAAO,UAGrB4qC,GAAY,iBAAmBvpC,GAGjC,IAAIwpC,GAAgBt2D,YAAWmzD,EAAelnE,GAC1CsqE,GAAev2D,YAAWg1D,GAAiB5B,GAC3CoD,GAAYx2D,YAAWs2D,GAAeC,IAEtCE,GAAmB1qE,YAAe,GAClC2qE,GAAeD,GAAiB,GAChCE,GAAkBF,GAAiB,GAEvC1qE,aAAgB,WACd4qE,IAAgB,KACf,IACH,IAAIC,GAAoBF,KAAiBjD,IAAkB3mC,EAW3D,OAAoB/gC,gBAAoBqqE,GAAep6E,YAAS,CAC9D+2B,UAAWuY,YAAKp/B,EAAQq/B,KAAMxY,EAAW8hD,GAAgB,CAAC3oE,EAAQ2oE,aAAcf,GAAwBhnC,GAAY5gC,EAAQ4gC,UAC5Hm5B,OAAQ4P,GACR1jD,QAASA,EACTmtB,QAASw2B,GACT9B,UAAW53B,GACX63B,QAASiC,GACThC,YAAaoB,GACbnB,aAAcsB,GACdrB,UAAWoB,GACXhB,YAAae,GACblB,WAAYsB,GACZrB,YAAasB,GACbrB,aAAcmB,GACdzpE,IAAKuqE,GACLpQ,SAAUt5B,GAAY,EAAIs5B,GACzBiQ,GAAahqE,GAAQka,EAAUqwD,GAIlC7qE,gBAAoBslE,EAAar1E,YAAS,CACxCiQ,IAAK2oE,EACLhjF,OAAQ0hF,GACPoB,IAAqB,SAyKXzpE,gBAheK,CAElBsgC,KAAM,CACJK,QAAS,cACTirC,WAAY,SACZC,eAAgB,SAChB78B,SAAU,WACV88B,wBAAyB,cACzB/D,gBAAiB,cAGjBgE,QAAS,EACTC,OAAQ,EACRr9B,OAAQ,EAERg5B,aAAc,EACdhM,QAAS,EAETC,OAAQ,UACRl7B,WAAY,OACZurC,cAAe,SACf,kBAAmB,OAEnB,qBAAsB,OAEtBC,eAAgB,OAEhB90D,MAAO,UACP,sBAAuB,CACrB+0D,YAAa,QAGf,aAAc,CACZzE,cAAe,OAEf9L,OAAQ,WAEV,eAAgB,CACdwQ,YAAa,UAKjBvqC,SAAU,GAGV+nC,aAAc,IAkbkB,CAChCrpE,KAAM,iBADOP,CAEZioE,I,wBCveH,IAAIoE,EAAW,SAAUx7E,GACvB,aAEA,IAEIoO,EAFAqtE,EAAKt7E,OAAOI,UACZm7E,EAASD,EAAGj7E,eAEZm7E,EAA4B,oBAAX17D,OAAwBA,OAAS,GAClD27D,EAAiBD,EAAQz7D,UAAY,aACrC27D,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO19D,EAAKje,EAAKqN,GAOxB,OANAxN,OAAO4O,eAAewP,EAAKje,EAAK,CAC9BqN,MAAOA,EACPiB,YAAY,EACZC,cAAc,EACdC,UAAU,IAELyP,EAAIje,GAEb,IAEE27E,EAAO,GAAI,IACX,MAAO9tE,GACP8tE,EAAS,SAAS19D,EAAKje,EAAKqN,GAC1B,OAAO4Q,EAAIje,GAAOqN,GAItB,SAASuuE,EAAKC,EAASC,EAASnuE,EAAMouE,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQ77E,qBAAqBg8E,EAAYH,EAAUG,EAC/EC,EAAYr8E,OAAO1Y,OAAO60F,EAAe/7E,WACzC8oB,EAAU,IAAIm+C,EAAQ6U,GAAe,IAMzC,OAFAG,EAAUC,QAsMZ,SAA0BN,EAASluE,EAAMob,GACvC,IAAIhU,EAAQqnE,EAEZ,OAAO,SAAgBz7D,EAAQ/lB,GAC7B,GAAIma,IAAUsnE,EACZ,MAAM,IAAIt5D,MAAM,gCAGlB,GAAIhO,IAAUunE,EAAmB,CAC/B,GAAe,UAAX37D,EACF,MAAM/lB,EAKR,OAAO2hF,IAMT,IAHAxzD,EAAQpI,OAASA,EACjBoI,EAAQnuB,IAAMA,IAED,CACX,IAAI4hF,EAAWzzD,EAAQyzD,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUzzD,GACnD,GAAI0zD,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnB1zD,EAAQpI,OAGVoI,EAAQ6zD,KAAO7zD,EAAQ8zD,MAAQ9zD,EAAQnuB,SAElC,GAAuB,UAAnBmuB,EAAQpI,OAAoB,CACrC,GAAI5L,IAAUqnE,EAEZ,MADArnE,EAAQunE,EACFvzD,EAAQnuB,IAGhBmuB,EAAQ+zD,kBAAkB/zD,EAAQnuB,SAEN,WAAnBmuB,EAAQpI,QACjBoI,EAAQg0D,OAAO,SAAUh0D,EAAQnuB,KAGnCma,EAAQsnE,EAER,IAAIW,EAASC,EAASpB,EAASluE,EAAMob,GACrC,GAAoB,WAAhBi0D,EAAO92D,KAAmB,CAO5B,GAJAnR,EAAQgU,EAAQxb,KACZ+uE,EACAY,EAEAF,EAAOpiF,MAAQ+hF,EACjB,SAGF,MAAO,CACLtvE,MAAO2vE,EAAOpiF,IACd2S,KAAMwb,EAAQxb,MAGS,UAAhByvE,EAAO92D,OAChBnR,EAAQunE,EAGRvzD,EAAQpI,OAAS,QACjBoI,EAAQnuB,IAAMoiF,EAAOpiF,OA9QPuiF,CAAiBtB,EAASluE,EAAMob,GAE7CmzD,EAcT,SAASe,EAAStiF,EAAIsjB,EAAKrjB,GACzB,IACE,MAAO,CAAEsrB,KAAM,SAAUtrB,IAAKD,EAAGwF,KAAK8d,EAAKrjB,IAC3C,MAAOiT,GACP,MAAO,CAAEqY,KAAM,QAAStrB,IAAKiT,IAhBjCnO,EAAQk8E,KAAOA,EAoBf,IAAIQ,EAAyB,iBACzBc,EAAyB,iBACzBb,EAAoB,YACpBC,EAAoB,YAIpBK,EAAmB,GAMvB,SAASV,KACT,SAASmB,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBA,EAAkBhC,GAAkB,WAClC,OAAOj7E,MAGT,IAAIk9E,EAAW19E,OAAOiuC,eAClB0vC,EAA0BD,GAAYA,EAASA,EAAS32D,EAAO,MAC/D42D,GACAA,IAA4BrC,GAC5BC,EAAOj7E,KAAKq9E,EAAyBlC,KAGvCgC,EAAoBE,GAGtB,IAAIC,EAAKJ,EAA2Bp9E,UAClCg8E,EAAUh8E,UAAYJ,OAAO1Y,OAAOm2F,GAWtC,SAASI,EAAsBz9E,GAC7B,CAAC,OAAQ,QAAS,UAAU3F,SAAQ,SAASqmB,GAC3Cg7D,EAAO17E,EAAW0gB,GAAQ,SAAS/lB,GACjC,OAAOyF,KAAK87E,QAAQx7D,EAAQ/lB,SAkClC,SAAS+iF,EAAczB,EAAW0B,GAChC,SAASC,EAAOl9D,EAAQ/lB,EAAKoS,EAASC,GACpC,IAAI+vE,EAASC,EAASf,EAAUv7D,GAASu7D,EAAWthF,GACpD,GAAoB,UAAhBoiF,EAAO92D,KAEJ,CACL,IAAI7f,EAAS22E,EAAOpiF,IAChByS,EAAQhH,EAAOgH,MACnB,OAAIA,GACiB,kBAAVA,GACP+tE,EAAOj7E,KAAKkN,EAAO,WACduwE,EAAY5wE,QAAQK,EAAMywE,SAASrwE,MAAK,SAASJ,GACtDwwE,EAAO,OAAQxwE,EAAOL,EAASC,MAC9B,SAASY,GACVgwE,EAAO,QAAShwE,EAAKb,EAASC,MAI3B2wE,EAAY5wE,QAAQK,GAAOI,MAAK,SAASswE,GAI9C13E,EAAOgH,MAAQ0wE,EACf/wE,EAAQ3G,MACP,SAASiH,GAGV,OAAOuwE,EAAO,QAASvwE,EAAON,EAASC,MAvBzCA,EAAO+vE,EAAOpiF,KA4BlB,IAAIojF,EAgCJ39E,KAAK87E,QA9BL,SAAiBx7D,EAAQ/lB,GACvB,SAASqjF,IACP,OAAO,IAAIL,GAAY,SAAS5wE,EAASC,GACvC4wE,EAAOl9D,EAAQ/lB,EAAKoS,EAASC,MAIjC,OAAO+wE,EAaLA,EAAkBA,EAAgBvwE,KAChCwwE,EAGAA,GACEA,KAkHV,SAASvB,EAAoBF,EAAUzzD,GACrC,IAAIpI,EAAS67D,EAAS58D,SAASmJ,EAAQpI,QACvC,GAAIA,IAAW7S,EAAW,CAKxB,GAFAib,EAAQyzD,SAAW,KAEI,UAAnBzzD,EAAQpI,OAAoB,CAE9B,GAAI67D,EAAS58D,SAAT,SAGFmJ,EAAQpI,OAAS,SACjBoI,EAAQnuB,IAAMkT,EACd4uE,EAAoBF,EAAUzzD,GAEP,UAAnBA,EAAQpI,QAGV,OAAOg8D,EAIX5zD,EAAQpI,OAAS,QACjBoI,EAAQnuB,IAAM,IAAIsT,UAChB,kDAGJ,OAAOyuE,EAGT,IAAIK,EAASC,EAASt8D,EAAQ67D,EAAS58D,SAAUmJ,EAAQnuB,KAEzD,GAAoB,UAAhBoiF,EAAO92D,KAIT,OAHA6C,EAAQpI,OAAS,QACjBoI,EAAQnuB,IAAMoiF,EAAOpiF,IACrBmuB,EAAQyzD,SAAW,KACZG,EAGT,IAAIvvE,EAAO4vE,EAAOpiF,IAElB,OAAMwS,EAOFA,EAAKG,MAGPwb,EAAQyzD,EAAS0B,YAAc9wE,EAAKC,MAGpC0b,EAAQ5I,KAAOq8D,EAAS2B,QAQD,WAAnBp1D,EAAQpI,SACVoI,EAAQpI,OAAS,OACjBoI,EAAQnuB,IAAMkT,GAUlBib,EAAQyzD,SAAW,KACZG,GANEvvE,GA3BP2b,EAAQpI,OAAS,QACjBoI,EAAQnuB,IAAM,IAAIsT,UAAU,oCAC5B6a,EAAQyzD,SAAW,KACZG,GAoDX,SAASyB,EAAaC,GACpB,IAAIp/D,EAAQ,CAAEq/D,OAAQD,EAAK,IAEvB,KAAKA,IACPp/D,EAAMs/D,SAAWF,EAAK,IAGpB,KAAKA,IACPp/D,EAAMu/D,WAAaH,EAAK,GACxBp/D,EAAMw/D,SAAWJ,EAAK,IAGxBh+E,KAAKq+E,WAAWt+D,KAAKnB,GAGvB,SAAS0/D,EAAc1/D,GACrB,IAAI+9D,EAAS/9D,EAAM2/D,YAAc,GACjC5B,EAAO92D,KAAO,gBACP82D,EAAOpiF,IACdqkB,EAAM2/D,WAAa5B,EAGrB,SAAS9V,EAAQ6U,GAIf17E,KAAKq+E,WAAa,CAAC,CAAEJ,OAAQ,SAC7BvC,EAAYzhF,QAAQ8jF,EAAc/9E,MAClCA,KAAKw+E,OAAM,GA8Bb,SAASj4D,EAAOk4D,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASxD,GAC9B,GAAIyD,EACF,OAAOA,EAAe5+E,KAAK2+E,GAG7B,GAA6B,oBAAlBA,EAAS3+D,KAClB,OAAO2+D,EAGT,IAAKE,MAAMF,EAAS/vF,QAAS,CAC3B,IAAIF,GAAK,EAAGsxB,EAAO,SAASA,IAC1B,OAAStxB,EAAIiwF,EAAS/vF,QACpB,GAAIqsF,EAAOj7E,KAAK2+E,EAAUjwF,GAGxB,OAFAsxB,EAAK9S,MAAQyxE,EAASjwF,GACtBsxB,EAAK5S,MAAO,EACL4S,EAOX,OAHAA,EAAK9S,MAAQS,EACbqS,EAAK5S,MAAO,EAEL4S,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMo8D,GAIjB,SAASA,IACP,MAAO,CAAElvE,MAAOS,EAAWP,MAAM,GA+MnC,OA5mBA6vE,EAAkBn9E,UAAYw9E,EAAGnnE,YAAc+mE,EAC/CA,EAA2B/mE,YAAc8mE,EACzCA,EAAkB3tE,YAAcksE,EAC9B0B,EACA5B,EACA,qBAaF/7E,EAAQu/E,oBAAsB,SAASC,GACrC,IAAI7oE,EAAyB,oBAAX6oE,GAAyBA,EAAO5oE,YAClD,QAAOD,IACHA,IAAS+mE,GAG2B,uBAAnC/mE,EAAK5G,aAAe4G,EAAKjH,QAIhC1P,EAAQy/E,KAAO,SAASD,GAQtB,OAPIr/E,OAAOia,eACTja,OAAOia,eAAeolE,EAAQ7B,IAE9B6B,EAAOnxC,UAAYsvC,EACnB1B,EAAOuD,EAAQzD,EAAmB,sBAEpCyD,EAAOj/E,UAAYJ,OAAO1Y,OAAOs2F,GAC1ByB,GAOTx/E,EAAQ0/E,MAAQ,SAASxkF,GACvB,MAAO,CAAEkjF,QAASljF,IAsEpB8iF,EAAsBC,EAAc19E,WACpC09E,EAAc19E,UAAUs7E,GAAuB,WAC7C,OAAOl7E,MAETX,EAAQi+E,cAAgBA,EAKxBj+E,EAAQ2/E,MAAQ,SAASxD,EAASC,EAASnuE,EAAMouE,EAAa6B,QACxC,IAAhBA,IAAwBA,EAAcpwE,SAE1C,IAAI81C,EAAO,IAAIq6B,EACb/B,EAAKC,EAASC,EAASnuE,EAAMouE,GAC7B6B,GAGF,OAAOl+E,EAAQu/E,oBAAoBnD,GAC/Bx4B,EACAA,EAAKnjC,OAAO1S,MAAK,SAASpH,GACxB,OAAOA,EAAOkH,KAAOlH,EAAOgH,MAAQi2C,EAAKnjC,WAuKjDu9D,EAAsBD,GAEtB9B,EAAO8B,EAAIhC,EAAmB,aAO9BgC,EAAGnC,GAAkB,WACnB,OAAOj7E,MAGTo9E,EAAGjnE,SAAW,WACZ,MAAO,sBAkCT9W,EAAQ8V,KAAO,SAAS0O,GACtB,IAAI1O,EAAO,GACX,IAAK,IAAIxV,KAAOkkB,EACd1O,EAAK4K,KAAKpgB,GAMZ,OAJAwV,EAAK8pE,UAIE,SAASn/D,IACd,KAAO3K,EAAKzmB,QAAQ,CAClB,IAAIiR,EAAMwV,EAAKowB,MACf,GAAI5lC,KAAOkkB,EAGT,OAFA/D,EAAK9S,MAAQrN,EACbmgB,EAAK5S,MAAO,EACL4S,EAQX,OADAA,EAAK5S,MAAO,EACL4S,IAsCXzgB,EAAQknB,OAASA,EAMjBsgD,EAAQjnE,UAAY,CAClBqW,YAAa4wD,EAEb2X,MAAO,SAASU,GAcd,GAbAl/E,KAAKgiE,KAAO,EACZhiE,KAAK8f,KAAO,EAGZ9f,KAAKu8E,KAAOv8E,KAAKw8E,MAAQ/uE,EACzBzN,KAAKkN,MAAO,EACZlN,KAAKm8E,SAAW,KAEhBn8E,KAAKsgB,OAAS,OACdtgB,KAAKzF,IAAMkT,EAEXzN,KAAKq+E,WAAWpkF,QAAQqkF,IAEnBY,EACH,IAAK,IAAInwE,KAAQ/O,KAEQ,MAAnB+O,EAAK6T,OAAO,IACZm4D,EAAOj7E,KAAKE,KAAM+O,KACjB4vE,OAAO5vE,EAAK+T,MAAM,MACrB9iB,KAAK+O,GAAQtB,IAMrBuoE,KAAM,WACJh2E,KAAKkN,MAAO,EAEZ,IACIiyE,EADYn/E,KAAKq+E,WAAW,GACLE,WAC3B,GAAwB,UAApBY,EAAWt5D,KACb,MAAMs5D,EAAW5kF,IAGnB,OAAOyF,KAAKo/E,MAGd3C,kBAAmB,SAAS4C,GAC1B,GAAIr/E,KAAKkN,KACP,MAAMmyE,EAGR,IAAI32D,EAAU1oB,KACd,SAASs/E,EAAOC,EAAKC,GAYnB,OAXA7C,EAAO92D,KAAO,QACd82D,EAAOpiF,IAAM8kF,EACb32D,EAAQ5I,KAAOy/D,EAEXC,IAGF92D,EAAQpI,OAAS,OACjBoI,EAAQnuB,IAAMkT,KAGN+xE,EAGZ,IAAK,IAAIhxF,EAAIwR,KAAKq+E,WAAW3vF,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIowB,EAAQ5e,KAAKq+E,WAAW7vF,GACxBmuF,EAAS/9D,EAAM2/D,WAEnB,GAAqB,SAAjB3/D,EAAMq/D,OAIR,OAAOqB,EAAO,OAGhB,GAAI1gE,EAAMq/D,QAAUj+E,KAAKgiE,KAAM,CAC7B,IAAIyd,EAAW1E,EAAOj7E,KAAK8e,EAAO,YAC9B8gE,EAAa3E,EAAOj7E,KAAK8e,EAAO,cAEpC,GAAI6gE,GAAYC,EAAY,CAC1B,GAAI1/E,KAAKgiE,KAAOpjD,EAAMs/D,SACpB,OAAOoB,EAAO1gE,EAAMs/D,UAAU,GACzB,GAAIl+E,KAAKgiE,KAAOpjD,EAAMu/D,WAC3B,OAAOmB,EAAO1gE,EAAMu/D,iBAGjB,GAAIsB,GACT,GAAIz/E,KAAKgiE,KAAOpjD,EAAMs/D,SACpB,OAAOoB,EAAO1gE,EAAMs/D,UAAU,OAG3B,KAAIwB,EAMT,MAAM,IAAIh9D,MAAM,0CALhB,GAAI1iB,KAAKgiE,KAAOpjD,EAAMu/D,WACpB,OAAOmB,EAAO1gE,EAAMu/D,gBAU9BzB,OAAQ,SAAS72D,EAAMtrB,GACrB,IAAK,IAAI/L,EAAIwR,KAAKq+E,WAAW3vF,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIowB,EAAQ5e,KAAKq+E,WAAW7vF,GAC5B,GAAIowB,EAAMq/D,QAAUj+E,KAAKgiE,MACrB+Y,EAAOj7E,KAAK8e,EAAO,eACnB5e,KAAKgiE,KAAOpjD,EAAMu/D,WAAY,CAChC,IAAIwB,EAAe/gE,EACnB,OAIA+gE,IACU,UAAT95D,GACS,aAATA,IACD85D,EAAa1B,QAAU1jF,GACvBA,GAAOolF,EAAaxB,aAGtBwB,EAAe,MAGjB,IAAIhD,EAASgD,EAAeA,EAAapB,WAAa,GAItD,OAHA5B,EAAO92D,KAAOA,EACd82D,EAAOpiF,IAAMA,EAETolF,GACF3/E,KAAKsgB,OAAS,OACdtgB,KAAK8f,KAAO6/D,EAAaxB,WAClB7B,GAGFt8E,KAAK4/E,SAASjD,IAGvBiD,SAAU,SAASjD,EAAQyB,GACzB,GAAoB,UAAhBzB,EAAO92D,KACT,MAAM82D,EAAOpiF,IAcf,MAXoB,UAAhBoiF,EAAO92D,MACS,aAAhB82D,EAAO92D,KACT7lB,KAAK8f,KAAO68D,EAAOpiF,IACM,WAAhBoiF,EAAO92D,MAChB7lB,KAAKo/E,KAAOp/E,KAAKzF,IAAMoiF,EAAOpiF,IAC9ByF,KAAKsgB,OAAS,SACdtgB,KAAK8f,KAAO,OACa,WAAhB68D,EAAO92D,MAAqBu4D,IACrCp+E,KAAK8f,KAAOs+D,GAGP9B,GAGTuD,OAAQ,SAAS1B,GACf,IAAK,IAAI3vF,EAAIwR,KAAKq+E,WAAW3vF,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIowB,EAAQ5e,KAAKq+E,WAAW7vF,GAC5B,GAAIowB,EAAMu/D,aAAeA,EAGvB,OAFAn+E,KAAK4/E,SAAShhE,EAAM2/D,WAAY3/D,EAAMw/D,UACtCE,EAAc1/D,GACP09D,IAKb,MAAS,SAAS2B,GAChB,IAAK,IAAIzvF,EAAIwR,KAAKq+E,WAAW3vF,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIowB,EAAQ5e,KAAKq+E,WAAW7vF,GAC5B,GAAIowB,EAAMq/D,SAAWA,EAAQ,CAC3B,IAAItB,EAAS/9D,EAAM2/D,WACnB,GAAoB,UAAhB5B,EAAO92D,KAAkB,CAC3B,IAAIi6D,EAASnD,EAAOpiF,IACpB+jF,EAAc1/D,GAEhB,OAAOkhE,GAMX,MAAM,IAAIp9D,MAAM,0BAGlBq9D,cAAe,SAAStB,EAAUZ,EAAYC,GAa5C,OAZA99E,KAAKm8E,SAAW,CACd58D,SAAUgH,EAAOk4D,GACjBZ,WAAYA,EACZC,QAASA,GAGS,SAAhB99E,KAAKsgB,SAGPtgB,KAAKzF,IAAMkT,GAGN6uE,IAQJj9E,EA7sBM,CAotBgBD,EAAOC,SAGtC,IACE2gF,mBAAqBnF,EACrB,MAAOoF,GAUP7pB,SAAS,IAAK,yBAAdA,CAAwCykB,K,6BCvuBxCz7E,EAAOC,QAAUC,EAAQ,M,cCH3BF,EAAOC,QAAU,CAEb,YACA,QACA,UACA,OACA,YACA,QACA,UACA,UACA,QACA,WACA,KACA,MACA,QACA,KACA,OACA,KACA,MACA,QACA,QACA,MACA,OACA,OACA,OACA,OACA,QACA,UACA,SACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,cACA,kBACA,kBACA,SAGA,MACA,QACA,QACA,OACA,UACA,WACA,OACA,SACA,OACA,SACA,UACA,SACA,WACA,WACA,SACA,SACA,SACA,WACA,YACA,OACA,QACA,SACA,OACA,QACA,WACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,gBACA,gBACA,sBACA,SACA,OACA,YACA,U,cC5FJD,EAAOC,QAAU,CAEf,MACE,OACA,MACA,MACA,OACA,OACA,OACA,QACA,MACA,QACA,OACA,OACA,UACA,WACA,MACA,QACA,MACA,OACA,cACA,QACA,QACA,eACA,2BACA,sBACA,kBACA,wBACA,eACA,gBACA,WACA,gBACA,0BACA,eACA,eACA,eACA,eACA,SACA,cACA,kBACA,mBACA,eACA,eACA,cACA,eACA,kBACA,gBACA,iBACA,4BACA,uBACA,mBACA,yBACA,gBACA,0BACA,wBACA,mBACA,iBACA,2BACA,wBACA,mBACA,kCACA,oBACA,kCACA,eACA,sBACA,0BACA,qBACA,sBACA,sBACA,gCACA,gCACA,qBACA,4BACA,qCACA,8BACA,+BACA,sCACA,+CACA,wCACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,YACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,WACA,gBACA,qBACA,eACA,cACA,sBACA,6BACA,sCACA,+BACA,oBACA,cACA,qBACA,mBACA,0BACA,mCACA,4BACA,YACA,cACA,mBACA,cACA,SACA,WACA,gBACA,MACA,OACA,iBACA,MACA,MACA,MACA,MACA,YACA,MACA,WACA,MACA,UACA,UACA,UACA,OACA,MACA,aACA,OACA,OACA,MACA,YACA,eACA,gBACA,mBACA,cACA,iBACA,kBACA,sBACA,oBACA,mBACA,uBACA,uB,cCnJJ,IAOI6gF,EACAC,EARAh2B,EAAU/qD,EAAOC,QAAU,GAU/B,SAAS+gF,IACL,MAAM,IAAI19D,MAAM,mCAEpB,SAAS29D,IACL,MAAM,IAAI39D,MAAM,qCAsBpB,SAAS49D,EAAWC,GAChB,GAAIL,IAAqB5pE,WAErB,OAAOA,WAAWiqE,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB5pE,WAEhE,OADA4pE,EAAmB5pE,WACZA,WAAWiqE,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAMziE,GACJ,IAEI,OAAOoiE,EAAiBpgF,KAAK,KAAMygF,EAAK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AAI,CACrB,IAAI0+J,EAAa3B,EAAQ9gI,KAAK,IAU9B,OARE8Y,EADC0oH,EAAaiB,GArVR,EAuVElB,EAAakB,GAxVf,EADF,EA8VNn4E,EAAMw2E,EAAQ9gI,KAAK,KACnB8Y,EAAO+nH,EACAx4J,EAIT,OAFAy4J,EAAQlnI,KAAK71B,GACb87C,EAAO97C,EACAsE,EAAI,IAlXf,IAAI+4J,EAAcjoJ,EAAQ,KACtBqpJ,EAAYrpJ,EAAQ,KACpB+nJ,EAAc/nJ,EAAQ,KACtBmoJ,EAAgBnoJ,EAAQ,KACxBkoJ,EAAgBloJ,EAAQ,KAExB0nJ,EAAS,IACToB,EAAQ,KAcRzpI,EAAM,CACN,gBACA,eACA,eACA,WACA,UACA,QACA,QACA,UACA,UACA,aACA,MACA,Y,cCnCJvf,EAAOC,QAAU,CACb,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,M,gBC7CJ,IAAIwpJ,EAAOvpJ,EAAQ,KAEnBF,EAAOC,QAAUwpJ,EAAK/lI,QAAQkD,OAAO,CAClC,SACC,WACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,oBACA,iBACA,uBACA,aACA,aACA,eACA,kBACA,aACA,aACA,eACA,kBACA,WACA,WACA,WACA,YACA,WACA,cACA,gBACA,QACA,SACA,aACA,SACA,YACA,SACA,SACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,aACA,WACA,WACA,WACA,aACA,eACA,eACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,qBACA,qBACA,cACA,eACA,eACA,iBACA,uBACA,aACA,kBACA,aACA,kBACA,iBACA,iBACA,gBACA,iBACA,iBACA,cACA,eACA,eACA,mBACA,oBACA,uB,gBCpFJ,IAAI6i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","file":"static/js/2.f8bf93f0.chunk.js","sourcesContent":["/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\r\n * 3x3 Matrix\r\n * @module mat3\r\n */\n\n/**\r\n * Creates a new identity mat3\r\n *\r\n * @returns {mat3} a new 3x3 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\r\n * Copies the upper-left 3x3 values into the given mat3.\r\n *\r\n * @param {mat3} out the receiving 3x3 matrix\r\n * @param {ReadonlyMat4} a the source 4x4 matrix\r\n * @returns {mat3} out\r\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\r\n * Creates a new mat3 initialized with values from an existing matrix\r\n *\r\n * @param {ReadonlyMat3} a matrix to clone\r\n * @returns {mat3} a new 3x3 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\r\n * Copy the values from one mat3 to another\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the source matrix\r\n * @returns {mat3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\r\n * Create a new mat3 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\r\n * @returns {mat3} A new mat3\r\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\r\n * Set the components of a mat3 to the given values\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\r\n * @returns {mat3} out\r\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\r\n * Set a mat3 to the identity matrix\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @returns {mat3} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the source matrix\r\n * @returns {mat3} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the source matrix\r\n * @returns {mat3} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the source matrix\r\n * @returns {mat3} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\r\n * Calculates the determinant of a mat3\r\n *\r\n * @param {ReadonlyMat3} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\r\n * Multiplies two mat3's\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the first operand\r\n * @param {ReadonlyMat3} b the second operand\r\n * @returns {mat3} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\r\n * Translate a mat3 by the given vector\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the matrix to translate\r\n * @param {ReadonlyVec2} v vector to translate by\r\n * @returns {mat3} out\r\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\r\n * Rotates a mat3 by the given angle\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat3} out\r\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\r\n * Scales the mat3 by the dimensions in the given vec2\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the matrix to rotate\r\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\r\n * @returns {mat3} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.translate(dest, dest, vec);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {ReadonlyVec2} v Translation vector\r\n * @returns {mat3} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.rotate(dest, dest, rad);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat3} out\r\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat3.identity(dest);\r\n * mat3.scale(dest, dest, vec);\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {ReadonlyVec2} v Scaling vector\r\n * @returns {mat3} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\r\n * Copies the values from a mat2d into a mat3\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat2d} a the matrix to copy\r\n * @returns {mat3} out\r\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\r\n * Calculates a 3x3 matrix from the given quaternion\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {ReadonlyQuat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat3} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\r\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\r\n *\r\n * @param {mat3} out mat3 receiving operation result\r\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\r\n *\r\n * @returns {mat3} out\r\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\r\n * Generates a 2D projection matrix with the given bounds\r\n *\r\n * @param {mat3} out mat3 frustum matrix will be written into\r\n * @param {number} width Width of your gl context\r\n * @param {number} height Height of gl context\r\n * @returns {mat3} out\r\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat3\r\n *\r\n * @param {ReadonlyMat3} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat3\r\n *\r\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\r\n * Adds two mat3's\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the first operand\r\n * @param {ReadonlyMat3} b the second operand\r\n * @returns {mat3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the first operand\r\n * @param {ReadonlyMat3} b the second operand\r\n * @returns {mat3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat3} out the receiving matrix\r\n * @param {ReadonlyMat3} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat3} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\r\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat3} out the receiving vector\r\n * @param {ReadonlyMat3} a the first operand\r\n * @param {ReadonlyMat3} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat3} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyMat3} a The first matrix.\r\n * @param {ReadonlyMat3} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyMat3} a The first matrix.\r\n * @param {ReadonlyMat3} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\r\n * Alias for {@link mat3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {ReadonlyMat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to translate\r\n * @param {ReadonlyVec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyVec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {ReadonlyVec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {ReadonlyQuat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {ReadonlyVec3} v Translation vector\r\n * @param {ReadonlyVec3} s Scaling vector\r\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {ReadonlyQuat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {ReadonlyVec3} eye Position of the viewer\r\n * @param {ReadonlyVec3} center Point the viewer is looking at\r\n * @param {ReadonlyVec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {ReadonlyMat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {ReadonlyMat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {ReadonlyMat4} a the first operand\r\n * @param {ReadonlyMat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyMat4} a The first matrix.\r\n * @param {ReadonlyMat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {ReadonlyVec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the first operand\r\n * @param {ReadonlyVec3} b the second operand\r\n * @param {ReadonlyVec3} c the third operand\r\n * @param {ReadonlyVec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec3} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {ReadonlyVec3} a The vec3 point to rotate\r\n * @param {ReadonlyVec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {ReadonlyVec3} a The first operand\r\n * @param {ReadonlyVec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec3} a The first vector.\r\n * @param {ReadonlyVec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {ReadonlyVec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {ReadonlyVec4} result the receiving vector\r\n * @param {ReadonlyVec4} U the first vector\r\n * @param {ReadonlyVec4} V the second vector\r\n * @param {ReadonlyVec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the first operand\r\n * @param {ReadonlyVec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {ReadonlyVec4} a the vector to transform\r\n * @param {ReadonlyQuat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec4} a The first vector.\r\n * @param {ReadonlyVec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\r\n * Quaternion\r\n * @module quat\r\n */\n\n/**\r\n * Creates a new identity quat\r\n *\r\n * @returns {quat} a new quaternion\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\r\n * Set a quat to the identity quaternion\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @returns {quat} out\r\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\r\n * Sets a quat from the given angle and rotation axis,\r\n * then returns it.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyVec3} axis the axis around which to rotate\r\n * @param {Number} rad the angle in radians\r\n * @returns {quat} out\r\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\r\n * Gets the rotation axis and angle for a given\r\n * quaternion. If a quaternion is created with\r\n * setAxisAngle, this method will return the same\r\n * values as providied in the original parameter list\r\n * OR functionally equivalent values.\r\n * Example: The quaternion formed by axis [0, 0, 1] and\r\n * angle -90 is the same as the quaternion formed by\r\n * [0, 0, 1] and 270. This method favors the latter.\r\n * @param {vec3} out_axis Vector receiving the axis of rotation\r\n * @param {ReadonlyQuat} q Quaternion to be decomposed\r\n * @return {Number} Angle, in radians, of the rotation\r\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\r\n * Gets the angular distance between two unit quaternions\r\n *\r\n * @param {ReadonlyQuat} a Origin unit quaternion\r\n * @param {ReadonlyQuat} b Destination unit quaternion\r\n * @return {Number} Angle, in radians, between the two quaternions\r\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\r\n * Multiplies two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @returns {quat} out\r\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\r\n * Rotates a quaternion by the given angle about the X axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {ReadonlyQuat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\r\n * Rotates a quaternion by the given angle about the Y axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {ReadonlyQuat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\r\n * Rotates a quaternion by the given angle about the Z axis\r\n *\r\n * @param {quat} out quat receiving operation result\r\n * @param {ReadonlyQuat} a quat to rotate\r\n * @param {number} rad angle (in radians) to rotate\r\n * @returns {quat} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\r\n * Calculates the W component of a quat from the X, Y, and Z components.\r\n * Assumes that quaternion is 1 unit in length.\r\n * Any existing W component will be ignored.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate W component of\r\n * @returns {quat} out\r\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\r\n * Calculate the exponential of a unit quaternion.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate the exponential of\r\n * @returns {quat} out\r\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\r\n * Calculate the natural logarithm of a unit quaternion.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate the exponential of\r\n * @returns {quat} out\r\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\r\n * Calculate the scalar power of a unit quaternion.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate the exponential of\r\n * @param {Number} b amount to scale the quaternion by\r\n * @returns {quat} out\r\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\r\n * Performs a spherical linear interpolation between two quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {quat} out\r\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\r\n * Generates a random unit quaternion\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @returns {quat} out\r\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\r\n * Calculates the inverse of a quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate inverse of\r\n * @returns {quat} out\r\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\r\n * Calculates the conjugate of a quat\r\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quat to calculate conjugate of\r\n * @returns {quat} out\r\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a quaternion from the given 3x3 rotation matrix.\r\n *\r\n * NOTE: The resultant quaternion is not normalized, so you should be sure\r\n * to renormalize the quaternion yourself where necessary.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyMat3} m rotation matrix\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\r\n * Creates a quaternion from the given euler angle x, y, z.\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {x} Angle to rotate around X axis in degrees.\r\n * @param {y} Angle to rotate around Y axis in degrees.\r\n * @param {z} Angle to rotate around Z axis in degrees.\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\r\n * Returns a string representation of a quatenion\r\n *\r\n * @param {ReadonlyQuat} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Creates a new quat initialized with values from an existing quaternion\r\n *\r\n * @param {ReadonlyQuat} a quaternion to clone\r\n * @returns {quat} a new quaternion\r\n * @function\r\n */\n\nexport var clone = vec4.clone;\n/**\r\n * Creates a new quat initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {quat} a new quaternion\r\n * @function\r\n */\n\nexport var fromValues = vec4.fromValues;\n/**\r\n * Copy the values from one quat to another\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the source quaternion\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var copy = vec4.copy;\n/**\r\n * Set the components of a quat to the given values\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var set = vec4.set;\n/**\r\n * Adds two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var add = vec4.add;\n/**\r\n * Alias for {@link quat.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Scales a quat by a scalar number\r\n *\r\n * @param {quat} out the receiving vector\r\n * @param {ReadonlyQuat} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var scale = vec4.scale;\n/**\r\n * Calculates the dot product of two quat's\r\n *\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @returns {Number} dot product of a and b\r\n * @function\r\n */\n\nexport var dot = vec4.dot;\n/**\r\n * Performs a linear interpolation between two quat's\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var lerp = vec4.lerp;\n/**\r\n * Calculates the length of a quat\r\n *\r\n * @param {ReadonlyQuat} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport var length = vec4.length;\n/**\r\n * Alias for {@link quat.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Calculates the squared length of a quat\r\n *\r\n * @param {ReadonlyQuat} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n * @function\r\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\r\n * Alias for {@link quat.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Normalize a quat\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a quaternion to normalize\r\n * @returns {quat} out\r\n * @function\r\n */\n\nexport var normalize = vec4.normalize;\n/**\r\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyQuat} a The first quaternion.\r\n * @param {ReadonlyQuat} b The second quaternion.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\r\n * Returns whether or not the quaternions have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyQuat} a The first vector.\r\n * @param {ReadonlyQuat} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport var equals = vec4.equals;\n/**\r\n * Sets a quaternion to represent the shortest rotation from one\r\n * vector to another.\r\n *\r\n * Both vectors are assumed to be unit length.\r\n *\r\n * @param {quat} out the receiving quaternion.\r\n * @param {ReadonlyVec3} a the initial vector\r\n * @param {ReadonlyVec3} b the destination vector\r\n * @returns {quat} out\r\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\r\n * Performs a spherical linear interpolation with two control points\r\n *\r\n * @param {quat} out the receiving quaternion\r\n * @param {ReadonlyQuat} a the first operand\r\n * @param {ReadonlyQuat} b the second operand\r\n * @param {ReadonlyQuat} c the third operand\r\n * @param {ReadonlyQuat} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {quat} out\r\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\r\n * Sets the specified quaternion with values corresponding to the given\r\n * axes. Each axis is a vec3 and is expected to be unit length and\r\n * perpendicular to all other specified axes.\r\n *\r\n * @param {ReadonlyVec3} view the vector representing the viewing direction\r\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\r\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\r\n * @returns {quat} out\r\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {ReadonlyVec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {ReadonlyVec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the first operand\r\n * @param {ReadonlyVec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {ReadonlyVec2} a the vector to transform\r\n * @param {ReadonlyMat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {ReadonlyVec2} a The vec2 point to rotate\r\n * @param {ReadonlyVec2} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {ReadonlyVec2} a The first operand\r\n * @param {ReadonlyVec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {ReadonlyVec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {ReadonlyVec2} a The first vector.\r\n * @param {ReadonlyVec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport const Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"AUTO_DISCOVER\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"]\r\n};\r\n\r\nexport const OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\n\r\nexport const OIDC_SCOPES = [\r\n ...OIDC_DEFAULT_SCOPES,\r\n Constants.EMAIL_SCOPE\r\n];\r\n\r\n/**\r\n * Request header names\r\n */\r\nexport enum HeaderNames {\r\n CONTENT_TYPE = \"Content-Type\",\r\n RETRY_AFTER = \"Retry-After\"\r\n}\r\n\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nexport enum PersistentCacheKeys {\r\n ID_TOKEN = \"idtoken\",\r\n CLIENT_INFO = \"client.info\",\r\n ADAL_ID_TOKEN = \"adal.idtoken\",\r\n ERROR = \"error\",\r\n ERROR_DESC = \"error.description\"\r\n}\r\n\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nexport enum AADAuthorityConstants {\r\n COMMON = \"common\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\"\r\n}\r\n\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nexport enum AADServerParamKeys {\r\n CLIENT_ID = \"client_id\",\r\n REDIRECT_URI = \"redirect_uri\",\r\n RESPONSE_TYPE = \"response_type\",\r\n RESPONSE_MODE = \"response_mode\",\r\n GRANT_TYPE = \"grant_type\",\r\n CLAIMS = \"claims\",\r\n SCOPE = \"scope\",\r\n ERROR = \"error\",\r\n ERROR_DESCRIPTION = \"error_description\",\r\n ACCESS_TOKEN = \"access_token\",\r\n ID_TOKEN = \"id_token\",\r\n REFRESH_TOKEN = \"refresh_token\",\r\n EXPIRES_IN = \"expires_in\",\r\n STATE = \"state\",\r\n NONCE = \"nonce\",\r\n PROMPT = \"prompt\",\r\n SESSION_STATE = \"session_state\",\r\n CLIENT_INFO = \"client_info\",\r\n CODE = \"code\",\r\n CODE_CHALLENGE = \"code_challenge\",\r\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\r\n CODE_VERIFIER = \"code_verifier\",\r\n CLIENT_REQUEST_ID = \"client-request-id\",\r\n X_CLIENT_SKU = \"x-client-SKU\",\r\n X_CLIENT_VER = \"x-client-VER\",\r\n X_CLIENT_OS = \"x-client-OS\",\r\n X_CLIENT_CPU = \"x-client-CPU\",\r\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\r\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\r\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\r\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\r\n ID_TOKEN_HINT= \"id_token_hint\",\r\n DEVICE_CODE = \"device_code\",\r\n CLIENT_SECRET = \"client_secret\",\r\n CLIENT_ASSERTION = \"client_assertion\",\r\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\r\n TOKEN_TYPE = \"token_type\",\r\n REQ_CNF = \"req_cnf\",\r\n OBO_ASSERTION = \"assertion\",\r\n REQUESTED_TOKEN_USE = \"requested_token_use\",\r\n ON_BEHALF_OF = \"on_behalf_of\",\r\n FOCI = \"foci\"\r\n}\r\n\r\n/**\r\n * Claims request keys\r\n */\r\nexport enum ClaimsRequestKeys {\r\n ACCESS_TOKEN = \"access_token\",\r\n XMS_CC = \"xms_cc\"\r\n}\r\n\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nexport const PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n};\r\n\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nexport enum SSOTypes {\r\n ACCOUNT = \"account\",\r\n SID = \"sid\",\r\n LOGIN_HINT = \"login_hint\",\r\n ID_TOKEN = \"id_token\",\r\n DOMAIN_HINT = \"domain_hint\",\r\n ORGANIZATIONS = \"organizations\",\r\n CONSUMERS = \"consumers\",\r\n ACCOUNT_ID = \"accountIdentifier\",\r\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\r\n}\r\n\r\n/**\r\n * Disallowed extra query parameters.\r\n */\r\nexport const BlacklistedEQParams = [\r\n SSOTypes.SID,\r\n SSOTypes.LOGIN_HINT\r\n];\r\n\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nexport const CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n\r\n/**\r\n * The method used to encode the code verifier for the code challenge parameter. can be one\r\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\r\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\r\n */\r\nexport const CodeChallengeMethodValuesArray: string[] = [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n];\r\n\r\n/**\r\n * allowed values for response_mode\r\n */\r\nexport enum ResponseMode {\r\n QUERY = \"query\",\r\n FRAGMENT = \"fragment\",\r\n FORM_POST = \"form_post\"\r\n}\r\n\r\n/**\r\n * allowed grant_type\r\n */\r\nexport enum GrantType {\r\n IMPLICIT_GRANT = \"implicit\",\r\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\r\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\r\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\r\n REFRESH_TOKEN_GRANT = \"refresh_token\",\r\n DEVICE_CODE_GRANT = \"device_code\",\r\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\r\n}\r\n\r\n/**\r\n * Account types in Cache\r\n */\r\nexport enum CacheAccountType {\r\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\r\n ADFS_ACCOUNT_TYPE = \"ADFS\",\r\n MSAV1_ACCOUNT_TYPE = \"MSA\",\r\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\r\n}\r\n\r\n/**\r\n * Separators used in cache\r\n */\r\nexport enum Separators {\r\n CACHE_KEY_SEPARATOR = \"-\",\r\n CLIENT_INFO_SEPARATOR = \".\"\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CredentialType {\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n}\r\n\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nexport enum CacheSchemaType {\r\n ACCOUNT = \"Account\",\r\n CREDENTIAL = \"Credential\",\r\n ID_TOKEN = \"IdToken\",\r\n ACCESS_TOKEN = \"AccessToken\",\r\n REFRESH_TOKEN = \"RefreshToken\",\r\n APP_METADATA = \"AppMetadata\",\r\n TEMPORARY = \"TempCache\",\r\n TELEMETRY = \"Telemetry\",\r\n UNDEFINED = \"Undefined\",\r\n THROTTLING = \"Throttling\"\r\n}\r\n\r\n/**\r\n * Combine all cache types\r\n */\r\nexport enum CacheType {\r\n ADFS = 1001,\r\n MSA = 1002,\r\n MSSTS = 1003,\r\n GENERIC = 1004,\r\n ACCESS_TOKEN = 2001,\r\n REFRESH_TOKEN = 2002,\r\n ID_TOKEN = 2003,\r\n APP_METADATA = 3001,\r\n UNDEFINED = 9999\r\n}\r\n\r\n/**\r\n * More Cache related constants\r\n */\r\nexport const APP_METADATA = \"appmetadata\";\r\nexport const ClientInfo = \"client_info\";\r\nexport const THE_FAMILY_ID = \"1\";\r\n\r\nexport const AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\n\r\nexport enum AuthorityMetadataSource {\r\n CONFIG = \"config\",\r\n CACHE = \"cache\",\r\n NETWORK = \"network\"\r\n}\r\n\r\nexport const SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 2,\r\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\r\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\r\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n\r\n/**\r\n * Type of the authentication request\r\n */\r\nexport enum AuthenticationScheme {\r\n POP = \"pop\",\r\n BEARER = \"Bearer\"\r\n}\r\n\r\n/**\r\n * Constants related to throttling\r\n */\r\nexport const ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\n\r\nexport const Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n\r\n/**\r\n * Password grant parameters\r\n */\r\nexport enum PasswordGrantConstants {\r\n username = \"username\",\r\n password = \"password\"\r\n}\r\n\r\n/**\r\n * Response codes\r\n */\r\nexport enum ResponseCodes {\r\n httpSuccess = 200,\r\n httpBadRequest = 400\r\n}\r\n","module.exports = require(\"regenerator-runtime\");\n","import { vec2, vec3, vec4, mat4, mat3, quat } from \"gl-matrix\";\nimport { MathConst } from \"./wContants.js\";\n\nclass wMath {\n constructor() { }\n\n static polarToCartesian(azimuth, theta) {\n var v = vec3.create();\n v[0] = Math.cos(theta) * Math.sin(azimuth);\n v[1] = Math.sin(theta);\n v[2] = Math.cos(theta) * Math.cos(azimuth);\n return v;\n }\n\n static cartesianToPolar(v) {\n var res = vec2.fromValues(0.0, 0.0);\n const l = vec3.length(v);\n if (l < 0.00001) return res;\n\n let tmp = vec3.fromValues(v[0] / l, v[1] / l, v[2] / l);\n res[0] = Math.atan2(tmp[0], tmp[2]);\n res[1] = Math.asin(tmp[1]);\n return res;\n }\n\n static angleWrappingTwoPi(ang) {\n let angle = ang;\n\n if (angle > MathConst.fTWO_PI) {\n angle = angle - MathConst.fTWO_PI;\n }\n\n if (angle < 0.0) {\n angle += MathConst.fTWO_PI;\n }\n return angle;\n }\n\n // creates a unit quat that rotates from vFrom to Vto\n static getQuatFromUnitVectors(vFrom, vTo) {\n var result = quat.create();\n let r = vec3.dot(vFrom, vTo) + 1.0;\n let q = quat.create();\n\n if (r < 0.00001) {\n r = 0.0;\n if (Math.abs(vFrom[0]) > Math.abs(vFrom[2])) {\n q[0] = -vFrom[1];\n q[1] = vFrom[0];\n q[2] = 0.0;\n q[3] = r;\n } else {\n q[0] = 0.0;\n q[1] = -vFrom[2];\n q[2] = vFrom[1];\n q[3] = r;\n }\n } else {\n q[0] = vFrom[1] * vTo[2] - vFrom[2] * vTo[1];\n q[1] = vFrom[2] * vTo[0] - vFrom[0] * vTo[2];\n q[2] = vFrom[0] * vTo[1] - vFrom[1] * vTo[0];\n q[3] = r;\n }\n\n quat.normalize(result, q);\n return result;\n }\n\n static getUnitQuat() { }\n\n /*static rayPlaneIntersection(ray, plane){\n\n const DN = vec3::dot(ray.getDirection(),glm::vec3(planeEq_.x, planeEq_.y, planeEq_.z));\n if (std::fabs(DN) < Fundament::fEps) return false;\n\n intersection.x = (-planeEq_.w - glm::dot(ray.getOrigin(), glm::vec3(planeEq_.x, planeEq_.y, planeEq_.z))) / DN;\n return (intersection.x >= 0.0f);\n\n }*/\n\n static printVec3(v) {\n console.log(\"(\" + v[0] + \",\" + v[1] + \",\" + v[2] + \")\");\n }\n\n static printVec4(v) {\n console.log(\"(\" + v[0] + \",\" + v[1] + \",\" + v[2] + \",\" + v[3] + \")\");\n }\n\n /* use clampF instead\n static clamp(value, valueMin, valueMax) {\n return Math.max(Math.min(value, valueMax), valueMin);\n }\n */\n\n static smoothStep(edge0, edge1, x) {\n let t = this.clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n return t * t * (3.0 - 2.0 * t);\n }\n\n static vec2X(v) { return v[0]; }\n static vec2Y(v) { return v[1]; }\n static vec2GetOrthogonal(v) { return vec2.fromValues(-v[1], v[0]); }\n static vec2GetOrthogonalNegative(v) { return vec2.fromValues(v[1], -v[0]); }\n\n static vec2Add(v0, v1) {\n var v = vec2.create();\n vec2.add(v, v0, v1);\n return v;\n }\n\n static vec2Sub(v0, v1) {\n var v = vec2.create();\n vec2.sub(v, v0, v1);\n return v;\n }\n\n static vec2Scale(v0, s) {\n var v = vec2.create();\n vec2.scale(v, v0, s);\n return v;\n }\n\n static vec2Normalize(v0) {\n var v = vec2.create();\n vec2.normalize(v, v0);\n return v;\n }\n\n static vec3X(v) { return v[0]; }\n static vec3Y(v) { return v[1]; }\n static vec3Z(v) { return v[2]; }\n\n // returns a vec3 with random values in the range [minValue, maxValue]\n static getRandomVec3(minValue, maxValue) {\n const valueRange = maxValue - minValue;\n var randVec = vec3.fromValues(Math.random() * valueRange + minValue, Math.random() * valueRange + minValue, Math.random() * valueRange + minValue);\n return randVec;\n }\n\n static vec3Normalize(v0) {\n var v = vec3.create();\n vec3.normalize(v, v0);\n return v;\n }\n\n static vec3Add(v0, v1) {\n var v = vec3.create();\n vec3.add(v, v0, v1);\n return v;\n }\n\n static vec3Sub(v0, v1) {\n var v = vec3.create();\n vec3.sub(v, v0, v1);\n return v;\n }\n\n static vec3Mult(v0, v1) {\n var v = vec3.create();\n vec3.multiply(v, v0, v1);\n return v;\n }\n\n static vec3Scale(v0, s) {\n var v = vec3.create();\n vec3.scale(v, v0, s);\n return v;\n }\n\n static vec3Max(v0, v1) {\n var v = vec3.fromValues(Math.max(v0[0], v1[0]), Math.max(v0[1], v1[1]), Math.max(v0[2], v1[2]));\n return v;\n }\n\n static vec3Min(v0, v1) {\n var v = vec3.fromValues(Math.min(v0[0], v1[0]), Math.min(v0[1], v1[1]), Math.min(v0[2], v1[2]));\n return v;\n }\n\n static vec3MaxValue(v) {\n return Math.max(Math.max(v[0], v[1]), v[2]);\n }\n\n static vec3MinValue(v) {\n return Math.min(Math.min(v[0], v[1]), v[2]);\n }\n\n static addVec3ToFloatArray(v3, vertexArray, index) {\n for (let i = 0; i < 3; i++) {\n vertexArray[index + i] = v3[i];\n }\n }\n\n static vec4X(v) { return v[0]; }\n static vec4Y(v) { return v[1]; }\n static vec4Z(v) { return v[2]; }\n static vec4W(v) { return v[3]; }\n\n static vec4FromVec3(v3) {\n return vec4.fromValues(v3[0], v3[1], v3[2], 0.0);\n }\n\n static vec4Add(v0, v1) {\n var v = vec4.create();\n vec4.add(v, v0, v1);\n return v;\n }\n\n static vec4Sub(v0, v1) {\n var v = vec4.create();\n vec4.sub(v, v0, v1);\n return v;\n }\n\n static vec4Mult(v0, v1) {\n var v = vec4.create();\n vec4.multiply(v, v0, v1);\n return v;\n }\n\n static vec4Scale(v0, s) {\n var v = vec4.create();\n vec4.scale(v, v0, s);\n return v;\n }\n\n static setMat3ToZero(mat) {\n for (let i = 0; i < 9; i++) {\n mat[i] = 0.0;\n }\n }\n\n static outerProduct(v0, v1) {\n var outerProd = mat3.fromValues(\n v0[0] * v1[0],\n v0[0] * v1[1],\n v0[0] * v1[2],\n\n v0[1] * v1[0],\n v0[1] * v1[1],\n v0[1] * v1[2],\n\n v0[2] * v1[0],\n v0[2] * v1[1],\n v0[2] * v1[2]\n );\n return outerProd;\n }\n\n static mat3Add(mat, matAdd) {\n for (let i = 0; i < 9; i++) {\n mat[i] += matAdd[i];\n }\n }\n\n static mat3Scale(mat, s) {\n for (let i = 0; i < 9; i++) {\n mat[i] *= s;\n }\n }\n\n static mat3GetRow(mat, index) {\n return vec3.fromValues(mat[index * 3], mat[(index * 3) + 1], mat[(index * 3) + 2]);\n }\n\n static mat3GetCol(mat, index) {\n return vec3.fromValues(mat[index], mat[index + 3], mat[index + 6]);\n }\n\n\n static setMat4ToZero(mat) {\n for (let i = 0; i < 16; i++) {\n mat[i] = 0.0;\n }\n }\n\n static mat4GetRow(mat, index) {\n return vec4.fromValues(mat[index * 4], mat[(index * 4) + 1], mat[(index * 4) + 2], mat[(index * 4) + 3]);\n }\n\n static mat4GetCol(mat, index) {\n return vec4.fromValues(mat[index], mat[index + 4], mat[index + 8], mat[index + 12]);\n }\n\n static mat4Mult(m0, m1) {\n var m = mat4.create();\n mat4.multiply(m, m0, m1);\n return m;\n }\n\n static mat4FromMat3(m3) {\n var m = mat4.create();\n m[0] = m3[0];\n m[1] = m3[1];\n m[2] = m3[2];\n\n m[4] = m3[3];\n m[5] = m3[4];\n m[6] = m3[5];\n\n m[8] = m3[6];\n m[9] = m3[7];\n m[10] = m3[8];\n return m;\n }\n\n static addVec4ToFloatArray(v4, vertexArray, index) {\n for (let i = 0; i < 4; i++) {\n vertexArray[index + i] = v4[i];\n }\n }\n\n static perspectiveZO(fovy, aspect, near, far) {\n var out = mat4.create();\n const f = 1.0 / Math.tan(fovy / 2);\n out[0] = f / aspect;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = f;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = 0.0;\n out[9] = 0.0;\n out[11] = -1;\n out[12] = 0.0;\n out[13] = 0.0;\n out[15] = 0.0;\n\n if (far != null && far !== Infinity) {\n const nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1.0;\n out[14] = -near;\n }\n\n return out;\n }\n\n static vectorProjection(v, n) {\n let tmp = vec3.create();\n vec3.scale(tmp, n, vec3.dot(n, v));\n vec3.scale(tmp, tmp, 1.0 / vec3.dot(n, n));\n return tmp;\n }\n\n static vectorProjectionV2(v, n) {\n let tmp = vec2.create();\n vec2.scale(tmp, n, vec2.dot(n, v));\n vec2.scale(tmp, tmp, 1.0 / vec2.dot(n, n));\n return tmp;\n }\n\n static gramOrthonomalization(v0, v1, v2) {\n let u0 = vec3.create();\n vec3.copy(u0, v0);\n\n let e0 = vec3.create();\n vec3.normalize(e0, u0);\n\n let u1 = vec3.create();\n vec3.sub(u1, v1, this.vectorProjection(v1, v0));\n\n let e1 = vec3.create();\n vec3.normalize(e1, u1);\n\n let u2 = vec3.create();\n vec3.subtract(u2, v2, this.vectorProjection(v2, v0));\n vec3.subtract(u2, u2, this.vectorProjection(v2, v1));\n\n let e2 = vec3.create();\n vec3.normalize(e2, u2);\n\n return [e0, e1, e2];\n }\n\n static frisvadONB(n) {\n // http://orbit.dtu.dk/files/126824972/onb_frisvad_jgt2012_v2.pdf\n\n if (n[2] < -0.9999999) {\n // Handle the singularity\n let b1 = vec3.fromValues(0.0, -1.0, 0.0);\n let b2 = vec3.fromValues(-1.0, 0.0, 0.0);\n return [b1, b2];\n }\n let a = 1.0 / (1.0 + n[2]);\n let b = -n[0] * n[1] * a;\n let b1 = vec3.fromValues(1.0 - n[0] * n[0] * a, b, -n[0]);\n let b2 = vec3.fromValues(b, 1.0 - n[1] * n[1] * a, -n[1]);\n\n return [b1, b2];\n }\n\n static getIndexOfMinComponent(v) {\n return v[0] < v[1] && v[0] < v[2] ? 0 : v[1] < v[2] ? 1 : 2;\n }\n\n static clamp(v, minVal, maxVal) {\n let vOut = vec3.create();\n vOut[0] = Math.min(Math.max(v[0], minVal), maxVal);\n vOut[1] = Math.min(Math.max(v[1], minVal), maxVal);\n vOut[2] = Math.min(Math.max(v[2], minVal), maxVal);\n return vOut;\n }\n\n static clampF(f, minVal, maxVal) {\n return Math.min(Math.max(f, minVal), maxVal);\n }\n\n static getSortedIndices(v) {\n var indices = [0, 1, 2];\n for (let i = 0; i < 3; i++) {\n for (let j = i + 1; j < 3; j++) {\n if (v[indices[i]] > v[indices[j]]) {\n const tmp = indices[i];\n indices[i] = indices[j];\n indices[j] = tmp;\n }\n }\n }\n return indices;\n }\n\n static calculateEigenValues(symMat3, eigenValues) {\n\n let m11 = symMat3[0];\n let m12 = symMat3[1];\n let m13 = symMat3[2];\n\n let m22 = symMat3[4];\n let m23 = symMat3[5];\n let m33 = symMat3[8];\n\n var eigenVectors = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]; // creates identity\n\n for (let a = 0; a < 16; a++) {\n // Exit if off-diagonal entries small enough.\n if ((Math.abs(m12) < MathConst.fEps) && (Math.abs(m13) < MathConst.fEps) && (Math.abs(m23) < MathConst.fEps)) break;\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n let u = (m22 - m11) * 0.5 / m12;\n let u2 = u * u;\n let u2p1 = u2 + 1.0;\n let t = (u2p1 != u2) ? ((u < 0.0) ? -1.0 : 1.0) * (Math.sqrt(u2p1) - Math.abs(u)) : 0.5 / u;\n let c = 1.0 / Math.sqrt(t * t + 1.0);\n let s = c * t;\n m11 -= t * m12;\n m22 += t * m12;\n m12 = 0.0;\n\n const tmp = c * m13 - s * m23;\n m23 = s * m13 + c * m23;\n m13 = tmp;\n\n for (let i = 0; i < 3; i++) {\n const temp = c * eigenVectors[i][0] - s * eigenVectors[i][1];\n eigenVectors[i][1] = s * eigenVectors[i][0] + c * eigenVectors[i][1];\n eigenVectors[i][0] = temp;\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n let u = (m33 - m11) * 0.5 / m13;\n let u2 = u * u;\n let u2p1 = u2 + 1.0;\n let t = (u2p1 != u2) ? ((u < 0.0) ? -1.0 : 1.0) * (Math.sqrt(u2p1) - Math.abs(u)) : 0.5 / u;\n let c = 1.0 / Math.sqrt(t * t + 1.0);\n let s = c * t;\n\n m11 -= t * m13;\n m33 += t * m13;\n m13 = 0.0;\n\n const tmp = c * m12 - s * m23;\n m23 = s * m12 + c * m23;\n m12 = tmp;\n\n for (let i = 0; i < 3; i++) {\n const temp = c * eigenVectors[i][0] - s * eigenVectors[i][2];\n eigenVectors[i][2] = s * eigenVectors[i][0] + c * eigenVectors[i][2];\n eigenVectors[i][0] = temp;\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n let u = (m33 - m22) * 0.5 / m23;\n let u2 = u * u;\n let u2p1 = u2 + 1.0;\n let t = (u2p1 != u2) ? ((u < 0.0) ? -1.0 : 1.0) * (Math.sqrt(u2p1) - Math.abs(u)) : 0.5 / u;\n let c = 1.0 / Math.sqrt(t * t + 1.0);\n let s = c * t;\n\n m22 -= t * m23;\n m33 += t * m23;\n m23 = 0.0;\n\n const tmp = c * m12 - s * m13;\n m13 = s * m12 + c * m13;\n m12 = tmp;\n\n for (let i = 0; i < 3; i++) {\n const temp = c * eigenVectors[i][1] - s * eigenVectors[i][2];\n eigenVectors[i][2] = s * eigenVectors[i][1] + c * eigenVectors[i][2];\n eigenVectors[i][1] = temp;\n }\n }\n }\n\n eigenValues[0] = m11;\n eigenValues[1] = m22;\n eigenValues[2] = m33;\n\n // sort the out put by eigenvalues in ascending order\n var sortedIndices = wMath.getSortedIndices(eigenValues);\n var tmp0 = vec3.create();\n vec3.copy(tmp0, eigenValues);\n\n var tmp1 = mat3.fromValues(\n eigenVectors[0][0], eigenVectors[0][1], eigenVectors[0][2],\n eigenVectors[1][0], eigenVectors[1][1], eigenVectors[1][2],\n eigenVectors[2][0], eigenVectors[2][1], eigenVectors[2][2]);\n\n var sortedEigenVectors = mat3.create();\n\n eigenValues[0] = tmp0[sortedIndices[0]];\n eigenValues[1] = tmp0[sortedIndices[1]];\n eigenValues[2] = tmp0[sortedIndices[2]];\n\n sortedEigenVectors[0] = tmp1[sortedIndices[0]];\n sortedEigenVectors[1] = tmp1[sortedIndices[0] + 3];\n sortedEigenVectors[2] = tmp1[sortedIndices[0] + 6];\n\n sortedEigenVectors[3] = tmp1[sortedIndices[1]];\n sortedEigenVectors[4] = tmp1[sortedIndices[1] + 3];\n sortedEigenVectors[5] = tmp1[sortedIndices[1] + 6];\n\n sortedEigenVectors[6] = tmp1[sortedIndices[2]];\n sortedEigenVectors[7] = tmp1[sortedIndices[2] + 3];\n sortedEigenVectors[8] = tmp1[sortedIndices[2] + 6];\n\n return sortedEigenVectors;\n }\n\n //Van der Corput radical inverse\n static radicalInverse_VdC(i) {\n var bits = new Uint32Array(1);\n bits[0] = i;\n bits[0] = ((bits[0] << 16) | (bits[0] >> 16)) >>> 0;\n bits[0] = ((bits[0] & 0x55555555) << 1) | ((bits[0] & 0xAAAAAAAA) >>> 1) >>> 0;\n bits[0] = ((bits[0] & 0x33333333) << 2) | ((bits[0] & 0xCCCCCCCC) >>> 2) >>> 0;\n bits[0] = ((bits[0] & 0x0F0F0F0F) << 4) | ((bits[0] & 0xF0F0F0F0) >>> 4) >>> 0;\n bits[0] = ((bits[0] & 0x00FF00FF) << 8) | ((bits[0] & 0xFF00FF00) >>> 8) >>> 0;\n return bits[0] * 2.3283064365386963e-10; // / 0x100000000 or / 4294967296\n }\n\n static hammersley(i, n) {\n return [i / n, wMath.radicalInverse_VdC(i)];\n }\n\n static isPowerOfTwo(x) {\n return (Math.log2(x) % 1 === 0);\n }\n\n static lineLineIntersection(\n line0x0, line0y0, line0x1, line0y1,\n line1x0, line1y0, line1x1, line1y1) {\n\n const x1 = line0x0;\n const y1 = line0y0;\n\n const x2 = line0x1;\n const y2 = line0y1;\n\n const x3 = line1x0;\n const y3 = line1y0;\n\n const x4 = line1x1;\n const y4 = line1y1;\n\n const det = ((x4 - x3) * (y1 - y2)) - ((x1 - x2) * (y4 - y3));\n\n if (det == 0.0) return -1;\n\n const invDet = 1.0 / det;\n let t = (((y3 - y4) * (x1 - x3)) + ((x4 - x3) * (y1 - y3))) * invDet;\n const l2T = (((y1 - y2) * (x1 - x3)) + ((x2 - x1) * (y1 - y3))) * invDet;\n\n let validT = (t >= 0.0 && t <= 1.0 && l2T > 0.0 && l2T <= 1.0);\n t = (validT) ? t : -1.0;\n\n return t;\n }\n\n static calculateWindingNumber2D(point, polygon) {\n\n const L0 = vec2.fromValues(point[0], point[1]);\n const L1 = vec2.fromValues(L0[0] + 1000.0, L0[1]); // perhaps calculate polygon bounding box, but 1000 has to do for now\n let windingNumber = 0;\n\n for (let i = 0; i < polygon.length; i++) {\n const P0 = polygon[i];\n const P1 = (i < polygon.length - 1) ? polygon[i + 1] : polygon[0];\n\n if (this.lineLineIntersection(\n L0[0], L0[1],\n L1[0], L1[1],\n P0[0], P0[1],\n P1[0], P1[1]\n ) >= 0.0) {\n windingNumber++;\n }\n\n }\n return windingNumber;\n }\n\n static isPointLeft(A, B, p) // http://geomalgorithms.com/a03-_inclusion.html\n {\n return ((B[0] - A[0]) * (p[1] - A[1]) - (p[0] - A[0]) * (B[1] - A[1])) >= 0.0;\n }\n\n // return 0 == outside, 1 == inside.\n static getWindingNumber(P, polygon) {\n if (polygon.length == 0) return 1;\n\n let windingNumber = 0;\n const vertexCount = polygon.length;\n\n for (let i = 0; i < vertexCount; i++) {\n const A = polygon[i];\n const B = polygon[(i + 1) % vertexCount];\n\n if (A[1] <= P[1]) // start y <= P[1]\n {\n if (B[1] > P[1]) // an upward crossing\n {\n if (this.isPointLeft(A, B, P)) // P left of edge\n {\n ++windingNumber;\n }\n }\n }\n else {\n if (B[1] <= P[1]) // start y > P.y (no test needed)\n {\n if (!this.isPointLeft(A, B, P)) // a downward crossing\n {\n --windingNumber; // have a valid down intersect\n }\n }\n }\n }\n return windingNumber;\n }\n\n // assume planeEq is normalized\n static getSignedDistanceToPlane(pos, planeEq) {\n return vec3.dot(pos, vec3.fromValues(planeEq[0], planeEq[1], planeEq[2])) + planeEq[3];\n }\n\n static getPlaneOrigin(planeEq) {\n let origo = vec3.fromValues(0.0, 0.0, 0.0);\n let signedDistToPlane = this.getSignedDistanceToPlane(origo, planeEq);\n return this.vec3Add(origo, vec3.fromValues(planeEq[0] * signedDistToPlane, planeEq[1] * signedDistToPlane, planeEq[2] * signedDistToPlane));\n }\n\n // web mercator projection\n static LatLongitudeToPosition(lat, lng, tileSize) {\n const lambda2 = lng * MathConst.fDegToRad;\n const phi2 = lat * MathConst.fDegToRad;;\n const x = (tileSize * (lambda2 + MathConst.fPI)) / (2.0 * MathConst.fPI);\n const y = (tileSize * (MathConst.fPI + Math.log(Math.tan(MathConst.fPI_QUARTER + phi2 * 0.5)))) / (2.0 * MathConst.fPI);\n return vec2.fromValues(x, y);\n }\n\n static positionToLatLongitude(pos, tileSize) {\n const lambda2 = (pos[0] / tileSize) * (2.0 * MathConst.fPI) - MathConst.fPI;\n const phi2 = 2.0 * (Math.atan(Math.exp((pos[1] / tileSize) * (2.0 * MathConst.fPI) - MathConst.fPI)) - MathConst.fPI_QUARTER);\n return vec2.fromValues(lambda2 * MathConst.fRadToDeg, phi2 * MathConst.fRadToDeg);\n }\n\n}\nexport { wMath };\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\n\r\n/**\r\n * Constants\r\n */\r\nexport const BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n POLL_INTERVAL_MS: 50,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\n\r\nexport enum BrowserCacheLocation {\r\n LocalStorage = \"localStorage\",\r\n SessionStorage = \"sessionStorage\",\r\n MemoryStorage = \"memoryStorage\"\r\n}\r\n\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nexport enum HTTP_REQUEST_TYPE {\r\n GET = \"GET\",\r\n POST = \"POST\"\r\n}\r\n\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nexport enum TemporaryCacheKeys {\r\n AUTHORITY = \"authority\",\r\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\r\n SESSION_STATE = \"session.state\",\r\n REQUEST_STATE = \"request.state\",\r\n NONCE_IDTOKEN = \"nonce.id_token\",\r\n ORIGIN_URI = \"request.origin\",\r\n RENEW_STATUS = \"token.renew.status\",\r\n URL_HASH = \"urlHash\",\r\n REQUEST_PARAMS = \"request.params\",\r\n SCOPES = \"scopes\",\r\n INTERACTION_STATUS_KEY = \"interaction.status\"\r\n}\r\n\r\n/**\r\n * API Codes for Telemetry purposes. \r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nexport enum ApiId {\r\n acquireTokenRedirect = 861,\r\n acquireTokenPopup = 862,\r\n ssoSilent = 863,\r\n acquireTokenSilent_authCode = 864,\r\n handleRedirectPromise = 865,\r\n acquireTokenSilent_silentFlow = 61,\r\n logout = 961,\r\n logoutPopup = 962\r\n}\r\n\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nexport enum InteractionType {\r\n Redirect = \"redirect\",\r\n Popup = \"popup\",\r\n Silent = \"silent\"\r\n}\r\n\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nexport enum InteractionStatus {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n Startup = \"startup\",\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n Login = \"login\",\r\n /**\r\n * Status set when logout call occuring\r\n */ \r\n Logout = \"logout\",\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n AcquireToken = \"acquireToken\",\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n HandleRedirect = \"handleRedirect\",\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n None = \"none\"\r\n}\r\n\r\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nexport const KEY_FORMAT_JWK = \"jwk\";\r\n\r\n// Supported wrapper SKUs\r\nexport enum WrapperSKU {\r\n React = \"@azure/msal-react\",\r\n Angular = \"@azure/msal-angular\"\r\n}\r\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\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}","module.exports = require(\"regenerator-runtime\");\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = /*#__PURE__*/React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends({}, Component.defaultProps, props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return null; // return new Error(\n // 'Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","import { vec3, vec4 } from \"gl-matrix\";\n\nexport const Vec4Colors = {\n White: vec4.fromValues(1.0, 1.0, 1.0, 1.0),\n Black: vec4.fromValues(0.0, 0.0, 0.0, 1.0),\n Red: vec4.fromValues(1.0, 0.0, 0.0, 1.0),\n DarkRed: vec4.fromValues(0.5, 0.0, 0.0, 1.0),\n Green: vec4.fromValues(0.0, 1.0, 0.0, 1.0),\n DarkGreen: vec4.fromValues(0.0, 0.5, 0.0, 1.0),\n Blue: vec4.fromValues(0.0, 0.0, 1.0, 1.0),\n DarkBlue: vec4.fromValues(0.0, 0.0, 0.5, 1.0),\n Yellow: vec4.fromValues(1.0, 1.0, 0.0, 1.0),\n Orange: vec4.fromValues(1.0, 0.5, 0.0, 1.0),\n DarkGrey: vec4.fromValues(0.25, 0.25, 0.25, 1.0),\n Grey: vec4.fromValues(0.5, 0.5, 0.5, 1.0),\n LightGrey: vec4.fromValues(0.75, 0.75, 0.75, 1.0),\n};\n\nexport const Vec4Basics = {\n Zero: vec4.fromValues(0.0, 0.0, 0.0, 1.0),\n X: vec4.fromValues(1.0, 0.0, 0.0, 1.0),\n Y: vec4.fromValues(0.0, 1.0, 0.0, 1.0),\n Z: vec4.fromValues(0.0, 0.0, 1.0, 1.0),\n};\n\nexport const Vec3Basics = {\n Zero: vec3.fromValues(0.0, 0.0, 0.0),\n X: vec3.fromValues(1.0, 0.0, 0.0),\n Y: vec3.fromValues(0.0, 1.0, 0.0),\n Z: vec3.fromValues(0.0, 0.0, 1.0),\n};\n\nexport const MathConst = {\n fEps: 1.0e-7,\n fEps2: 1.0e-5,\n fPI_HALF: 1.57079632679,\n fPI_QUARTER : 0.78539816339,\n fPI: 3.14159265359,\n fTWO_PI: 6.28318530718,\n fInvPi: 1.0 / 3.14159265359,\n fInvTwoPi: 1.0 / 6.28318530718,\n fSqrt2: Math.sqrt(2.0),\n fSqrt3: Math.sqrt(3.0),\n fE: 2.7182818284,\n fGoldenRatio: 1.6180339887,\n fOneMinusEps: 1.0 - 1.0e-7,\n fDegToRad: 3.14159265359 / 180.0,\n fRadToDeg: 180.0 / 3.14159265359,\n};\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n return undefined;\n}\nexport function functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n return array1.filter(function (x) {\n return array2.indexOf(x) === -1;\n });\n}\nexport function replaceAt(array, index, value) {\n var copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n queryKey: arg1,\n queryFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n queryKey: arg1\n });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n mutationKey: arg1,\n mutationFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n mutationKey: arg1\n });\n }\n\n if (typeof arg1 === 'function') {\n return _extends({}, arg2, {\n mutationFn: arg1\n });\n }\n\n return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [_extends({}, arg2, {\n queryKey: arg1\n }), arg3] : [arg1 || {}, arg2];\n}\nexport function matchQuery(filters, query) {\n var active = filters.active,\n exact = filters.exact,\n fetching = filters.fetching,\n inactive = filters.inactive,\n predicate = filters.predicate,\n queryKey = filters.queryKey,\n stale = filters.stale;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n var isActive;\n\n if (inactive === false || active && !inactive) {\n isActive = true;\n } else if (active === false || inactive && !active) {\n isActive = false;\n }\n\n if (typeof isActive === 'boolean' && query.isActive() !== isActive) {\n return false;\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nexport function matchMutation(filters, mutation) {\n var exact = filters.exact,\n fetching = filters.fetching,\n predicate = filters.predicate,\n mutationKey = filters.mutationKey;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n var asArray = ensureQueryKeyArray(queryKey);\n return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n return JSON.stringify(value, function (_, val) {\n return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n result[key] = val[key];\n return result;\n }, {}) : val;\n });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(function (key) {\n return !partialDeepEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n var array = Array.isArray(a) && Array.isArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n var ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n var prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport function isQueryKey(value) {\n return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n return value instanceof Error;\n}\nexport function sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\n\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nexport class ClientAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientAuthError\";\r\n\r\n Object.setPrototypeOf(this, ClientAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\r\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n static createClientInfoEmptyError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\r\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\r\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n static createTokenNullOrEmptyError(invalidRawTokenString: string) : ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\r\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\r\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\r\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\r\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\r\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\r\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n static createStateMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\r\n ClientAuthErrorMessage.stateMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n static createStateNotFoundError(missingState: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\r\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n static createNonceMismatchError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\r\n ClientAuthErrorMessage.nonceMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\r\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n static createNoTokensFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noTokensFoundError.code, ClientAuthErrorMessage.noTokensFoundError.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\r\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\r\n }\r\n\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\r\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n }\r\n\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\r\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\r\n }\r\n\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n static createAppendScopeSetError(appendError: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\r\n }\r\n\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n static createEmptyInputScopeSetError(givenScopeSet: ScopeSet): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc} Given ScopeSet: ${givenScopeSet}`);\r\n }\r\n\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n static createDeviceCodeCancelledError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n static createDeviceCodeExpiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n static createNoAccountInSilentRequestError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n static createInvalidCacheEnvironmentError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n static createNoAccountFoundError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n }\r\n\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n static createCachePluginError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\r\n }\r\n\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n static createUnexpectedAccountTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n static createUnexpectedCredentialTypeError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidAssertionError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n static createInvalidCredentialError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\r\n }\r\n\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n static createRefreshRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n static createUserTimeoutReachedError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n }\r\n\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n static createTokenClaimsRequiredError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n }\r\n\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n }\r\n}\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n static decodeAuthToken(authToken: string): DecodedAuthToken {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n const matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\r\n }\r\n const crackedToken: DecodedAuthToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n }\r\n\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n static isEmpty(str?: string): boolean {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n }\r\n\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj \r\n */\r\n static isEmptyObj(strObj?: string): boolean {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n const obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n } catch (e) {}\r\n }\r\n return true;\r\n }\r\n\r\n static startsWith(str: string, search: string): boolean {\r\n return str.indexOf(search) === 0;\r\n }\r\n\r\n static endsWith(str: string, search: string): boolean {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n }\r\n\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n static queryStringToObject(query: string): T {\r\n let match: Array | null; // Regex for replacing addition symbol with a space\r\n const pl = /\\+/g;\r\n const search = /([^&=]+)=([^&]*)/g;\r\n const decode = (s: string): string => decodeURIComponent(decodeURIComponent(s.replace(pl, \" \")));\r\n const obj: {} = {};\r\n match = search.exec(query);\r\n while (match) {\r\n obj[decode(match[1])] = decode(match[2]);\r\n match = search.exec(query);\r\n }\r\n return obj as T;\r\n }\r\n\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n static trimArrayEntries(arr: Array): Array {\r\n return arr.map(entry => entry.trim());\r\n }\r\n\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n static removeEmptyStringsFromArray(arr: Array): Array {\r\n return arr.filter(entry => {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n }\r\n\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n static jsonParseHelper(str: string): T | null {\r\n try {\r\n return JSON.parse(str) as T;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n static matchPattern(pattern: string, input: string): boolean {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n const regex: RegExp = new RegExp(pattern.replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\"));\r\n\r\n return regex.test(input);\r\n }\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\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(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\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}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popUpWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentSSOInsufficientInfoError: {\r\n code: \"silent_sso_error\",\r\n desc: \"Silent SSO could not be completed - insufficient information was provided. Please provide either a loginHint or sid.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request in found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\r\n this.name = \"BrowserAuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail \r\n */\r\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\r\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail \r\n */\r\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\r\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method \r\n */\r\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\r\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n static createEmptyNavigationUriError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue \r\n */\r\n static createEmptyHashError(hashValue: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createHashDoesNotContainStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createUnableToParseStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n static createInteractionInProgressError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail \r\n */\r\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\r\n let errorMessage = BrowserAuthErrorMessage.popUpWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popUpWindowError.code, errorMessage);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail \r\n */\r\n static createEmptyWindowCreatedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n static createUserCancelledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\r\n BrowserAuthErrorMessage.userCancelledError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n static createMonitorPopupTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n static createMonitorIframeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe.\r\n * @param windowParentCheck \r\n */\r\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, \r\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\r\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns \r\n */\r\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, \r\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n static createIframeClosedPrematurelyError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the login_hint, sid or account object is not provided in the ssoSilent API.\r\n */\r\n static createSilentSSOInsufficientInfoError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentSSOInsufficientInfoError.code, BrowserAuthErrorMessage.silentSSOInsufficientInfoError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n static createNoAccountError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n static createNoTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n static createAuthRequestNotSetError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\r\n BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n static createNoCachedAuthorityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\r\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n static createNonBrowserEnvironmentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n static createDatabaseNotOpenError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n static createNoNetworkConnectivityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n}\r\n","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nexport enum EventType {\r\n LOGIN_START = \"msal:loginStart\",\r\n LOGIN_SUCCESS = \"msal:loginSuccess\",\r\n LOGIN_FAILURE = \"msal:loginFailure\",\r\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\r\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\r\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\r\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\r\n SSO_SILENT_START = \"msal:ssoSilentStart\",\r\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\r\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\r\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\r\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\r\n POPUP_OPENED = \"msal:popupOpened\",\r\n LOGOUT_START = \"msal:logoutStart\",\r\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\r\n LOGOUT_FAILURE = \"msal:logoutFailure\",\r\n LOGOUT_END = \"msal:logoutEnd\"\r\n}\r\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n }\r\n};\r\n\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nexport class AuthError extends Error {\r\n\r\n /**\r\n * Short string denoting error\r\n */\r\n errorCode: string;\r\n\r\n /**\r\n * Detailed description of error\r\n */\r\n errorMessage: string;\r\n\r\n /**\r\n * Describes the subclass of an error\r\n */\r\n subError: string;\r\n\r\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\r\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\r\n super(errorString);\r\n Object.setPrototypeOf(this, AuthError.prototype);\r\n\r\n this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n this.errorMessage = errorMessage || \"\";\r\n this.subError = suberror || \"\";\r\n this.name = \"AuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n static createUnexpectedError(errDesc: string): AuthError {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\r\n }\r\n}\r\n","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nvar NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n\n this.notifyFn = function (callback) {\n callback();\n };\n\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n\n var _proto = NotifyManager.prototype;\n\n _proto.batch = function batch(callback) {\n this.transactions++;\n var result = callback();\n this.transactions--;\n\n if (!this.transactions) {\n this.flush();\n }\n\n return result;\n };\n\n _proto.schedule = function schedule(callback) {\n var _this = this;\n\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */\n ;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n\n _proto.flush = function flush() {\n var _this3 = this;\n\n var queue = this.queue;\n this.queue = [];\n\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n ;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n ;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n\n return NotifyManager;\n}(); // SINGLETON\n\n\nexport var notifyManager = new NotifyManager();","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function fade(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\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\n return possibleConstructorReturn(this, result);\n };\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@material-ui/core/utils\");","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 _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","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 _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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","const wgResourceType = {\n wgUnknown: -1,\n wgBuffer: 0,\n wgVertexBuffer: 1,\n wgElementsVertexBuffer: 2,\n wgUniformBuffer: 3,\n wgStorageBuffer: 4,\n wgShader: 5,\n wgMaterial: 6,\n wgTexture: 7,\n wgMesh: 8,\n wgFbo: 9,\n wgPrimitiveRender: 10,\n wgUiRender: 11,\n wgScene: 12,\n wgMeshBuilder: 13,\n};\n\nclass wgResource {\n constructor(name, context, type) {\n this.context_ = context;\n this.name_ = name;\n this.type_ = type === undefined ? wgResourceType.wgUnknown : type; // read-only\n }\n\n getName() {\n return this.name_;\n }\n getContext() {\n return this.context_;\n }\n getType() {\n return this.type_;\n }\n}\n\nexport { wgResource, wgResourceType };\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserConfigurationAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"BrowserConfigurationAuthError\";\r\n\r\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation \r\n */\r\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when callback object is invalid.\r\n * @param callbackObject \r\n */\r\n static createInvalidCallbackObjectError(callbackObject: object): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.invalidCallbackObject.code,\r\n `${BrowserConfigurationAuthErrorMessage.invalidCallbackObject.desc} Given value for callback function: ${callbackObject}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \r\n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\r\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n }\r\n\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n }\r\n}\r\n","class wHitRecord {\n constructor() {\n this.validHit_ = false;\n this.hitTimes_ = []; // sorted list of valid intersections\n this.hitId_ = -1;\n }\n\n isValidHit() {\n return this.validHit_;\n }\n}\n\nexport { wHitRecord };\n","const byteSizeOfFloat = Float32Array.BYTES_PER_ELEMENT;\n\nexport const VertexType = {\n VT_Vertex2: \"vertex2\",\n VT_Vertex3: \"vertex3\",\n VT_Vertex3Normal3Color3: \"vertex3Normal3Color3\",\n VT_Vertex3Normal3: \"vertex3Normal3\",\n VT_Vertex3Normal3BatchID1: \"vertex3Normal3BatchID1\",\n VT_Vertex3Normal3Color3BatchID1: \"vertex3Normal3Color3BatchID1\",\n VT_Vertex4: \"vertex4\",\n VT_VertexColor4: \"vertexColor4\",\n VT_VertexColorNormal4: \"vertexColorNormal4\",\n VT_VertexColorUv4: \"vertexColorUv4\",\n VT_VertexNormalUv3: \"vertexNormalUv3\",\n};\n\nclass wgVertexLayout {\n constructor(attLocation, attDimension, attDataType, offset, stride) {\n this.attLocation_ = attLocation;\n this.attDimension_ = attDimension;\n this.attDataType_ = attDataType;\n this.stride_ = stride;\n this.offset_ = offset;\n }\n\n getType() {\n return this.attType_;\n }\n getShaderAttribLocation() {\n return this.attLocation_;\n }\n getOffset() {\n return this.offset_;\n }\n getStride() {\n return this.stride_;\n }\n}\n\nclass wgVertexDescriptor {\n constructor(vertexType, gl) {\n this.vertexType_ = vertexType;\n this.vertexLayout_ = [];\n\n switch (this.vertexType_) {\n case VertexType.VT_Vertex2:\n this.sizeInBytes_ = 2 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 2, gl.FLOAT, 0, 0));\n break;\n case VertexType.VT_Vertex3:\n this.sizeInBytes_ = 3 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, 0));\n break;\n case VertexType.VT_Vertex3Normal3:\n this.sizeInBytes_ = 6 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 3, gl.FLOAT, 3 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n break;\n case VertexType.VT_Vertex3Normal3BatchID1:\n this.sizeInBytes_ = 7 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 3, gl.FLOAT, 3 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n this.vertexLayout_.push(new wgVertexLayout(2, 1, gl.FLOAT, 6 * byteSizeOfFloat, this.sizeInBytes_)); // BatchID\n break;\n case VertexType.VT_Vertex3Normal3Color3:\n this.sizeInBytes_ = 9 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 3, gl.FLOAT, 3 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n this.vertexLayout_.push(new wgVertexLayout(2, 3, gl.FLOAT, 6 * byteSizeOfFloat, this.sizeInBytes_)); // Color\n break;\n case VertexType.VT_Vertex3Normal3Color3BatchID1:\n this.sizeInBytes_ = 10 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 3, gl.FLOAT, 3 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n this.vertexLayout_.push(new wgVertexLayout(2, 3, gl.FLOAT, 6 * byteSizeOfFloat, this.sizeInBytes_)); // Color\n this.vertexLayout_.push(new wgVertexLayout(3, 1, gl.FLOAT, 9 * byteSizeOfFloat, this.sizeInBytes_)); // BatchID\n break;\n case VertexType.VT_Vertex4:\n this.sizeInBytes_ = 4 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 4, gl.FLOAT, 0, 0));\n break;\n case VertexType.VT_VertexColor4:\n this.sizeInBytes_ = 8 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 4, gl.FLOAT, 0, this.sizeInBytes_));\n this.vertexLayout_.push(new wgVertexLayout(1, 4, gl.FLOAT, 4 * byteSizeOfFloat, this.sizeInBytes_));\n break;\n case VertexType.VT_VertexColorUv4: //this may be redundant\n this.sizeInBytes_ = 10 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 4, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 4, gl.FLOAT, 4 * byteSizeOfFloat, this.sizeInBytes_)); // Color\n this.vertexLayout_.push(new wgVertexLayout(2, 2, gl.FLOAT, 8 * byteSizeOfFloat, this.sizeInBytes_)); // Uv\n break;\n case VertexType.VT_VertexColorNormal4:\n this.sizeInBytes_ = 12 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 4, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 4, gl.FLOAT, 4 * byteSizeOfFloat, this.sizeInBytes_)); // Color\n this.vertexLayout_.push(new wgVertexLayout(2, 4, gl.FLOAT, 8 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n break;\n case VertexType.VT_VertexNormalUv3: //this may be redundant\n this.sizeInBytes_ = 8 * byteSizeOfFloat;\n this.vertexLayout_.push(new wgVertexLayout(0, 3, gl.FLOAT, 0, this.sizeInBytes_)); // Position\n this.vertexLayout_.push(new wgVertexLayout(1, 3, gl.FLOAT, 3 * byteSizeOfFloat, this.sizeInBytes_)); // Normal\n this.vertexLayout_.push(new wgVertexLayout(2, 2, gl.FLOAT, 6 * byteSizeOfFloat, this.sizeInBytes_)); // Uv\n break;\n }\n }\n\n getVertexLayout() {\n return this.vertexLayout_;\n }\n getVertexSizeInBytes() {\n return this.sizeInBytes_;\n }\n}\n\nexport { wgVertexLayout };\nexport { wgVertexDescriptor };\n","import { wgResource, wgResourceType } from \"./wgResource.js\";\n\nclass wgBuffer extends wgResource {\n constructor(name, context) {\n super(name, context, wgResourceType.wgBuffer);\n this.bufferHandle_ = null;\n this.numberOfElements_ = 0;\n this.elementSize_ = 0;\n this.size_ = 0;\n this.type_ = null;\n this.usage_ = null;\n }\n\n deleteBuffer() {\n if (this.bufferHandle_ !== null) {\n this.context_.gl().deleteBuffer(this.bufferHandle_);\n this.bufferHandle_ = null;\n }\n }\n\n bind() {\n this.context_.gl().bindBuffer(this.type_, this.bufferHandle_);\n }\n\n unbind() {\n this.context_.gl().bindBuffer(this.type_, null);\n }\n\n getVertexBytesSize(){\n return this.elementSize_;\n }\n\n createBuffer(type, usage, numElements, elementSize, data) {\n this.numberOfElements_ = numElements;\n this.elementSize_ = elementSize;\n this.size_ = numElements * elementSize;\n this.type_ = type;\n this.usage_ = usage;\n let gl = this.context_.gl(); // for convenience\n let validType = false;\n let validUsage = false;\n\n // input error checking\n if (\n this.type_ === gl.ARRAY_BUFFER ||\n this.type_ === gl.ELEMENT_ARRAY_BUFFER ||\n this.type === gl.UNIFORM_BUFFER\n ) {\n validType = true;\n }\n\n if (this.usage_ === gl.DYNAMIC_DRAW || this.usage_ === gl.STATIC_DRAW || this.usage_ === gl.STREAM_DRAW) {\n validUsage = true;\n }\n\n if (!validType) {\n let errorMessage =\n \"wgBuffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER\";\n throw new Error(errorMessage);\n }\n\n if (!validUsage) {\n let errorMessage =\n \"wgBuffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW\";\n throw new Error(errorMessage);\n }\n\n this.bufferHandle_ = gl.createBuffer();\n this.bind();\n if (data === null) {\n gl.bufferData(this.type_, this.size_, this.usage_);\n } else {\n gl.bufferData(this.type_, data, this.usage_);\n }\n this.unbind();\n }\n\n //https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferSubData\n // https://forums.expo.io/t/possible-glview-bug/40680\n updateBuffer(offset, data) {\n this.bind();\n this.getContext().gl().bufferSubData(this.type_, offset, data);\n this.unbind();\n }\n}\n\nexport { wgBuffer };\n","import { wgResource, wgResourceType } from \"./wgResource.js\";\nimport { wgBuffer } from \"./wgBuffer.js\";\n\nconst wgVertexBufferType = {\n wgInvalid: -1,\n wgArrayBuffer: 0,\n wgElementsBuffer: 1,\n};\n\nconst wgIndexType = {\n wgUnsignedByte: 0,\n wgUnsignedShort: 1,\n wgUnsignedInt: 2 // requires gl.getExtension('OES_element_index_uint')\n}\n\nclass wgVertexBuffer extends wgResource {\n constructor(name, context) {\n super(name, context, wgResourceType.wgVertexBuffer);\n this.vertexBufferType_ = wgVertexBufferType.wgInvalid;\n this.vertexBuffer_ = null;\n this.indexBuffer_ = null; // only used in case of elements indexed buffer.\n this.indexType_ = wgIndexType.wgUnsignedShort;\n this.indexGlType_ = -1;\n this.hasIndexBuffer_ = false;\n this.vertexArrayObject_ = null;\n this.vertexAtributes_ = [];\n this.vertexCount_ = 0;\n }\n\n deleteVertexBuffer() {\n if (this.vertexArrayObject_ !== null) {\n this.unbind();\n this.context_.gl().deleteVertexArray(this.vertexArrayObject_);\n this.vertexBufferType_ = wgVertexBufferType.wgInvalid;\n this.vertexArrayObject_ = null;\n this.vertexBuffer_.deleteBuffer();\n this.vertexBuffer_ = null;\n this.vertexSizeInBytes_ = 0;\n this.vertexCount_ = 0;\n }\n }\n\n getVertexArrayObject() {\n return this.vertexArrayObject_;\n }\n getVertexBuffertype() {\n return this.vertexBufferType_;\n }\n\n getIndexType() {\n return this.indexType_;\n }\n\n getGlIndexType() {\n return this.indexGlType_;\n }\n\n bind() {\n this.context_.gl().bindVertexArray(this.vertexArrayObject_);\n }\n\n unbind() {\n this.context_.gl().bindVertexArray(null);\n }\n\n draw(primitiveType) {\n const gl = this.getContext().gl();\n this.bind();\n if (!this.hasIndexBuffer_) {\n gl.drawArrays(primitiveType, 0, this.vertexCount_);\n }\n else {\n this.indexBuffer_.bind();\n gl.drawElements(primitiveType, this.vertexCount_, this.getGlIndexType(), 0);\n this.indexBuffer_.unbind();\n }\n this.unbind();\n }\n\n createVertexBuffer(usage, vertexLayouts, numberOfVertices, vertexSize, vertexData) {\n if (vertexLayouts.length === 0) {\n let errorMessage = \"wgVertexcreateVertexBuffer (createVertexBuffer) : Invalid vertexLayouts\";\n throw new Error(errorMessage);\n }\n\n let gl = this.context_.gl(); // for convenience\n this.vertexBuffer_ = new wgBuffer(\"vertexBuffer\", this.context_);\n this.vertexBuffer_.createBuffer(gl.ARRAY_BUFFER, usage, numberOfVertices, vertexSize, vertexData);\n this.vertexBufferType_ = wgVertexBufferType.wgArrayBuffer;\n this.vertexArrayObject_ = gl.createVertexArray();\n\n if (vertexData === null || vertexData === undefined) {\n this.vertexCount_ = 0;\n }\n else {\n this.vertexCount_ = numberOfVertices;\n }\n\n this.vertexBuffer_.bind();\n this.bind();\n\n for (let i = 0; i < vertexLayouts.length; i++) {\n let va = vertexLayouts[i];\n gl.enableVertexAttribArray(va.attLocation_);\n gl.vertexAttribPointer(\n va.attLocation_,\n va.attDimension_,\n va.attDataType_,\n false,\n va.getStride(),\n va.getOffset()\n );\n }\n\n this.unbind();\n this.vertexBuffer_.unbind();\n }\n\n createElementsVertexBuffer(usage, vertexLayouts, numberOfVertices, vertexSize, indexType, indexData, vertexData) {\n if (vertexLayouts.length === 0) {\n let errorMessage = \"wgVertexcreateVertexBuffer (createVertexBuffer) : Invalid vertexLayouts\";\n throw new Error(errorMessage);\n }\n\n let gl = this.context_.gl(); // for convenience\n this.indexType_ = indexType;\n let indexBytesSize = 2;\n\n if (this.indexType_ == wgIndexType.wgUnsignedByte) {\n this.indexGlType_ = gl.UNSIGNED_BYTE;\n indexBytesSize = 1;\n }\n else if (this.indexType_ == wgIndexType.wgUnsignedShort) {\n this.indexGlType_ = gl.UNSIGNED_SHORT;\n indexBytesSize = 2;\n }\n else if (this.indexType_ == wgIndexType.wgUnsignedInt) {\n this.indexGlType_ = gl.UNSIGNED_INT;\n indexBytesSize = 4;\n }\n else {\n console.log(\"Error! unknown index type.\");\n return;\n }\n\n this.vertexCount_ = indexData.length;\n this.hasIndexBuffer_ = true;\n this.indexBuffer_ = new wgBuffer(\"elementsIndexBuffer\", this.context_);\n this.indexBuffer_.createBuffer(gl.ELEMENT_ARRAY_BUFFER, usage, indexData.length, indexBytesSize, indexData);\n\n this.vertexBuffer_ = new wgBuffer(\"elementsVertexBuffer\", this.context_);\n this.vertexBuffer_.createBuffer(gl.ARRAY_BUFFER, usage, numberOfVertices, vertexSize, vertexData);\n this.vertexBufferType_ = wgVertexBufferType.wgElementsBuffer;\n this.vertexArrayObject_ = gl.createVertexArray();\n this.vertexBuffer_.bind();\n this.bind();\n\n for (let i = 0; i < vertexLayouts.length; i++) {\n let va = vertexLayouts[i];\n gl.enableVertexAttribArray(va.attLocation_);\n gl.vertexAttribPointer(\n va.attLocation_,\n va.attDimension_,\n va.attDataType_,\n false,\n va.getStride(),\n va.getOffset()\n );\n }\n this.unbind();\n this.vertexBuffer_.unbind();\n }\n\n updateVertexBufferData(offset, vertexData) {\n this.vertexCount_ = vertexData.length / (vertexData.getVertexByteSize * Float32Array.BYTES_PER_ELEMENT);\n this.vertexBuffer_.updateBuffer(offset, vertexData);\n }\n\n updateIndexBufferData(offset, indexData) {\n this.vertexCount_ = vertexData.length;\n this.indexBuffer_.updateBuffer(offset, indexData);\n }\n}\n\nexport { wgVertexBuffer, wgVertexBufferType, wgIndexType };\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import { wgResource, wgResourceType } from \"./wgResource.js\";\nimport { wMath } from \"wFundament/wMath.js\"\n\nconst wgTextureFiltering = {\n TFNearest: 0,\n TFLinear: 1,\n TFMipMapping: 2\n}\n\nconst wgTextureWrapping = {\n TWRepeat: 0,\n TWClampToEdge: 1,\n TWMirroredRepeat: 2,\n TWClmapToBorder: 3\n}\n\nconst WEBGL_PIXEL_FORMAT = {\n\tDEPTH_COMPONENT: 0x1902,\n\tDEPTH_STENCIL: 0x84F9,\n\tALPHA: 0x1906,\n\tRED: 0x1903, // webgl2\n\tRGB: 0x1907,\n\tRGBA: 0x1908,\n\tLUMINANCE: 0x1909,\n\tLUMINANCE_ALPHA: 0x190A,\n\t// only for internal formats\n\tR8: 0x8229, // webgl2\n\tRGBA8: 0x8058,\n\tRGBA16F: 0x881A,\n\tRGBA32F: 0x8814,\n\tDEPTH_COMPONENT16: 0x81A5,\n\tDEPTH_COMPONENT24: 0x81A6,\n\tDEPTH_COMPONENT32F: 0x8CAC,\n\tDEPTH24_STENCIL8: 0x88F0,\n\tDEPTH32F_STENCIL8: 0x8CAD\n}\n\nconst WEBGL_PIXEL_TYPE = {\n\tBYTE: 0x1400,\n\tUNSIGNED_BYTE: 0x1401,\n\tSHORT: 0x1402,\n\tUNSIGNED_SHORT: 0x1403,\n\tINT: 0x1404,\n\tUNSIGNED_INT: 0x1405,\n\tFLOAT: 0x1406,\n\tHALF_FLOAT: 36193,\n\tUNSIGNED_INT_24_8: 0x84FA,\n\tUNSIGNED_SHORT_4_4_4_4:\t0x8033,\n\tUNSIGNED_SHORT_5_5_5_1: 0x8034,\n\tUNSIGNED_SHORT_5_6_5: 0x8363,\n\tFLOAT_32_UNSIGNED_INT_24_8_REV: 0x8DAD\n}\n\nclass wgTexture extends wgResource {\n constructor(name, context) {\n super(name, context, wgResourceType.wgTexture);\n this.width_ = 0;\n this.height_ = 0;\n this.depth_ = 0;\n this.activeTexture_ = null;\n this.textureHandle_ = null;\n this.textureType_ = null;\n this.textureFormat_ = null;\n this.textureDataType_ = null;\n this.textureFiltering_ = wgTextureFiltering.TFNearest;\n\n this.textureWrapS_ = wgTextureWrapping.TWClampToEdge;\n this.textureWrapT_ = wgTextureWrapping.TWClampToEdge;\n this.textureWrapU_ = wgTextureWrapping.TWClampToEdge;\n }\n\n getTextureHandle() {\n return this.textureHandle_;\n }\n getWidth() {\n return this.width_;\n }\n getHeight() {\n return this.height_;\n }\n getDepth() {\n return this.depth_;\n }\n\n setActiveTexture(activeTextureChannel){\n this.activeTexture_ = activeTextureChannel;\n }\n\n createTextureHandle(textureType) {\n const gl = this.getContext().gl();\n let validTextureType = false;\n\n // Note that gl.TEXTURE_1D is not part of webgl1+2.\n if (textureType === gl.TEXTURE_2D) {\n validTextureType = true;\n }\n\n if (textureType === gl.TEXTURE_CUBE_MAP) {\n validTextureType = true;\n }\n\n if (textureType === gl.TEXTURE_2D_ARRAY) {\n validTextureType = true;\n }\n\n if (textureType === gl.TEXTURE_3D) {\n validTextureType = true;\n }\n\n if (!validTextureType) {\n throw Error(\"Invalid texture type\");\n }\n\n this.activeTexture_ = gl.TEXTURE0;\n this.textureType_ = textureType;\n this.textureHandle_ = gl.createTexture();\n }\n\n deleteTexture() {\n if (this.textureHandle_ !== null) {\n const gl = this.getContext().gl();\n gl.deleteTexture(this.textureHandle_);\n this.textureHandle_ = null;\n }\n }\n\n resize2D(width, height) {\n if (width !== this.getWidth() || height !== this.getHeight()) {\n this.deleteTexture();\n const tfNearest = this.textureFiltering_ == wgTextureFiltering.TFNearest;\n const tfMipMap = this.textureFiltering_ == wgTextureFiltering.TFMipMapping;\n this.create2D(this.textureFormat_, width, height, tfNearest, tfMipMap);\n }\n }\n\n bind() {\n this.getContext().gl().activeTexture(this.activeTexture_);\n this.getContext().gl().bindTexture(this.textureType_, this.getTextureHandle());\n }\n\n unbind() {\n this.getContext().gl().activeTexture(this.activeTexture_);\n this.getContext().gl().bindTexture(this.textureType_, null);\n }\n\n setTextureWrappingRepeat() {\n const gl = this.getContext().gl();\n this.bind();\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);\n this.unbind();\n }\n\n createFromHandle(glTextureHandle, width, height){\n const gl = this.getContext().gl();\n this.textureHandle_ = glTextureHandle;\n this.width_ = width;\n this.height_ = height; \n this.activeTexture_ = gl.TEXTURE0;\n this.textureType_ = gl.TEXTURE_2D;\n }\n\n create2DArray(internalFormat, width, height, layers, nearestfiltering) {\n const gl = this.getContext().gl();\n if (this.getTextureHandle() !== null) {\n //throw Error(\"texture handle already created\");\n gl.deleteTexture(this.getTextureHandle());\n }\n\n this.createTextureHandle(gl.TEXTURE_2D_ARRAY);\n if (this.textureType_ !== gl.TEXTURE_2D_ARRAY) {\n throw Error(\"invalid texture type\");\n }\n\n // this.textureDataType_ = dataType;\n this.textureFormat_ = internalFormat;\n this.width_ = width;\n this.height_ = height;\n this.depth_ = layers;\n this.bind();\n\n gl.texStorage3D(gl.TEXTURE_2D_ARRAY, 1, internalFormat, this.width_, this.height_, this.depth_);\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n if (nearestfiltering) {\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n this.textureFiltering_ = wgTextureFiltering.TFNearest;\n } else {\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n this.textureFiltering_ = wgTextureFiltering.TFLinear;\n }\n this.unbind();\n }\n\n create2D(internalFormat, width, height, nearestfiltering, createMipMap) {\n const gl = this.getContext().gl();\n if (this.getTextureHandle() !== null) {\n //throw Error(\"texture handle already created\");\n gl.deleteTexture(this.getTextureHandle());\n }\n\n this.createTextureHandle(gl.TEXTURE_2D);\n if (this.textureType_ !== gl.TEXTURE_2D) {\n throw Error(\"invalid texture type\");\n }\n\n // this.textureDataType_ = dataType;\n this.textureFormat_ = internalFormat;\n this.width_ = width;\n this.height_ = height;\n this.bind();\n\n gl.texStorage2D(gl.TEXTURE_2D, 1, internalFormat, this.width_, this.height_);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n if (createMipMap !== undefined && createMipMap && wMath.isPowerOfTwo(this.width_) && wMath.isPowerOfTwo(this.height_)) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.generateMipmap(gl.TEXTURE_2D);\n this.textureFiltering_ = wgTextureFiltering.TFMipMapping;\n } else if (nearestfiltering) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n this.textureFiltering_ = wgTextureFiltering.TFNearest;\n } else {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n this.textureFiltering_ = wgTextureFiltering.TFLinear;\n }\n this.unbind();\n }\n\n create2dFromImage(image, imageFormat, internalFormat, dataType, nearestfiltering, createMipMap) {\n const gl = this.getContext().gl();\n\n if (this.getTextureHandle() !== null) {\n throw Error(\"texture handle already created\");\n }\n\n this.createTextureHandle(gl.TEXTURE_2D);\n if (this.textureType_ !== gl.TEXTURE_2D) {\n throw Error(\"invalid texture type\");\n }\n\n this.textureDataType_ = dataType;\n this.textureFormat_ = internalFormat;\n this.width_ = image.width;\n this.height_ = image.height;\n\n this.bind();\n gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, imageFormat, dataType, image);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n if (createMipMap !== undefined && createMipMap && wMath.isPowerOfTwo(this.width_) && wMath.isPowerOfTwo(this.height_)) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.generateMipmap(gl.TEXTURE_2D);\n this.textureFiltering_ = wgTextureFiltering.TFMipMapping;\n } else if (nearestfiltering) {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n this.textureFiltering_ = wgTextureFiltering.TFNearest;\n } else {\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n this.textureFiltering_ = wgTextureFiltering.TFLinear;\n }\n\n this.unbind();\n }\n\n createShadowMapDepthTexture(width, height) {\n const gl = this.getContext().gl();\n\n if (this.getTextureHandle() !== null) {\n gl.deleteTexture(this.getTextureHandle());\n }\n\n this.createTextureHandle(gl.TEXTURE_2D);\n if (this.textureType_ !== gl.TEXTURE_2D) {\n throw Error(\"invalid texture type\");\n }\n\n this.width_ = width;\n this.height_ = height;\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT32F, this.width_, this.height_, 0, gl.DEPTH_COMPONENT, gl.FLOAT, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n // To get shadowSampler2d to work we need to magic formulas\n // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, gl.LEQUAL);\n //gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC, gl.LESS);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE, gl.COMPARE_REF_TO_TEXTURE);\n\n this.textureFiltering_ = wgTextureFiltering.TFLinear;// TFNearest;\n \n this.unbind();\n }\n\n uploadDataToTexture(dataFormat, dataType, data) {\n const gl = this.getContext().gl();\n this.bind();\n if ( this.textureType_ == gl.TEXTURE_2D )\n {\n gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, this.width_, this.height_, dataFormat, dataType, data);\n }\n else if ( this.textureType_ == gl.TEXTURE_2D_ARRAY || this.textureType_ == gl.TEXTURE_3D )\n {\n gl.texSubImage3D(this.textureType_, 0, 0, 0, 0, this.width_, this.height_, this.depth_, dataFormat, dataType, data);\n }\n\n this.unbind();\n }\n\n // create 3d TODO\n}\n\nexport { wgTexture, wgTextureFiltering, wgTextureWrapping };\n","import { vec3 } from \"gl-matrix\";\nimport { wHitRecord } from \"./wHitRecord.js\";\nimport { MathConst } from \"./wContants.js\";\n\nclass wTriangle {\n constructor(p0, p1, p2) {\n\n this.p0_ = vec3.create();\n this.p1_ = vec3.create();\n this.p2_ = vec3.create();\n\n vec3.copy(this.p0_, p0);\n vec3.copy(this.p1_, p1);\n vec3.copy(this.p2_, p2);\n }\n\n getPoints() {\n return [this.p0_, this.p1_, this.p2_];\n }\n\n rayIntersect(ray) {\n var hitRecord = new wHitRecord();\n let p1p0 = vec3.create();\n let p2p0 = vec3.create();\n let tVec = vec3.create();\n let pVec = vec3.create();\n\n vec3.subtract(p1p0, this.p1_, this.p0_);\n vec3.subtract(p2p0, this.p2_, this.p0_);\n vec3.subtract(tVec, ray.getOrigin(), this.p0_);\n vec3.cross(pVec, ray.getDirection(), p2p0);\n\n const det = vec3.dot(p1p0, pVec);\n\n if (Math.abs(det) < MathConst.fEps) {\n return hitRecord;\n }\n\n const invDet = 1.0 / det;\n const fU = vec3.dot(tVec, pVec) * invDet;\n\n if (fU < 0.0 || fU > 1.0) {\n return hitRecord;\n }\n\n let qVec = vec3.create();\n vec3.cross(qVec, tVec, p1p0);\n let fV = vec3.dot(ray.getDirection(), qVec) * invDet;\n\n if (fV < 0.0 || (fU + fV) > 1.0) {\n return hitRecord;\n }\n\n let t = vec3.dot(p2p0, qVec) * invDet;\n hitRecord.hitTimes_.push(t);\n hitRecord.validHit_ = true;\n return hitRecord;\n }\n\n translate(t) {\n this.p0_[0] += t[0];\n this.p0_[1] += t[1];\n this.p0_[2] += t[2];\n\n this.p1_[0] += t[0];\n this.p1_[1] += t[1];\n this.p1_[2] += t[2];\n\n this.p2_[0] += t[0];\n this.p2_[1] += t[1];\n this.p2_[2] += t[2];\n }\n}\n\nexport { wTriangle };\n","import { vec3, mat4, vec2, vec4 } from \"gl-matrix\";\nimport { wLine } from \"./wLine\";\nimport { wCircle } from \"./wCircle\";\nimport { wTriangle } from \"./wTriangle\";\nimport { wMath } from \"./wMath\";\nimport { MathConst } from \"./wContants\";\nimport { wRay } from \"./wRay\";\nimport { wHitRecord } from \"./wHitRecord\";\n\nconst wGizmoMode = {\n TRANSLATE: 0,\n ROTATE: 1,\n SCALE: 2,\n TRACKBALL: 3,\n INACTIVE: 4,\n};\n\nconst wGizmoAxis = {\n NO_AXIS: -1,\n X_AXIS: 0,\n Y_AXIS: 1,\n Z_AXIS: 2,\n};\n\nclass wGizmo {\n constructor(size) {\n this.gizmoSize_ = size !== undefined ? size : 5.0;\n this.intersectionTolerance_ = 0.1;\n this.grappingPivotPoint_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.pivot_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.gizmoMode_ = wGizmoMode.TRANSLATE;\n\n //geometry\n this.axisLines_ = [];\n this.axisCircles_ = [];\n\n this.selectedAxis_ = wGizmoAxis.X_AXIS;\n this.hoverAxis_ = wGizmoAxis.X_AXIS;\n this.isDragging_ = false;\n this.isHovering_ = false;\n this.isActive_ = false;\n\n this.transform_ = mat4.create();\n\n //translation\n this.translation_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.startTranslation_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.translationDelta_ = vec3.fromValues(0.0, 0.0, 0.0);\n\n //rotation\n this.rotationPivot_ = mat4.create();\n this.rotation_ = mat4.create();\n\n this.deltaAngle_ = 0.0;\n this.circlePoint_ = vec3.fromValues(0.0, 0.0, 0.0);\n\n this.snapToAngle_ = false;\n this.snapAngle_ = (Math.PI * 2.0) / 20.0;\n\n this.rotationUpdateStartPoint_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.rotationUpdatePoint_ = vec3.fromValues(0.0, 0.0, 0.0);\n\n //scale\n this.scalePivot_ = vec3.fromValues(1.0, 1.0, 1.0);\n this.scale_ = vec3.fromValues(1.0, 1.0, 1.0);\n this.mousePivotNdc_ = vec2.fromValues(0.0, 0.0);\n this.uniformScaleFactor_ = 0.25;\n this.uniformScaling_ = false;\n this.minScaling_ = 0.05;\n this.maxScaling_ = 100.0;\n\n this.cameraRay_ = new wRay();\n this.createGizmoGeometry();\n }\n\n setGizmoSize(size) {\n this.gizmoSize_ = size;\n this.createGizmoGeometry();\n }\n\n resetGizmo() {\n this.transform_ = mat4.create();\n this.translation_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.rotation_ = mat4.create();\n this.rotationPivot_ = mat4.create();\n this.scale_ = vec3.fromValues(1.0, 1.0, 1.0);\n this.scalePivot_ = this.scale_;\n }\n\n setGizmoMode(mode) {\n this.gizmoMode_ = mode;\n }\n\n getGizmoMode() {\n return this.gizmoMode_;\n }\n\n createGizmoGeometry() {\n let v0 = vec3.fromValues(0.0, 0.0, 0.0);\n let vX = vec3.fromValues(1.0, 0.0, 0.0);\n let vY = vec3.fromValues(0.0, 1.0, 0.0);\n let vZ = vec3.fromValues(0.0, 0.0, 1.0);\n let vXs = vec3.fromValues(this.gizmoSize_, 0.0, 0.0);\n let vYs = vec3.fromValues(0.0, this.gizmoSize_, 0.0);\n let vZs = vec3.fromValues(0.0, 0.0, this.gizmoSize_);\n let vGs = vec3.fromValues(\n this.gizmoSize_ * 0.5,\n this.gizmoSize_ * 0.5,\n this.gizmoSize_ * 0.5\n );\n\n // create the lines\n this.axisLines_[0] = new wLine(v0, vXs);\n this.axisLines_[1] = new wLine(v0, vYs);\n this.axisLines_[2] = new wLine(v0, vZs);\n\n this.axisCircles_[0] = new wCircle(vGs, vX, this.gizmoSize_ * 0.5, 24);\n this.axisCircles_[1] = new wCircle(vGs, vY, this.gizmoSize_ * 0.5, 24);\n this.axisCircles_[2] = new wCircle(vGs, vZ, this.gizmoSize_ * 0.5, 24);\n\n let triVertices = [];\n\n for (let i = 0; i < 3; i++) {\n let axisLine = this.getAxisLine(i);\n triVertices[i] = axisLine.getPoint(0.5);\n }\n\n this.scaleTriangle_ = new wTriangle(\n triVertices[0],\n triVertices[1],\n triVertices[2]\n );\n }\n\n getAxisLine(idx) {\n let l = new wLine();\n l.setLine(this.axisLines_[idx].p0_, this.axisLines_[idx].p1_);\n let t = vec3.create();\n vec3.add(t, this.translation_, this.pivot_);\n l.translate(t);\n return l;\n }\n\n getAxisCircle(idx) {\n const axisCircle = this.axisCircles_[idx];\n let c = new wCircle(axisCircle.getCenterPoint(), axisCircle.getNormal(), axisCircle.getRadius() * 2.0, 32);\n let t = vec3.create();\n vec3.add(t, this.translation_, this.pivot_);\n vec3.sub(t, t, vec3.fromValues(0.5 * this.gizmoSize_, 0.5 * this.gizmoSize_, 0.5 * this.gizmoSize_));\n c.translate(t);\n return c;\n }\n\n getScaleTriangle() {\n const tri = this.scaleTriangle_;\n let scaleTri = new wTriangle(tri.p0_,tri.p1_,tri.p2_);\n let t = vec3.create();\n vec3.add(t, this.translation_, this.pivot_);\n scaleTri.translate(t);\n return scaleTri;\n }\n\n update(mouseRay, mousePos, isLeftMouseDown) {\n if (this.gizmoMode_ == wGizmoMode.INACTIVE) {\n return false;\n }\n this.cameraRay_ = mouseRay;\n this.isHovering_ = false;\n let transformUpdated = false;\n\n switch (this.gizmoMode_) {\n case wGizmoMode.TRANSLATE:\n if (isLeftMouseDown) {\n this.updateTranslation();\n transformUpdated = true;\n } else {\n this.updateHover();\n this.isDragging_ = false;\n }\n break;\n case wGizmoMode.ROTATE:\n if (isLeftMouseDown) {\n this.updateRotation();\n transformUpdated = true;\n } else {\n this.updateHover();\n this.isDragging_ = false;\n }\n break;\n case wGizmoMode.SCALE:\n if (isLeftMouseDown) {\n this.updateScale(mousePos);\n transformUpdated = true;\n } else {\n this.updateHover();\n this.isDragging_ = false;\n }\n break;\n }\n\n this.updateTransform();\n return transformUpdated;\n }\n\n resetHover() {\n this.isHovering_ = false;\n }\n resetTranslation() {\n this.transform_ = mat4.create();\n this.translation_ = vec3.fromValues(0.0, 0.0, 0.0);\n }\n\n setPivot(pivot) {\n this.pivot_ = pivot;\n this.resetGizmo();\n }\n\n updateTranslation() {\n let lineIntersections = vec3.create();\n let rayT = vec3.create();\n let r = 10000.0;\n let l = 10000.0;\n\n for (let i = 0; i < 3; i++) {\n [l, r] = this.getAxisLine(i).rayLineClosestDistance(this.cameraRay_);\n lineIntersections[i] = l;\n rayT[i] = r;\n }\n\n for (let i = 0; i < 3; i++) {\n let closestPointOnLine = this.getAxisLine(i).getPoint(lineIntersections[i]);\n let distToCamera = vec3.create();\n let distToCameraEps = vec3.create();\n vec3.subtract(\n distToCamera,\n this.cameraRay_.getOrigin(),\n closestPointOnLine\n );\n vec3.subtract(\n distToCameraEps,\n this.cameraRay_.evaluateRay(0.01),\n closestPointOnLine\n );\n\n // invalidate lines where the ray is pointing in the opposite direction by check whether the origin is closer than epsilon along the ray\n if (vec3.length(distToCamera) < vec3.length(distToCameraEps)) {\n lineIntersections[i] = 1000.0;\n }\n }\n\n const isecAxis = wMath.getIndexOfMinComponent(lineIntersections);\n const isIntersectingLine = lineIntersections[isecAxis] < this.intersectionTolerance_;\n\n if (!this.isDragging_ && isIntersectingLine) {\n this.isDragging_ = true;\n this.selectedAxis_ = isecAxis;\n vec3.copy(this.grappingPivotPoint_, this.cameraRay_.evaluateRay(rayT[isecAxis]));\n vec3.copy(this.startTranslation_, this.translation_);\n\n } else if (this.isDragging_) {\n let isecPoint = this.cameraRay_.evaluateRay(rayT[this.selectedAxis_]);\n vec3.subtract(this.translationDelta_, isecPoint, this.grappingPivotPoint_);\n\n for (let i = 0; i < 3; i++) {\n if (i != this.selectedAxis_) {\n this.translationDelta_[i] = 0.0; // only translate along the selected axis so the other are set to zero\n }\n vec3.add(this.translation_, this.startTranslation_, this.translationDelta_);\n }\n }\n }\n\n updateRotation() {\n let circleIntersections = vec3.create();\n let rayT = vec3.create();\n let r = 10000.0;\n let l = 10000.0;\n\n for (let i = 0; i < 3; i++) {\n let c = this.getAxisCircle(i);\n [l, r] = c.rayCircleClosestDistance(this.cameraRay_);\n circleIntersections[i] = l;\n rayT[i] = r;\n }\n\n const isecAxis = wMath.getIndexOfMinComponent(circleIntersections);\n const isIntersectingLine = circleIntersections[isecAxis] < this.intersectionTolerance_;\n\n if (!this.isDragging_ && isIntersectingLine) {\n this.isDragging_ = true;\n this.selectedAxis_ = isecAxis;\n this.grappingPivotPoint_ = this.cameraRay_.evaluateRay(rayT[isecAxis]);\n let circleCenter = this.getAxisCircle(isecAxis).getCenterPoint();\n let tmp = vec3.create();\n let tmp2 = vec3.create();\n let tmp3 = vec3.create();\n vec3.subtract(tmp, this.grappingPivotPoint_, circleCenter);\n vec3.normalize(tmp2, tmp);\n vec3.scale(tmp3, tmp2, this.gizmoSize_);\n vec3.add(this.rotationUpdateStartPoint_, circleCenter, tmp3);\n vec3.copy(this.rotationUpdatePoint_, this.rotationUpdateStartPoint_);\n mat4.copy(this.rotationPivot_, this.rotation_);\n\n } else if (this.isDragging_) { // update dragging\n let isecPoint = this.cameraRay_.evaluateRay(rayT[this.selectedAxis_]);\n this.circlePoint_ = isecPoint;\n let c = this.getAxisCircle(this.selectedAxis_);\n let v0 = vec3.create();\n let v1 = vec3.create();\n vec3.subtract(v0, this.grappingPivotPoint_, c.getCenterPoint());\n vec3.subtract(v1, this.circlePoint_, c.getCenterPoint());\n\n let v0v1 = vec3.create();\n vec3.subtract(v0v1, v1, v0);\n\n if (vec3.length(v0v1) < MathConst.fEps) {\n return;\n }\n\n let x = vec3.create();\n vec3.cross(x, v0, v1);\n let sign = vec3.dot(x, this.axisCircles_[this.selectedAxis_].getNormal()) < 0.0 ? -1.0 : 1.0;\n let nV0 = vec3.create();\n let nV1 = vec3.create();\n\n vec3.normalize(nV0, v0);\n vec3.normalize(nV1, v1);\n this.deltaAngle_ = Math.acos(vec3.dot(nV0, nV1)) * sign;\n const rotationAxis = this.getRotationAxis(this.selectedAxis_);\n mat4.rotate(\n this.rotation_,\n this.rotationPivot_,\n this.deltaAngle_,\n rotationAxis\n );\n\n let tmp = vec3.create();\n vec3.scale(tmp, nV1, this.gizmoSize_);\n vec3.add(this.rotationUpdatePoint_, c.getCenterPoint(), tmp);\n }\n }\n\n getAxisRotationPoints() {\n \n let points = [];\n const c = this.getAxisCircle(this.selectedAxis_);\n let v0 = vec3.create();\n let v1 = vec3.create();\n let nV0 = vec3.create();\n let nV1 = vec3.create();\n\n vec3.subtract(v0, this.rotationUpdateStartPoint_, c.getCenterPoint());\n vec3.subtract(v1, this.rotationUpdatePoint_, c.getCenterPoint());\n\n vec3.normalize(nV0, v0);\n vec3.normalize(nV1, v1);\n\n let x = vec3.create();\n vec3.cross(x, v0, v1);\n let sign = vec3.dot(x, this.axisCircles_[this.selectedAxis_].getNormal()) < 0.0 ? -1.0 : 1.0;\n let angle = Math.acos(vec3.dot(nV0, nV1));// * sign;\n\n let numSamples = parseInt( angle / (3.1415 * 0.05));\n\n console.log(\"angle:\" + angle);\n console.log(\"num samples:\" + numSamples);\n \n }\n\n updateScale(mouseNdc) {\n let hitRecord = this.getScaleTriangle().rayIntersect(this.cameraRay_);\n let lineIntersections = vec3.create();\n let rayT = vec3.create();\n let l = 10000.0;\n let r = 10000.0;\n\n for (let i = 0; i < 3; i++) {\n [l, r] = this.getAxisLine(i).rayLineClosestDistance(this.cameraRay_);\n lineIntersections[i] = l;\n rayT[i] = r;\n }\n\n let isecAxis = wMath.getIndexOfMinComponent(lineIntersections);\n let isIntersectingLine = lineIntersections[isecAxis] < this.intersectionTolerance_;\n\n if (!this.isDragging_ && hitRecord.isValidHit()) {\n this.isDragging_ = true;\n vec3.copy(this.grappingPivotPoint_,this.cameraRay_.evaluateRay(hitRecord.hitTimes_[0]));\n vec3.copy(this.scalePivot_, this.scale_);\n this.mousePivotNdc_ = mouseNdc;\n this.uniformScaling_ = true;\n this.selectedAxis_ = wGizmoAxis.NO_AXIS;\n\n } else if (!this.isDragging_ && isIntersectingLine) {\n this.isDragging_ = true;\n this.selectedAxis_ = isecAxis;\n this.grappingPivotPoint_ = this.cameraRay_.evaluateRay(rayT[isecAxis]);\n vec3.copy(this.scalePivot_, this.scale_);\n this.uniformScaling_ = false;\n } else if (this.isDragging_) {\n if (this.uniformScaling_) {\n let mm = vec2.create();\n vec2.subtract(mm, mouseNdc, this.mousePivotNdc_);\n let mProj = wMath.vectorProjectionV2(mm,vec2.fromValues(0.0, 1.0));\n let projLen = vec2.length(mProj);\n let uniformScaleDelta = (mProj[1] > 0.0) ? projLen * this.uniformScaleFactor_ : -projLen * this.uniformScaleFactor_;\n let sc = vec3.create();\n vec3.add(sc, this.scalePivot_, vec3.fromValues(uniformScaleDelta,uniformScaleDelta, uniformScaleDelta));\n vec3.copy( this.scale_, wMath.clamp(sc, this.minScaling_, this.maxScaling_) );\n\n } else {\n let isecPoint = this.cameraRay_.evaluateRay(rayT[this.selectedAxis_]);\n let deltaVec = vec3.create();\n vec3.subtract(deltaVec, isecPoint, this.grappingPivotPoint_);\n vec3.scale(deltaVec,deltaVec,this.uniformScaleFactor_ * 0.2);\n \n for (let i = 0; i < 3; i++) {\n if (i == this.selectedAxis_) continue;\n deltaVec[i] = 0.0;\n }\n\n let scaleDelta = vec3.length(deltaVec);\n let sgn = vec3.dot(deltaVec,this.getAxisLine(this.selectedAxis_).getLineDirection());\n let scaleDeltaVec = vec3.fromValues(0.0, 0.0, 0.0);\n scaleDeltaVec[this.selectedAxis_] = (sgn > 0.0) ? scaleDelta : -scaleDelta;\n let sc = vec3.create();\n vec3.add(sc, this.scalePivot_, scaleDeltaVec);\n vec3.copy(this.scale_,wMath.clamp(sc, this.minScaling_, this.maxScaling_));\n }\n }\n }\n\n updateTransform() {\n let t1 = mat4.create();\n let t2 = mat4.create();\n let rot = mat4.create();\n let rot1 = mat4.create();\n let negP = vec3.create();\n\n mat4.fromTranslation(t1, this.pivot_);\n vec3.scale(negP, this.pivot_, -1.0);\n mat4.fromTranslation(t2, negP);\n mat4.multiply(rot1, this.rotation_, t2);\n mat4.multiply(rot, t1, rot1);\n\n mat4.fromTranslation(t1, this.translation_);\n mat4.fromScaling(t2, this.scale_);\n /* mat4.multiply(rot1, rot, t2);\n mat4.multiply(rot, t1, rot1);\n mat4.copy(this.transform_, rot);*/\n\n // mat4.multiply(rot1, rot, t2);\n mat4.multiply(rot1, t2, rot);\n mat4.multiply(rot, t1, rot1);\n\n mat4.copy(this.transform_, rot);\n }\n\n getOrientation() {\n let t1 = mat4.create();\n let t2 = mat4.create();\n let rot = mat4.create();\n let rot1 = mat4.create();\n let negP = vec3.create();\n\n mat4.fromTranslation(t1, this.pivot_);\n vec3.scale(negP, this.pivot_, -1.0);\n mat4.fromTranslation(t2, negP);\n mat4.multiply(rot1, this.rotation_, t2);\n mat4.multiply(rot, t1, rot1);\n return rot;\n }\n\n updateHover() {\n let intersections = vec3.fromValues(10000.0, 10000.0, 10000.0);\n let rayT = vec3.create();\n let isecAxis = 1000.0;\n let isIntersecting = false;\n let l = 10000.0;\n let r = 10000.0;\n this.isHovering_ = false;\n\n switch (this.gizmoMode_) {\n case wGizmoMode.TRANSLATE:\n for (let i = 0; i < 3; i++) {\n [l, r] = this.getAxisLine(i).rayLineClosestDistance(\n this.cameraRay_\n );\n intersections[i] = l;\n rayT[i] = r;\n }\n isecAxis = wMath.getIndexOfMinComponent(intersections);\n isIntersecting =\n intersections[isecAxis] < this.intersectionTolerance_;\n if (isIntersecting) {\n this.hoverAxis_ = isecAxis;\n this.isHovering_ = true;\n }\n\n break;\n case wGizmoMode.ROTATE:\n for (let i = 0; i < 3; i++) {\n let c = this.getAxisCircle(i);\n [l, r] = c.rayCircleClosestDistance(this.cameraRay_);\n intersections[i] = l;\n rayT[i] = r;\n }\n\n isecAxis = wMath.getIndexOfMinComponent(intersections);\n isIntersecting = intersections[isecAxis] < this.intersectionTolerance_;\n if (isIntersecting) {\n this.hoverAxis_ = isecAxis;\n this.isHovering_ = true;\n }\n break;\n case wGizmoMode.SCALE:\n {\n let hitRecord = this.getScaleTriangle().rayIntersect(this.cameraRay_);\n \n if (hitRecord.isValidHit()) {\n this.isHovering_ = true;\n this.hoverAxis_ = wGizmoAxis.NO_AXIS;\n }\n else {\n for (let i = 0; i < 3; i++) {\n [l, r] = this.getAxisLine(i).rayLineClosestDistance(\n this.cameraRay_\n );\n intersections[i] = l;\n rayT[i] = r;\n }\n isecAxis = wMath.getIndexOfMinComponent(intersections);\n isIntersecting = intersections[isecAxis] < this.intersectionTolerance_;\n if (isIntersecting) {\n this.isHovering_ = true;\n this.hoverAxis_ = isecAxis; \n }\n }\n }\n break;\n }\n }\n\n getRotationAxis(selected) {\n let invR = mat4.create();\n mat4.invert(invR, this.rotationPivot_);\n const rAxis = vec3.fromValues( invR[selected * 4 + 0],invR[selected * 4 + 1], invR[selected * 4 + 2]);\n return rAxis;\n }\n\n isDragging() {\n return this.isDragging_;\n }\n\n isHovering() {\n return this.isHovering_;\n }\n\n isUniformScaling(){\n return this.uniformScaling_;\n }\n\n getSelectedAxis() {\n return this.selectedAxis_;\n }\n\n getHoverAxis() {\n return this.hoverAxis_;\n }\n}\nexport { wGizmo, wGizmoMode, wGizmoAxis };\n","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","export var Subscribable = /*#__PURE__*/function () {\n function Subscribable() {\n this.listeners = [];\n }\n\n var _proto = Subscribable.prototype;\n\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n\n var callback = listener || function () {\n return undefined;\n };\n\n this.listeners.push(callback);\n this.onSubscribe();\n return function () {\n _this.listeners = _this.listeners.filter(function (x) {\n return x !== callback;\n });\n\n _this.onUnsubscribe();\n };\n };\n\n _proto.hasListeners = function hasListeners() {\n return this.listeners.length > 0;\n };\n\n _proto.onSubscribe = function onSubscribe() {// Do nothing\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n };\n\n return Subscribable;\n}();","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","export default function formControlState(_ref) {\n var props = _ref.props,\n states = _ref.states,\n muiFormControl = _ref.muiFormControl;\n return states.reduce(function (acc, state) {\n acc[state] = props[state];\n\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n\n return acc;\n }, {});\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","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'default' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: PropTypes.oneOf(['default', 'inherit', 'large', 'small']),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport {\r\n Separators,\r\n CacheAccountType,\r\n CacheType,\r\n Constants,\r\n} from \"../../utils/Constants\";\r\nimport { Authority } from \"../../authority/Authority\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { buildClientInfo } from \"../../account/ClientInfo\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { AccountInfo } from \"../../account/AccountInfo\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\nimport { AuthorityType } from \"../../authority/AuthorityType\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\n\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: --\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * oboAssertion: access token passed in as part of OBO request\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * }\r\n */\r\nexport class AccountEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n realm: string;\r\n localAccountId: string;\r\n username: string;\r\n authorityType: string;\r\n name?: string;\r\n clientInfo?: string;\r\n lastModificationTime?: string;\r\n lastModificationApp?: string;\r\n oboAssertion?: string;\r\n cloudGraphHostName?: string;\r\n msGraphHost?: string; \r\n idTokenClaims?: TokenClaims;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n const accountId: Array = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate Account Cache Key as per the schema: --\r\n */\r\n generateAccountKey(): string {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n generateType(): number {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n getAccountInfo(): AccountInfo {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims\r\n };\r\n }\r\n\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\r\n const accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || \"\",\r\n accountInterface.tenantId || \"\",\r\n ];\r\n\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n static createAccount(\r\n clientInfo: string,\r\n homeAccountId: string,\r\n authority: Authority,\r\n idToken: AuthToken,\r\n oboAssertion?: string,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = idToken?.claims?.tid || \"\";\r\n account.oboAssertion = oboAssertion;\r\n \r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || \"\";\r\n\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\r\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\r\n */\r\n account.username = idToken?.claims?.preferred_username || (idToken?.claims?.emails? idToken.claims.emails[0]: \"\");\r\n account.name = idToken?.claims?.name;\r\n }\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n static createGenericAccount(\r\n authority: Authority,\r\n homeAccountId: string,\r\n idToken: AuthToken,\r\n oboAssertion?: string,\r\n cloudGraphHostName?: string,\r\n msGraphHost?: string\r\n ): AccountEntity {\r\n const account: AccountEntity = new AccountEntity();\r\n\r\n account.authorityType = (authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = \"\";\r\n account.oboAssertion = oboAssertion;\r\n\r\n const env = authority.getPreferredCache();\r\n\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || \"\";\r\n // upn claim for most ADFS scenarios\r\n account.username = idToken?.claims?.upn || \"\";\r\n account.name = idToken?.claims?.name || \"\";\r\n account.idTokenClaims = idToken?.claims;\r\n }\r\n\r\n account.environment = env;\r\n\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n\r\n return account;\r\n }\r\n\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idToken?: AuthToken): string {\r\n\r\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs) {\r\n return accountId;\r\n }\r\n\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\r\n }\r\n }\r\n\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccountEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\")\r\n );\r\n }\r\n\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA \r\n * @param accountB \r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n\r\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\r\n const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\r\n\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n\r\n return (accountA.homeAccountId === accountB.homeAccountId) && \r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n claimsMatch;\r\n }\r\n}\r\n","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils'; // TYPES\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\n\nexport function isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n var _this = this;\n\n var cancelRetry = false;\n var cancelFn;\n var continueFn;\n var promiseResolve;\n var promiseReject;\n\n this.cancel = function (cancelOptions) {\n return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n };\n\n this.cancelRetry = function () {\n cancelRetry = true;\n };\n\n this.continue = function () {\n return continueFn == null ? void 0 : continueFn();\n };\n\n this.failureCount = 0;\n this.isPaused = false;\n this.isResolved = false;\n this.isTransportCancelable = false;\n this.promise = new Promise(function (outerResolve, outerReject) {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n var resolve = function resolve(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n var reject = function reject(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n var pause = function pause() {\n return new Promise(function (continueResolve) {\n continueFn = continueResolve;\n _this.isPaused = true;\n config.onPause == null ? void 0 : config.onPause();\n }).then(function () {\n continueFn = undefined;\n _this.isPaused = false;\n config.onContinue == null ? void 0 : config.onContinue();\n });\n }; // Create loop function\n\n\n var run = function run() {\n // Do nothing if already resolved\n if (_this.isResolved) {\n return;\n }\n\n var promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n } // Create callback to cancel this fetch\n\n\n cancelFn = function cancelFn(cancelOptions) {\n if (!_this.isResolved) {\n reject(new CancelledError(cancelOptions)); // Cancel transport if supported\n\n if (isCancelable(promiseOrValue)) {\n try {\n promiseOrValue.cancel();\n } catch (_unused) {}\n }\n }\n }; // Check if the transport layer support cancellation\n\n\n _this.isTransportCancelable = isCancelable(promiseOrValue);\n Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (_this.isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n\n if (cancelRetry || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n _this.failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(function () {\n if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n return pause();\n }\n }).then(function () {\n if (cancelRetry) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n run();\n};","import { wgResource } from \"./wgResource.js\";\nimport formatCompilerError from \"gl-format-compiler-error\";\n\nclass wgShader extends wgResource {\n constructor(name, context) {\n super(name, context);\n this.vertexShader_ = null;\n this.fragmentShader_ = null;\n this.shaderProgram_ = null;\n this.uniformLocationMap_ = new Map(); // uniform location caching\n this.attribLocationMap_ = new Map(); // attrib location caching\n }\n\n bindProgram() {\n this.context_.gl().useProgram(this.shaderProgram_);\n }\n\n unbindProgram() {\n this.context_.gl().useProgram(null);\n }\n\n deleteProgram() {\n this.context_.gl().deleteShader(this.vertexShader_);\n this.context_.gl().deleteShader(this.fragmentShader_);\n this.context_.gl().deleteProgram(this.shaderProgram_);\n this.uniformLocationMap_.clear();\n this.attribLocationMap_.clear();\n }\n\n createShaderProgram(vertexShaderSrc, fragmentShaderSrc, attribLocations) {\n /* attribLocations: optional. Example {pos: 0, normal: 1} */\n const gl = this.context_.gl();\n this.vertexShader_ = this.compileShader(vertexShaderSrc, this.context_.gl().VERTEX_SHADER);\n this.fragmentShader_ = this.compileShader(fragmentShaderSrc, this.context_.gl().FRAGMENT_SHADER);\n\n if (this.vertexShader_ !== null && this.fragmentShader_ !== null) {\n this.shaderProgram_ = gl.createProgram();\n gl.attachShader(this.shaderProgram_, this.vertexShader_);\n gl.attachShader(this.shaderProgram_, this.fragmentShader_);\n\n // Set explicit attrib locations\n if ( attribLocations )\n {\n Object.keys( attribLocations ).forEach( (attribName) => {\n gl.bindAttribLocation( this.shaderProgram_, attribLocations[attribName], attribName);\n });\n }\n\n gl.linkProgram(this.shaderProgram_);\n\n if (!gl.getProgramParameter(this.shaderProgram_, gl.LINK_STATUS)) {\n var errLog = gl.getProgramInfoLog(this.shaderProgram_);\n console.log(errLog);\n throw new Error(errLog);\n }\n let numAttribs = gl.getProgramParameter(this.shaderProgram_, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < numAttribs; i++) {\n const info = gl.getActiveAttrib(this.shaderProgram_, i);\n let aLoc = this.context_.gl().getAttribLocation(this.shaderProgram_, info.name);\n this.attribLocationMap_.set(info.name, aLoc);\n }\n }\n }\n\n bindAttribLocation(location, name)\n {\n const gl = this.context_.gl();\n gl.bindAttribLocation( this.shaderProgram_, location, name);\n gl.linkProgram(this.shaderProgram_);\n\n this.attribLocationMap_.clear();\n\n let numAttribs = gl.getProgramParameter(this.shaderProgram_, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < numAttribs; i++) {\n const info = gl.getActiveAttrib(this.shaderProgram_, i);\n let aLoc = this.context_.gl().getAttribLocation(this.shaderProgram_, info.name);\n this.attribLocationMap_.set(info.name, aLoc);\n }\n }\n\n compileShader(shaderSource, shaderType) {\n var shader = this.context_.gl().createShader(shaderType);\n this.context_.gl().shaderSource(shader, shaderSource);\n this.context_.gl().compileShader(shader);\n if (!this.context_.gl().getShaderParameter(shader, this.context_.gl().COMPILE_STATUS)) {\n var errLog = this.context_.gl().getShaderInfoLog(shader);\n var fmt = formatCompilerError(errLog, shaderSource, shaderType);\n console.warn(fmt.long);\n throw new Error(fmt.short);\n }\n return shader;\n }\n\n rebuildShader(vertexShaderSrc, fragmentShaderSrc) {\n this.deleteProgram();\n this.createShaderProgram(vertexShaderSrc, fragmentShaderSrc);\n }\n\n getAttribLocation(attributeName) {\n let attribLoc = this.attribLocationMap_.get(attributeName);\n\n if (attribLoc === undefined) {\n // not in the map\n console.log(\"invalid attrib name: \" + attributeName);\n return null;\n }\n return attribLoc;\n }\n getShaderProgram() {\n return this.shaderProgram_;\n }\n\n getUniformLocation(uniformName) {\n let uniformLoc = this.uniformLocationMap_.get(uniformName);\n if (uniformLoc === undefined) {\n // not in the map\n let uLoc = this.context_.gl().getUniformLocation(this.shaderProgram_, uniformName);\n if (uLoc === null) {\n // console.log(\"invalid uniform name: \" + uniformName); // throw error?\n return null;\n }\n this.uniformLocationMap_.set(uniformName, uLoc);\n uniformLoc = uLoc;\n }\n return uniformLoc;\n }\n\n // Add new as we go along\n setTextureUniform(uniformName, textureUnit) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform1i(uLoc, textureUnit);\n }\n\n setTextureUniformV(uniformName, textureUnits) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform1iv(uLoc, textureUnits);\n }\n\n setUniform1i(uniformName, value) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform1i(uLoc, value);\n }\n\n setUniform1f(uniformName, value) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform1f(uLoc, value);\n }\n\n setUniform2f(uniformName, v0, v1) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform2f(uLoc, v0, v1);\n }\n\n setUniform3f(uniformName, v0, v1, v2) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform3f(uLoc, v0, v1, v2);\n }\n\n setUniform3fv(uniformName, vec) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform3fv(uLoc, vec);\n }\n\n setUniform4f(uniformName, v0, v1, v2, v3) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform4f(uLoc, v0, v1, v2, v3);\n }\n\n setUniform4iv(uniformName, v) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform4iv(uLoc, v);\n }\n\n setUniform4i(uniformName, i0, i1, i2, i3) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform4i(uLoc, i0, i1, i2, i3);\n }\n\n setUniform4fv(uniformName, vec) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniform4fv(uLoc, vec);\n }\n\n setUniformMat3fv(uniformName, mat) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniformMatrix3fv(uLoc, false, mat);\n }\n\n setUniformMat4fv(uniformName, mat) {\n const uLoc = this.getUniformLocation(uniformName);\n this.context_.gl().uniformMatrix4fv(uLoc, false, mat);\n }\n}\n\nexport { wgShader };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = /*#__PURE__*/React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes = {\n /**\n * Set the text-align on the component.\n */\n align: PropTypes.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * Overrides the behavior of the `variantMapping` prop.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Controls the display type\n */\n display: PropTypes.oneOf(['initial', 'block', 'inline']),\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the text will have a bottom margin.\n */\n paragraph: PropTypes.bool,\n\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline', 'srOnly', 'inherit']),\n\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `
`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n */\n variantMapping: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"./AuthError\";\r\n\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nexport class ServerError extends AuthError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"ServerError\";\r\n\r\n Object.setPrototypeOf(this, ServerError.prototype);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nexport enum AuthorityType {\r\n Default,\r\n Adfs\r\n}\r\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');\n\nexports.default = _default;","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import createMuiTheme from './createMuiTheme';\nvar defaultTheme = createMuiTheme();\nexport default defaultTheme;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\n\nvar FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n\n function FocusManager() {\n return _Subscribable.apply(this, arguments) || this;\n }\n\n var _proto = FocusManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.removeEventListener) {\n this.setDefaultEventListener();\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this = this;\n\n if (this.removeEventListener) {\n this.removeEventListener();\n }\n\n this.removeEventListener = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this.setFocused(focused);\n } else {\n _this.onFocus();\n }\n });\n };\n\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n };\n\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n\n _proto.setDefaultEventListener = function setDefaultEventListener() {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n this.setEventListener(function (onFocus) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n });\n }\n };\n\n return FocusManager;\n}(Subscribable);\n\nexport var focusManager = new FocusManager();","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\n\nexport default ListContext;","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) 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}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AccountInfo, Logger } from \"@azure/msal-common\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\n\r\nexport interface IPublicClientApplication {\r\n acquireTokenPopup(request: PopupRequest): Promise;\r\n acquireTokenRedirect(request: RedirectRequest): Promise;\r\n acquireTokenSilent(silentRequest: SilentRequest): Promise;\r\n addEventCallback(callback: Function): string | null;\r\n removeEventCallback(callbackId: string): void;\r\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\r\n getAccountByLocalId(localId: string): AccountInfo | null;\r\n getAccountByUsername(userName: string): AccountInfo | null;\r\n getAllAccounts(): AccountInfo[];\r\n handleRedirectPromise(hash?: string): Promise;\r\n loginPopup(request?: PopupRequest): Promise;\r\n loginRedirect(request?: RedirectRequest): Promise;\r\n logout(logoutRequest?: EndSessionRequest): Promise;\r\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise;\r\n logoutPopup(logoutRequest?: EndSessionRequest): Promise;\r\n ssoSilent(request: SsoSilentRequest): Promise;\r\n getLogger(): Logger;\r\n setLogger(logger: Logger): void;\r\n setActiveAccount(account: AccountInfo | null): void;\r\n getActiveAccount(): AccountInfo | null;\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\r\n setNavigationClient(navigationClient: INavigationClient): void;\r\n}\r\n\r\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\r\n acquireTokenPopup: () => {\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\r\n },\r\n acquireTokenRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n acquireTokenSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n getAllAccounts: () => {\r\n return [];\t\r\n },\t\r\n getAccountByHomeId: () => {\r\n return null;\r\n },\r\n getAccountByUsername: () => {\t\r\n return null;\t\r\n },\t\r\n getAccountByLocalId: () => {\r\n return null;\r\n },\r\n handleRedirectPromise: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n loginRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logout: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\t\r\n logoutRedirect: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n logoutPopup: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n ssoSilent: () => {\t\r\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\r\n },\r\n addEventCallback: () => {\r\n return null;\r\n },\r\n removeEventCallback: () => {\r\n return;\r\n },\r\n getLogger: () => {\r\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\r\n },\r\n setLogger: () => {\r\n return;\r\n },\r\n setActiveAccount: () => {\r\n return;\r\n },\r\n getActiveAccount: () => {\r\n return null;\r\n },\r\n initializeWrapperLibrary: () => {\r\n return;\r\n },\r\n setNavigationClient: () => {\r\n return;\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, AuthError } from \"@azure/msal-common\";\r\nimport { EventType } from \"./EventType\";\r\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\r\n\r\nexport type EventMessage = {\r\n eventType: EventType;\r\n interactionType: InteractionType | null;\r\n payload: EventPayload;\r\n error: EventError;\r\n timestamp: number;\r\n};\r\n\r\nexport type PopupEvent = {\r\n popupWindow: Window;\r\n};\r\n\r\nexport type EventPayload = PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\r\n\r\nexport type EventError = AuthError | Error | null;\r\n\r\nexport type EventCallbackFunction = (message: EventMessage) => void;\r\n\r\nexport class EventMessageUtils {\r\n\r\n /**\r\n * Gets interaction status from event message\r\n * @param message\r\n */\r\n static getInteractionStatusFromEvent(message: EventMessage): InteractionStatus|null {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_START:\r\n return InteractionStatus.Login;\r\n case EventType.SSO_SILENT_START:\r\n return InteractionStatus.SsoSilent;\r\n case EventType.ACQUIRE_TOKEN_START:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.AcquireToken;\r\n }\r\n break;\r\n case EventType.HANDLE_REDIRECT_START:\r\n return InteractionStatus.HandleRedirect;\r\n case EventType.LOGOUT_START:\r\n return InteractionStatus.Logout;\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.HANDLE_REDIRECT_END:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n case EventType.LOGOUT_END:\r\n return InteractionStatus.None;\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\r\n return InteractionStatus.None;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { AccountIdentifiers } from \"./types/AccountIdentifiers\";\r\n\r\nexport interface IMsalContext {\r\n instance: IPublicClientApplication;\r\n inProgress: InteractionStatus;\r\n accounts: AccountIdentifiers[];\r\n logger: Logger;\r\n}\r\n\r\n/*\r\n * Stubbed context implementation\r\n * Only used when there is no provider, which is an unsupported scenario\r\n */\r\nconst defaultMsalContext: IMsalContext = {\r\n instance: stubbedPublicClientApplication,\r\n inProgress: InteractionStatus.None,\r\n accounts: [],\r\n logger: new Logger({})\r\n};\r\n\r\nexport const MsalContext = React.createContext(\r\n defaultMsalContext\r\n);\r\nexport const MsalConsumer = MsalContext.Consumer;\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\n\r\ntype FaaCFunction = (args: T) => React.ReactNode;\r\n\r\nexport function getChildrenOrFunction(\r\n children: React.ReactNode | FaaCFunction,\r\n args: T\r\n): React.ReactNode {\r\n if (typeof children === \"function\") {\r\n return children(args);\r\n }\r\n return children;\r\n}\r\n\r\n/*\r\n * Utility types\r\n * Reference: https://github.com/piotrwitek/utility-types\r\n */\r\ntype SetDifference = A extends B ? never : A;\r\ntype SetComplement = SetDifference;\r\nexport type Subtract = Pick>;\r\n\r\n/**\r\n * Helper function to determine whether 2 arrays are equal\r\n * Used to avoid unnecessary state updates\r\n * @param arrayA \r\n * @param arrayB \r\n */\r\nexport function accountArraysAreEqual(arrayA: Array, arrayB: Array): boolean {\r\n if (arrayA.length !== arrayB.length) {\r\n return false;\r\n }\r\n\r\n const comparisonArray = [...arrayB];\r\n\r\n return arrayA.every((elementA) => {\r\n const elementB = comparisonArray.shift();\r\n if (!elementA || !elementB) {\r\n return false;\r\n }\r\n\r\n return (elementA.homeAccountId === elementB.homeAccountId) && \r\n (elementA.localAccountId === elementB.localAccountId) &&\r\n (elementA.username === elementB.username);\r\n });\r\n}\r\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.14.2\";\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { useState, useEffect, PropsWithChildren, useMemo } from \"react\";\r\nimport {\r\n IPublicClientApplication,\r\n EventType,\r\n EventMessage,\r\n EventMessageUtils,\r\n InteractionStatus,\r\n Logger,\r\n WrapperSKU\r\n} from \"@azure/msal-browser\";\r\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\r\nimport { accountArraysAreEqual } from \"./utils/utilities\";\r\nimport { AccountIdentifiers } from \"./types/AccountIdentifiers\";\r\nimport { name as SKU, version } from \"./packageMetadata\";\r\n\r\nexport type MsalProviderProps = PropsWithChildren<{\r\n instance: IPublicClientApplication;\r\n}>;\r\n\r\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\r\n useEffect(() => {\r\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\r\n }, [instance]);\r\n // Create a logger instance for msal-react with the same options as PublicClientApplication\r\n const logger: Logger = useMemo(() => {\r\n return instance.getLogger().clone(SKU, version);\r\n }, [instance]);\r\n\r\n // State hook to store accounts\r\n const [accounts, setAccounts] = useState([]);\r\n // State hook to store in progress value\r\n const [inProgress, setInProgress] = useState(InteractionStatus.Startup);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n switch (message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n case EventType.HANDLE_REDIRECT_END:\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n case EventType.LOGOUT_END:\r\n case EventType.ACQUIRE_TOKEN_SUCCESS:\r\n case EventType.ACQUIRE_TOKEN_FAILURE:\r\n const currentAccounts = instance.getAllAccounts();\r\n if (!accountArraysAreEqual(currentAccounts, accounts)) {\r\n logger.info(\"MsalProvider - updating account state\");\r\n setAccounts(currentAccounts);\r\n } else {\r\n logger.info(\"MsalProvider - no account changes\");\r\n }\r\n break;\r\n }\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n return () => {\r\n // Remove callback when component unmounts or accounts change\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, accounts, logger]);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n const status = EventMessageUtils.getInteractionStatusFromEvent(message);\r\n if (status !== null) {\r\n logger.info(`MsalProvider - ${message.eventType} results in setting inProgress to ${status}`);\r\n setInProgress(status);\r\n }\r\n });\r\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\r\n\r\n instance.handleRedirectPromise().catch(() => {\r\n // Errors should be handled by listening to the LOGIN_FAILURE event\r\n return;\r\n });\r\n\r\n return () => {\r\n if (callbackId) {\r\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n const contextValue: IMsalContext = {\r\n instance,\r\n inProgress,\r\n accounts,\r\n logger\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useContext } from \"react\";\r\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\r\n\r\n/**\r\n * Returns Msal Context values\r\n */\r\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { AccountInfo, IPublicClientApplication, InteractionStatus, AccountEntity } from \"@azure/msal-browser\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\n\r\nfunction getAccount(instance: IPublicClientApplication, accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n const allAccounts = instance.getAllAccounts();\r\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\r\n const matchedAccounts = allAccounts.filter(accountObj => {\r\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n return matchedAccounts[0] || null;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in\r\n * @param accountIdentifiers \r\n */\r\nexport function useAccount(accountIdentifiers: AccountIdentifiers): AccountInfo | null {\r\n const { instance, inProgress } = useMsal();\r\n\r\n const initialStateValue = inProgress === InteractionStatus.Startup ? null : getAccount(instance, accountIdentifiers);\r\n const [account, setAccount] = useState(initialStateValue);\r\n\r\n useEffect(() => {\r\n const currentAccount = getAccount(instance, accountIdentifiers);\r\n if (!AccountEntity.accountInfoIsEqual(account, currentAccount, true)) {\r\n setAccount(currentAccount);\r\n }\r\n }, [inProgress, accountIdentifiers, instance, account]);\r\n\r\n return account;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { useMsal } from \"./useMsal\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { useAccount } from \"./useAccount\";\r\nimport { AccountInfo, InteractionStatus } from \"@azure/msal-browser\";\r\n\r\nfunction isAuthenticated(allAccounts: AccountIdentifiers[], account: AccountInfo | null, matchAccount?: AccountIdentifiers): boolean {\r\n if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\r\n return !!account;\r\n } \r\n\r\n return allAccounts.length > 0;\r\n}\r\n\r\n/**\r\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\r\n * @param matchAccount \r\n */\r\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\r\n const { accounts: allAccounts, inProgress } = useMsal();\r\n const account = useAccount(matchAccount || {});\r\n\r\n const initialStateValue = inProgress === InteractionStatus.Startup ? false : isAuthenticated(allAccounts, account, matchAccount);\r\n const [hasAuthenticated, setHasAuthenticated] = useState(initialStateValue);\r\n\r\n useEffect(() => {\r\n setHasAuthenticated(isAuthenticated(allAccounts, account, matchAccount));\r\n }, [allAccounts, account, matchAccount]);\r\n\r\n return hasAuthenticated;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { PropsWithChildren, useMemo } from \"react\";\r\nimport { useMsal } from \"../hooks/useMsal\";\r\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\r\nimport { getChildrenOrFunction } from \"../utils/utilities\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { InteractionStatus } from \"@azure/msal-browser\";\r\n\r\nexport type UnauthenticatedTemplateProps = PropsWithChildren;\r\n\r\n/**\r\n * Renders child components if user is unauthenticated\r\n * @param props \r\n */\r\nexport function UnauthenticatedTemplate({ username, homeAccountId, localAccountId, children }: UnauthenticatedTemplateProps): React.ReactElement|null {\r\n const context = useMsal();\r\n const accountIdentifier: AccountIdentifiers = useMemo(() => {\r\n return {\r\n username,\r\n homeAccountId,\r\n localAccountId\r\n };\r\n }, [username, homeAccountId, localAccountId]);\r\n const isAuthenticated = useIsAuthenticated(accountIdentifier);\r\n\r\n if (!isAuthenticated && context.inProgress !== InteractionStatus.Startup && context.inProgress !== InteractionStatus.HandleRedirect) {\r\n return (\r\n \r\n {getChildrenOrFunction(children, context)}\r\n \r\n );\r\n }\r\n return null;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport React, { PropsWithChildren, useMemo } from \"react\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { getChildrenOrFunction } from \"../utils/utilities\";\r\nimport { useMsal } from \"../hooks/useMsal\";\r\nimport { MsalAuthenticationResult, useMsalAuthentication } from \"../hooks/useMsalAuthentication\";\r\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\r\nimport { InteractionType, PopupRequest, RedirectRequest, SsoSilentRequest, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { IMsalContext } from \"../MsalContext\";\r\n\r\nexport type MsalAuthenticationProps = PropsWithChildren;\r\n errorComponent?: React.ElementType;\r\n}>;\r\n\r\n/**\r\n * Attempts to authenticate user if not already authenticated, then renders child components\r\n * @param props\r\n */\r\nexport function MsalAuthenticationTemplate({ \r\n interactionType, \r\n username, \r\n homeAccountId, \r\n localAccountId,\r\n authenticationRequest, \r\n loadingComponent: LoadingComponent,\r\n errorComponent: ErrorComponent,\r\n children \r\n}: MsalAuthenticationProps): React.ReactElement|null {\r\n const accountIdentifier: AccountIdentifiers = useMemo(() => {\r\n return {\r\n username,\r\n homeAccountId,\r\n localAccountId\r\n };\r\n }, [username, homeAccountId, localAccountId]);\r\n const context = useMsal();\r\n const msalAuthResult = useMsalAuthentication(interactionType, authenticationRequest, accountIdentifier);\r\n const isAuthenticated = useIsAuthenticated(accountIdentifier);\r\n\r\n if (msalAuthResult.error && context.inProgress === InteractionStatus.None) {\r\n if (!!ErrorComponent) {\r\n return ;\r\n }\r\n\r\n throw msalAuthResult.error;\r\n }\r\n \r\n if (isAuthenticated) {\r\n return (\r\n \r\n {getChildrenOrFunction(children, msalAuthResult)}\r\n \r\n );\r\n } \r\n \r\n if (!!LoadingComponent && context.inProgress !== InteractionStatus.None) {\r\n return ;\r\n }\r\n\r\n return null;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { PopupRequest, RedirectRequest, SsoSilentRequest, InteractionType, AuthenticationResult, AuthError, EventMessage, EventType, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { useIsAuthenticated } from \"./useIsAuthenticated\";\r\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\r\nimport { useMsal } from \"./useMsal\";\r\n\r\nexport type MsalAuthenticationResult = {\r\n login: Function; \r\n result: AuthenticationResult|null;\r\n error: AuthError|null;\r\n};\r\n\r\n/**\r\n * Invokes a login call if a user is not currently signed-in. Failed logins can be retried using the login callback returned.\r\n * Optionally provide a request object to be used in the login call.\r\n * Optionally provide a specific user that should be logged in.\r\n * @param interactionType \r\n * @param authenticationRequest \r\n * @param accountIdentifiers \r\n */\r\nexport function useMsalAuthentication(\r\n interactionType: InteractionType, \r\n authenticationRequest?: PopupRequest|RedirectRequest|SsoSilentRequest, \r\n accountIdentifiers?: AccountIdentifiers\r\n): MsalAuthenticationResult {\r\n const { instance, inProgress, logger } = useMsal();\r\n const isAuthenticated = useIsAuthenticated(accountIdentifiers);\r\n const [[result, error], setResponse] = useState<[AuthenticationResult|null, AuthError|null]>([null, null]);\r\n const [hasBeenCalled, setHasBeenCalled] = useState(false);\r\n\r\n const login = useCallback(async (callbackInteractionType?: InteractionType, callbackRequest?: PopupRequest|RedirectRequest|SsoSilentRequest): Promise => {\r\n const loginType = callbackInteractionType || interactionType;\r\n const loginRequest = callbackRequest || authenticationRequest;\r\n switch (loginType) {\r\n case InteractionType.Popup:\r\n logger.verbose(\"useMsalAuthentication - Calling loginPopup\");\r\n return instance.loginPopup(loginRequest as PopupRequest);\r\n case InteractionType.Redirect:\r\n // This promise is not expected to resolve due to full frame redirect\r\n logger.verbose(\"useMsalAuthentication - Calling loginRedirect\");\r\n return instance.loginRedirect(loginRequest as RedirectRequest).then(null);\r\n case InteractionType.Silent:\r\n logger.verbose(\"useMsalAuthentication - Calling ssoSilent\");\r\n return instance.ssoSilent(loginRequest as SsoSilentRequest);\r\n default:\r\n throw \"Invalid interaction type provided.\";\r\n }\r\n }, [instance, interactionType, authenticationRequest, logger]);\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((message: EventMessage) => {\r\n switch(message.eventType) {\r\n case EventType.LOGIN_SUCCESS:\r\n case EventType.SSO_SILENT_SUCCESS:\r\n if (message.payload) {\r\n setResponse([message.payload as AuthenticationResult, null]);\r\n }\r\n break;\r\n case EventType.LOGIN_FAILURE:\r\n case EventType.SSO_SILENT_FAILURE:\r\n if (message.error) {\r\n setResponse([null, message.error as AuthError]);\r\n }\r\n break;\r\n }\r\n });\r\n logger.verbose(`useMsalAuthentication - Registered event callback with id: ${callbackId}`);\r\n\r\n return () => {\r\n if (callbackId) {\r\n logger.verbose(`useMsalAuthentication - Removing event callback ${callbackId}`);\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, logger]);\r\n\r\n useEffect(() => {\r\n if (!hasBeenCalled && !error && !isAuthenticated && inProgress === InteractionStatus.None) {\r\n logger.info(\"useMsalAuthentication - No user is authenticated, attempting to login\");\r\n // Ensure login is only called one time from within this hook, any subsequent login attempts should use the callback returned\r\n setHasBeenCalled(true);\r\n login().catch(() => {\r\n // Errors are handled by the event handler above\r\n return;\r\n });\r\n }\r\n }, [isAuthenticated, inProgress, error, hasBeenCalled, login, logger]);\r\n\r\n return { login, result, error };\r\n}\r\n","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n// @ts-nocheck\n/* eslint-disable no-restricted-globals */\n/* global process, window, global, document, self, importScripts */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\nexport const isBrowser =\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\nexport const isWorker = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && process.version.match(/v([0-9]*)/);\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","import { noop } from './utils'; // TYPES\n\n// FUNCTIONS\nvar logger = console || {\n error: noop,\n warn: noop,\n log: noop\n};\nexport function getLogger() {\n return logger;\n}\nexport function setLogger(newLogger) {\n logger = newLogger;\n}","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n} // Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n\nexport function isFilled(obj) {\n var SSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n} // Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\n\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar FormControlContext = React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\n\nexport function useFormControl() {\n return React.useContext(FormControlContext);\n}\nexport default FormControlContext;","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n\n var later = function later() {\n func.apply(that, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n\n return debounced;\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\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}","'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","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","\nimport { vec3 } from \"gl-matrix\";\nimport { wMath } from \"./wMath.js\"\n\nclass wGeoSphereBuilder {\n\n\tconstructor() {\n\n\t\tconst X = 0.525731112119133606;\n\t\tconst Z = 0.850650808352039932;\n\n\t\tthis.vdata =\n\t\t\t[vec3.fromValues(-X, 0.0, Z), vec3.fromValues(X, 0.0, Z), vec3.fromValues(-X, 0.0, -Z), vec3.fromValues(X, 0.0, -Z),\n\t\t\tvec3.fromValues(0.0, Z, X), vec3.fromValues(0.0, Z, -X), vec3.fromValues(0.0, -Z, X), vec3.fromValues(0.0, -Z, -X),\n\t\t\tvec3.fromValues(Z, X, 0.0), vec3.fromValues(-Z, X, 0.0), vec3.fromValues(Z, -X, 0.0), vec3.fromValues(-Z, -X, 0.0)];\n\t\tthis.tindices =\n\t\t\t[[0, 4, 1], [0, 9, 4], [9, 5, 4], [4, 5, 8], [4, 8, 1],\n\t\t\t[8, 10, 1], [8, 3, 10], [5, 3, 8], [5, 2, 3], [2, 7, 3],\n\t\t\t[7, 10, 3], [7, 6, 10], [7, 11, 6], [11, 0, 6], [0, 1, 6],\n\t\t\t[6, 1, 10], [9, 0, 11], [9, 11, 2], [9, 2, 5], [7, 2, 11]]\n\t};\n\n\tsubdivideGeosphere(v1, v2, v3, spherePoints, depth) {\n\t\tif (depth == 0) {\n\t\t\tspherePoints.push(wMath.vec3Scale(v1, 0.5));\n\t\t\tspherePoints.push(wMath.vec3Scale(v2, 0.5));\n\t\t\tspherePoints.push(wMath.vec3Scale(v3, 0.5));\n\t\t\treturn;\n\t\t}\n\n\t\tvar v12 = vec3.create();\n\t\tvar v23 = vec3.create();\n\t\tvar v31 = vec3.create();\n\t\tvec3.normalize(v12, wMath.vec3Add(v1, v2));\n\t\tvec3.normalize(v23, wMath.vec3Add(v2, v3));\n\t\tvec3.normalize(v31, wMath.vec3Add(v3, v1));\n\t\tthis.subdivideGeosphere(v1, v12, v31, spherePoints, depth - 1);\n\t\tthis.subdivideGeosphere(v2, v23, v12, spherePoints, depth - 1);\n\t\tthis.subdivideGeosphere(v3, v31, v23, spherePoints, depth - 1);\n\t\tthis.subdivideGeosphere(v12, v23, v31, spherePoints, depth - 1);\n\t}\n\n\tbuildGeoSphere(numSubDivisions) {\n\t\tvar vertices = [];\n\t\tfor (let i = 0; i < 20; i++) {\n\t\t\tthis.subdivideGeosphere(this.vdata[this.tindices[i][0]], this.vdata[this.tindices[i][1]], this.vdata[this.tindices[i][2]], vertices, numSubDivisions);\n\t\t}\n\t\treturn vertices;\n\t}\n}\n\nexport { wGeoSphereBuilder };","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Edit');\n\nexports.default = _default;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\n\nvar OnlineManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(OnlineManager, _Subscribable);\n\n function OnlineManager() {\n return _Subscribable.apply(this, arguments) || this;\n }\n\n var _proto = OnlineManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.removeEventListener) {\n this.setDefaultEventListener();\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this = this;\n\n if (this.removeEventListener) {\n this.removeEventListener();\n }\n\n this.removeEventListener = setup(function (online) {\n if (typeof online === 'boolean') {\n _this.setOnline(online);\n } else {\n _this.onOnline();\n }\n });\n };\n\n _proto.setOnline = function setOnline(online) {\n this.online = online;\n\n if (online) {\n this.onOnline();\n }\n };\n\n _proto.onOnline = function onOnline() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isOnline = function isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n };\n\n _proto.setDefaultEventListener = function setDefaultEventListener() {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n this.setEventListener(function (onOnline) {\n var listener = function listener() {\n return onOnline();\n }; // Listen to online\n\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n });\n }\n };\n\n return OnlineManager;\n}(Subscribable);\n\nexport var onlineManager = new OnlineManager();","import React from 'react';\nexport default React.createContext(null);","import { vec3 } from \"gl-matrix\";\nimport { MathConst } from \"./wContants.js\";\nimport { wMath } from \"./wMath.js\";\n\nclass wLine {\n constructor(p0, p1) {\n this.p0_ = p0 !== undefined ? p0 : vec3.fromValues(0.0, 0.0, 0.0);\n this.p1_ = p1 !== undefined ? p1 : vec3.fromValues(1.0, 1.0, 1.0);\n }\n\n setLine(p0, p1) {\n vec3.copy(this.p0_,p0);\n vec3.copy(this.p1_,p1);\n }\n\n setP0(p0) {\n vec3.copy(this.p0_,p0);\n }\n\n setP1(p1) {\n vec3.copy(this.p1_,p1);\n }\n\n p0() {\n let p = vec3.create();\n vec3.copy(p, this.p0_);\n return p;\n }\n\n p1() {\n let p = vec3.create();\n vec3.copy(p, this.p1_);\n return p;\n }\n\n getLength() {\n let tmp = vec3.create();\n vec3.subtract(tmp, this.p1_, this.p0_);\n return vec3.length(tmp);\n }\n\n closestLineDistanceToPoint(p) {\n const tp = wMath.vec3Sub(p, this.p0_);\n const Cs = vec3.dot(tp, tp);\n const pProj = wMath.vectorProjection(tp, this.getLineDirection());\n const Bs = vec3.dot(pProj, pProj);\n return Math.sqrt(Cs - Bs);\n }\n\n rayLineClosestDistance(ray) {\n const V1 = this.getLineDirection(); \n const V2 = ray.getDirection();\n\t const S1 = this.p0();\n\t const S2 = ray.getOrigin();\n\n let s2s1 = wMath.vec3Sub(S2,S1)\n let v1v2 = vec3.dot(V1, V2);\n let det = (v1v2 * v1v2) - 1.0;\n\n if (Math.abs(det) < MathConst.fEps2) {\n return [closestLineDistanceToPoint(S2), 0.0]; \n }\n\n let invDet = 1.0 / det;\n let s2s1v1 = vec3.dot(s2s1, V1);\n let s2s1v2 = vec3.dot(s2s1, V2);\n\n let t1 = invDet * (-s2s1v1 + v1v2 * s2s1v2);\n let t2 = invDet * (-s2s1v1 * v1v2 + s2s1v2);\n\n let tmp = vec3.create();\n \n vec3.scale(tmp, V1, t1);\n let P1 = wMath.vec3Add(S1, tmp);\n\n vec3.scale(tmp, V2, t2);\n let P2 = wMath.vec3Add(S2, tmp);\n \n if (t1 < 0.0) {\n vec3.subtract(tmp, P2, this.p0_);\n return [vec3.length(tmp), t2];\n } else if (t1 > this.getLength()) {\n vec3.subtract(tmp, P2, this.p1_);\n return [vec3.length(tmp),t2];\n }\n vec3.subtract(tmp, P2, P1);\n return [vec3.length(tmp), t2];\n }\n\n getLineDirection() {\n let tmp = vec3.create();\n let dir = vec3.create();\n\n vec3.subtract(tmp, this.p1_, this.p0_);\n vec3.normalize(dir, tmp);\n\n return dir;\n }\n\n getPoint(t) {\n let p = vec3.create();\n let tmp1 = vec3.create();\n let tmp2 = vec3.create();\n\n vec3.subtract(tmp1, this.p1_, this.p0_);\n vec3.scale(tmp2, tmp1, t);\n vec3.add(p, this.p0_, tmp2);\n return p;\n }\n\n getPointProjection(p) {\n let dir = vec3.create();\n vec3.sub(dir, p, this.p0_);\n let n = this.getLineDirection();\n let dotProd = vec3.dot(dir, n);\n let tmp = vec3.create();\n let projVec = vec3.create();\n vec3.scale(tmp, n, dotProd);\n vec3.add(projVec, this.p0_, tmp);\n return projVec;\n }\n\n translate(t) {\n this.p0_[0] += t[0];\n this.p0_[1] += t[1];\n this.p0_[2] += t[2];\n\n this.p1_[0] += t[0];\n this.p1_[1] += t[1];\n this.p1_[2] += t[2];\n }\n}\nexport { wLine };\n","export const MouseButtons = {\n LeftButton: 0,\n MiddleButton: 1,\n RightButton: 2,\n};\n\nclass MouseEventHandler {\n constructor() {\n this.width_ = 1;\n this.height_ = 1;\n\n this.mouseClicked_ = [false, false, false];\n this.mouseDoubleClicked_ = [false, false, false];\n this.mouseDown_ = [false, false, false];\n\n this.screenX_ = 0;\n this.screenY_ = 0;\n this.clientX_ = 0;\n this.clientY_ = 0;\n\n this.lastX_ = 0;\n this.lastY_ = 0;\n\n this.deltaMouseX_ = 0.0;\n this.deltaMouseY_ = 0.0;\n\n this.mouseInside_ = false;\n }\n\n getMouseDeltaX() {\n return this.deltaMouseX_;\n }\n getMouseDeltaY() {\n return this.deltaMouseY_;\n }\n\n isDown(mouseButton) {\n return this.mouseDown_[mouseButton];\n }\n\n isClicked(mouseButton) {\n return this.mouseClicked_[mouseButton];\n }\n\n isDoubleClicked(mouseButton) {\n return this.mouseDoubleClicked_[mouseButton];\n }\n\n isMouseInside() {\n return this.mouseInside_;\n }\n\n resetMouseState() {\n this.flush();\n this.screenX_ = 0;\n this.screenY_ = 0;\n this.clientX_ = 0;\n this.clientY_ = 0;\n this.lastX_ = 0;\n this.lastY_ = 0;\n this.deltaMouseX_ = 0.0;\n this.deltaMouseY_ = 0.0;\n\n this.wheelDelta_ = 0;\n\n this.normX_ = 0.0;\n this.normY_ = 0.0;\n\n for (let i = 0; i < 3; i++) {\n this.mouseDown_[i] = false;\n }\n }\n\n getNormX() {\n return this.normX_;\n }\n getNormY() {\n return this.normY_;\n }\n getMouseWheelDelta() {\n return this.wheelDelta_;\n }\n\n flush() {\n for (let i = 0; i < 3; i++) {\n this.mouseClicked_[i] = false;\n this.mouseDoubleClicked_[i] = false;\n }\n\n this.deltaMouseX_ = 0.0;\n this.deltaMouseY_ = 0.0;\n this.wheelDelta_ = 0;\n }\n\n onMouseMove(event) {\n this.screenX_ = event.screenX;\n this.screenY_ = event.screenY;\n this.clientX_ = event.offsetX;\n this.clientY_ = event.offsetY;\n\n let rect = event.target.getBoundingClientRect();\n this.width_ = rect.right - rect.left;\n this.height_ = rect.bottom - rect.top;\n\n if (this.mouseInside_) {\n this.deltaMouseX_ = (this.clientX_ - this.lastX_) / this.width_;\n this.deltaMouseY_ = (this.clientY_ - this.lastY_) / this.height_;\n }\n\n this.lastX_ = this.clientX_;\n this.lastY_ = this.clientY_;\n this.normX_ = this.clientX_ / (rect.right - rect.left);\n this.normY_ = 1.0 - this.clientY_ / (rect.bottom - rect.top);\n this.mouseInside_ = true;\n }\n\n onMouseDown(event) {\n this.mouseDown_[event.button] = true && this.mouseInside_;\n }\n\n onMouseUp(event) {\n this.mouseDown_[event.button] = false;\n }\n\n onMouseClick(event) {\n this.mouseClicked_[event.button] = true;\n }\n\n onMouseRightClick() {\n this.mouseClicked_[MouseButtons.RightButton] = true;\n }\n\n onMouseDoubleClick(event) {\n this.mouseDoubleClicked_[event.button] = true;\n }\n\n onMouseWheel(event) {\n this.wheelDelta_ = event.deltaY;\n }\n\n onMouseContextMenu(event) { }\n\n onMouseLeave(event) {\n this.mouseInside_ = false;\n this.resetMouseState();\n }\n}\n\nexport { MouseEventHandler };\n","import { vec3, vec4 } from \"gl-matrix\";\nimport { wHitRecord } from \"./wHitRecord.js\";\nimport { MathConst } from \"./wContants.js\";\n\nclass wPlane {\n constructor(planeNormal, pointInPlane, width, depth) {\n \n this.normal_ = vec3.fromValues(0.0,1.0,0.0);\n\n if(planeNormal !== undefined)\n {\n vec3.normalize(this.normal_,planeNormal);\n }\n\n let dp = vec3.dot(pointInPlane, this.normal_);\n this.planeEq_ = vec4.fromValues(this.normal_[0],this.normal_[1],this.normal_[2],-dp);\n this.planeOrigo_ = vec3.create();\n vec3.scale(this.planeOrigo_, this.normal_, dp);\n }\n\n getNormal() {\n let N = vec3.create();\n vec3.copy(N, this.normal_);\n return N;\n }\n\n getOrigo() {\n let O = vec3.create();\n vec3.copy(O, this.planeOrigo_);\n return O;\n }\n\n getSignedDistance(p)\n {\n return vec3.dot(p, this.normal_) + this.planeEq_[3];\n }\n \n rayIntersect(ray) {\n var hitRecord = new wHitRecord();\n const N = this.normal_;\n let DN = vec3.dot(ray.getDirection(), N);\n\n if (Math.abs(DN) < MathConst.fEps2) return hitRecord; // too close to parallel, call it a miss\n\n let planeW = -vec3.dot(N, this.planeOrigo_);\n let dotON = vec3.dot(ray.getOrigin(), N);\n let t = (-planeW - dotON) / DN;\n\n if (t < 0.0) return hitRecord;\n\n let hitPos = ray.evaluateRay(t);\n let hitDir = vec3.create();\n\n vec3.sub(hitDir, hitPos, this.planeOrigo_);\n\n hitRecord.validHit_ = true;\n hitRecord.hitTimes_.push(t);\n\n return hitRecord;\n }\n\n getTriangulation() {\n /* let verts = this.getBoxCorners();\n let trianglution = [];\n\n for(let i = 0; i < wBoxTriIndices_.length; i+= 3)\n {\n trianglution.push(verts[wBoxTriIndices_[i]]);\n trianglution.push(verts[wBoxTriIndices_[i+1]]);\n trianglution.push(verts[wBoxTriIndices_[i+2]]);\n }\n\n return trianglution;*/\n }\n}\n\nexport { wPlane };\n","import { mat4, vec3 } from \"gl-matrix\";\nimport { wHitRecord } from \"./wHitRecord.js\";\nimport { wPlane } from \"./wPlane.js\";\n\nclass wCircle {\n constructor(centerPosition, normal, radius, slices) {\n this.center_ = (centerPosition !== undefined) ? centerPosition : vec3.fromValues(0.0, 0.0, 0.0);\n this.normal_ = vec3.fromValues(1.0, 0.0, 0.0);\n if ( normal !== undefined ) {\n vec3.normalize(this.normal_, normal)\n }\n this.radius_ = radius !== undefined ? radius : 1.0;\n this.slices_ = slices !== undefined ? slices : 8; // of slices in the rendered circle, not used yet\n }\n\n setCircle(pos, normal, radius){\n vec3.copy(this.center_, pos); \n vec3.copy(this.normal_, normal);\n this.radius_ = radius;\n }\n\n setCenterPosition(pos) {\n vec3.copy(this.center_, pos);\n }\n\n setNormal(normal) {\n vec3.copy(this.normal_, normal);\n }\n\n getNumberOfSlices() {\n return this.slices_;\n }\n\n getRadius() {\n return this.radius_;\n }\n\n getCenterPoint() {\n var P = vec3.create();\n vec3.copy(P, this.center_);\n return P;\n }\n\n getNormal() {\n var N = vec3.create();\n vec3.copy(N, this.normal_);\n return N;\n }\n\n rayCircleClosestDistance(ray) {\n let hitRecord = new wHitRecord();\n let circlePlane = new wPlane(this.normal_, this.center_);\n \n hitRecord = circlePlane.rayIntersect(ray);\n if (hitRecord.validHit_) {\n let planePoint = ray.evaluateRay(hitRecord.hitTimes_[0]);\n // project that point on to the circle's circumference\n let circleProjectedPoint = vec3.create();\n let tmp = vec3.create();\n vec3.subtract(tmp, planePoint, this.center_);\n let tmp1 = vec3.create();\n vec3.normalize(tmp1, tmp);\n let tmp2 = vec3.create();\n vec3.scale(tmp2, tmp1, this.radius_);\n vec3.add(circleProjectedPoint, this.center_, tmp2);\n let tmp3 = vec3.create();\n vec3.subtract(tmp3, planePoint, circleProjectedPoint);\n return [vec3.length(tmp3), hitRecord.hitTimes_[0]];\n }\n\n // the required point on the circle is the one closest to the camera origin\n // point = radius_ * glm::normalize(Fundament::FmMath::vectorRejection(ray.getOrigin() - center_, normal_));\n return [1000.0, 1000.0]; // distance_between_point_ray(point, context.camera_ray);\n }\n\n rayIntersect(ray) {\n var hitRecord = new wHitRecord();\n let circlePlane = new wPlane(this.normal_, this.center_);\n hitRecord = circlePlane.rayIntersect(ray);\n\n if (hitRecord.validHit_) {\n let t = hitRecord.hitTimes_[0];\n let hitPos = ray.evaluateRay(t);\n let hitDir = vec3.create();\n vec3.sub(hitDir, hitPos, this.center_);\n\n // check length of hitDir\n let cProj = vec3.length(hitDir);\n\n if (Math.abs(cProj) < this.radius_) {\n hitRecord.validHit_ = true;\n hitRecord.hitTimes_.push(t);\n } else {\n return new wHitRecord();\n }\n }\n\n return hitRecord;\n }\n\n translate(t) {\n this.center_[0] += t[0];\n this.center_[1] += t[1];\n this.center_[2] += t[2];\n /* let tmp = vec3.create();\n vec3.add(tmp, t, this.center_);\n this.setCenterPosition(tmp);*/\n }\n\n transform( m ) { \n let tmp = vec3.create();\n vec3.transformMat4(tmp, this.center_, m);\n vec3.copy(this.center_, tmp);\n vec3.transformMat4(tmp, this.normal_, m);\n vec3.copy(this.normal_, tmp);\n mat4.getScaling(tmp,m);\n let s = vec3.dot(tmp,vec3.fromValues(1.0,1.0,1.0));\n s /= 3.0;\n this.radius_ = this.radius_*s;\n }\n}\n\nexport { wCircle };\n","import { wgResource, wgResourceType } from \"./wgResource.js\";\nimport { wgTexture } from \"./wgTexture.js\";\n\nclass wgFbo extends wgResource {\n constructor(name, context) {\n super(name, context, wgResourceType.wgFbo);\n this.fboWidth_ = -1;\n this.fboHeight_ = -1;\n this.attachedTextures_ = [];\n this.hasDepthStencil_ = false;\n this.hasFixedSize_ = false;// for shadow mapping we dont want to resize the fbo\n this.fboHandle_ = this.getContext().gl().createFramebuffer();\n this.renderBufferHandle_ = null;\n }\n\n attachTexture(texture) {\n const gl = this.getContext().gl();\n // the first attachment sets the width and height\n if (this.attachedTextures_.length === 0) {\n this.fboWidth_ = texture.getWidth();\n this.fboHeight_ = texture.getHeight();\n }\n else {\n // test if there is a size match\n if (texture.getWidth() != this.fboWidth_) {\n console.log(\"FBO texture size mismatch: fbo width:\" + this.fboWidth_ + \" : texture width: \" + texture.getWidth());\n return;\n }\n\n if (texture.getHeight() != this.fboHeight_) {\n console.log(\"FBO texture size mismatch: fbo height:\" + this.fboHeight_ + \" : texture height: \" + texture.getHeight());\n return;\n }\n }\n let attachIndex = this.attachedTextures_.length;\n this.attachedTextures_.push(texture);\n let textureAttachment = gl.COLOR_ATTACHMENT0 + attachIndex;\n\n // attach to FBO\n this.bind();\n gl.framebufferTexture2D(gl.FRAMEBUFFER, textureAttachment, gl.TEXTURE_2D, texture.getTextureHandle(), 0);\n this.unbind();\n }\n\n bind() {\n this.getContext().gl().bindFramebuffer(this.getContext().gl().FRAMEBUFFER, this.fboHandle_);\n }\n\n unbind() {\n this.getContext().gl().bindFramebuffer(this.getContext().gl().FRAMEBUFFER, null);\n }\n\n createDepthStencilBuffer(width, height) {\n const gl = this.getContext().gl();\n this.bind();\n\n if (this.renderBufferHandle_ != null) {\n gl.deleteRenderbuffer(this.renderBufferHandle_);\n }\n\n this.renderBufferHandle_ = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBufferHandle_);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT24, width, height);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this.renderBufferHandle_);\n this.unbind();\n this.hasDepthStencil_ = true;\n }\n\n createShadowMappingFbo(shadowMapWidth, shadowMapHeight) {\n\n if (this.attachedTextures_.length != 0) {\n console.log(\"Error! when using fbo for shadow ampping only the shadow map can be attached\");\n return;\n }\n\n const gl = this.getContext().gl();\n this.bind();\n\n this.fboWidth_ = shadowMapWidth;\n this.fboHeight_ = shadowMapHeight;\n\n // create the depth texture\n var shadowMapDepthTexture = new wgTexture(\"shadow map depth texture\", this.getContext());\n shadowMapDepthTexture.createShadowMapDepthTexture(this.fboWidth_, this.fboHeight_);\n this.attachedTextures_.push(shadowMapDepthTexture);\n\n // attach to FBO\n this.bind();\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, shadowMapDepthTexture.getTextureHandle(), 0);\n gl.drawBuffers([gl.NONE]);\n gl.readBuffer(gl.NONE);\n this.unbind();\n\n shadowMapDepthTexture.unbind();\n\n this.hasDepthStencil_ = true;\n this.hasFixedSize_ = true;\n }\n\n createCascadingShadowMappingFbo(shadowMapWidth, shadowMapHeight, numberOfCascades) {\n\n if (this.attachedTextures_.length != 0) {\n console.log(\"Error! when using fbo for shadow ampping only the shadow map can be attached\");\n return;\n }\n\n const gl = this.getContext().gl();\n this.bind();\n\n this.fboWidth_ = shadowMapWidth;\n this.fboHeight_ = shadowMapHeight;\n\n // create the depth textures\n for (let i = 0; i < numberOfCascades; i++) {\n var shadowMapDepthTexture = new wgTexture(\"shadowMap\" + i, this.getContext());\n shadowMapDepthTexture.createShadowMapDepthTexture(this.fboWidth_, this.fboHeight_);\n shadowMapDepthTexture.setActiveTexture(gl.TEXTURE0 + i);\n this.attachedTextures_.push(shadowMapDepthTexture);\n shadowMapDepthTexture.unbind();\n }\n\n this.hasDepthStencil_ = true;\n this.hasFixedSize_ = true;\n }\n\n // asumes that the shadow texture has been created with createCascadingShadowMappingFbo\n attachShadowMap(index){\n if(index < 0 || index >= this.attachedTextures_.length) return;\n\n const gl = this.getContext().gl();\n this.bind();\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this.attachedTextures_[index].getTextureHandle(), 0);\n gl.drawBuffers([gl.NONE]);\n gl.readBuffer(gl.NONE);\n this.unbind();\n }\n\n getAttachment(index) {\n if (index >= this.attachedTextures_.length) {\n return null;\n }\n return this.attachedTextures_[index];\n }\n\n resize(width, height) {\n if (this.hasFixedSize_) return;\n\n let resizeTextures = false;\n\n if (this.fboWidth_ != width) {\n this.fboWidth_ = width;\n resizeTextures = true;\n }\n\n if (this.fboHeight_ != height) {\n this.fboHeight_ = height;\n resizeTextures = true;\n }\n\n if (resizeTextures) {\n const gl = this.getContext().gl();\n\n for (let i = 0; i < this.attachedTextures_.length; i++) {\n this.attachedTextures_[i].resize2D(width, height);\n const textureAttachment = gl.COLOR_ATTACHMENT0 + i;\n\n // re attach\n this.bind();\n gl.framebufferTexture2D(gl.FRAMEBUFFER, textureAttachment, gl.TEXTURE_2D, this.attachedTextures_[i].getTextureHandle(), 0);\n this.unbind();\n }\n\n if (this.hasDepthStencil_) {\n if (this.renderBufferHandle_ != null) {\n gl.deleteRenderbuffer(this.renderBufferHandle_);\n this.renderBufferHandle_ = null;\n }\n this.createDepthStencilBuffer(width, height);\n }\n }\n }\n}\n\nexport { wgFbo };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","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\n return self;\n}","import { vec3, vec4, mat4 } from \"gl-matrix\";\n\nclass wRay {\n constructor(origin, direction) {\n this.origin_ = vec3.fromValues(0.0, 0.0, 0.0);\n this.dir_ = vec3.fromValues(0.0, 0.0, 1.0);\n this.indDir_ = vec3.create();\n\n if (origin !== undefined) {\n vec3.copy(this.origin_, origin);\n }\n\n if (direction !== undefined) {\n vec3.copy(this.dir_, direction);\n }\n this.updateRay();\n }\n\n getOrigin() {\n let origin = vec3.create();\n vec3.copy(origin, this.origin_);\n return origin;\n }\n\n getDirection() {\n let dir = vec3.create();\n vec3.copy(dir, this.dir_);\n return dir;\n // return this.dir_;\n }\n\n getInvDirection() {\n let invDir = vec3.create();\n vec3.copy(invDir, this.indDir_);\n return invDir;\n // return this.indDir_;\n }\n\n setRay(origin, direction) {\n if (origin !== undefined) {\n vec3.copy(this.origin_, origin);\n }\n if (direction !== undefined) {\n vec3.copy(this.dir_, direction);\n }\n this.updateRay();\n }\n\n updateRay() {\n let tmp = vec3.create();\n vec3.normalize(tmp, this.dir_);\n vec3.copy(this.dir_, tmp);\n for (let i = 0; i < 3; i++) {\n this.indDir_[i] = (Math.abs(this.dir_[i]) > 0.00001) ? (1.0 / this.dir_[i]) : (1.0 / 0.00001);\n }\n }\n\n evaluateRay(t) {\n var rayPos = vec3.create();\n let dirT = vec3.create();\n vec3.scale(dirT, this.dir_, t);\n vec3.add(rayPos, this.origin_, dirT);\n return rayPos;\n }\n\n getTransformedRay(matrix) {\n // TODO\n this.updateRay();\n }\n}\n\nexport { wRay };\n","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\n/* global process, window, global, document, self, importScripts */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\nexport const isBrowser =\n // @ts-ignore\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\nexport const isWorker = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && process.version.match(/v([0-9]*)/);\nexport const nodeVersion = (matches && parseFloat(matches[1])) || 0;\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerError } from \"./ServerError\";\r\n\r\n/**\r\n * InteractionRequiredAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const InteractionRequiredAuthErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\n\r\nexport const InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n\r\n/**\r\n * Error thrown when user interaction is required at the auth server.\r\n */\r\nexport class InteractionRequiredAuthError extends ServerError {\r\n\r\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\r\n super(errorCode, errorMessage, subError);\r\n this.name = \"InteractionRequiredAuthError\";\r\n\r\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\r\n }\r\n\r\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string) : boolean {\r\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredAuthErrorMessage.indexOf(errorCode) > -1;\r\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredAuthErrorMessage.some((irErrorCode) => {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n }\r\n}\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import * as React from 'react';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function useId(idOverride) {\n var _React$useState = React.useState(idOverride),\n defaultId = _React$useState[0],\n setDefaultId = _React$useState[1];\n\n var id = idOverride || defaultId;\n React.useEffect(function () {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the random value for client-side rendering only.\n // We can't use it server-side.\n setDefaultId(\"mui-\".concat(Math.round(Math.random() * 1e5)));\n }\n }, [defaultId]);\n return id;\n}","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\r\nimport { Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Options for logger messages.\r\n */\r\nexport type LoggerMessageOptions = {\r\n logLevel: LogLevel,\r\n correlationId?: string,\r\n containsPii?: boolean,\r\n context?: string\r\n};\r\n\r\n/**\r\n * Log message level.\r\n */\r\nexport enum LogLevel {\r\n Error,\r\n Warning,\r\n Info,\r\n Verbose,\r\n Trace\r\n}\r\n\r\n/**\r\n * Callback to send the messages to.\r\n */\r\nexport interface ILoggerCallback {\r\n (level: LogLevel, message: string, containsPii: boolean): void;\r\n}\r\n\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nexport class Logger {\r\n\r\n // Correlation ID for request, usually set by user.\r\n private correlationId: string;\r\n\r\n // Current log level, defaults to info.\r\n private level: LogLevel = LogLevel.Info;\r\n\r\n // Boolean describing whether PII logging is allowed.\r\n private piiLoggingEnabled: boolean;\r\n\r\n // Callback to send messages to.\r\n private localCallback: ILoggerCallback;\r\n\r\n // Package name implementing this logger\r\n private packageName: string;\r\n\r\n // Package version implementing this logger\r\n private packageVersion: string;\r\n\r\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\r\n const defaultLoggerCallback = () => {};\r\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\r\n this.level = loggerOptions.logLevel || LogLevel.Info;\r\n\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n public clone(packageName: string, packageVersion: string): Logger {\r\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level}, packageName, packageVersion);\r\n }\r\n\r\n /**\r\n * Log message with required options.\r\n */\r\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n const timestamp = new Date().toUTCString();\r\n const logHeader: string = StringUtils.isEmpty(this.correlationId) ? `[${timestamp}] : ` : `[${timestamp}] : [${this.correlationId}]`;\r\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": \"\"}${options.context ? `:${options.context}` : \"\"}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n }\r\n\r\n /**\r\n * Execute callback with message.\r\n */\r\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n }\r\n\r\n /**\r\n * Logs error messages.\r\n */\r\n error(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n errorPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages.\r\n */\r\n warning(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n warningPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages.\r\n */\r\n info(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n infoPii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages.\r\n */\r\n verbose(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n verbosePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages.\r\n */\r\n trace(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n tracePii(message: string, correlationId?: string): void {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || \"\"\r\n });\r\n }\r\n\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n isPiiLoggingEnabled(): boolean {\r\n return this.piiLoggingEnabled || false;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * Client info object which consists of two IDs. Need to add more info here.\r\n */\r\nexport type ClientInfo = {\r\n uid: string,\r\n utid: string\r\n};\r\n\r\n/**\r\n * Function to build a client info object\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n try {\r\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo) as ClientInfo;\r\n } catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n}\r\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 _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n if (!sl || (st && st.f && !st.l))\n return buf || new u8(0);\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [et, 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n // deopt when i > s - 3 - at end, deopt acceptable\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst && pos & 7)\n pos = wfblk(w, pos + 1, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if (d[1] & 32)\n err(6, 'invalid zlib data: preset dictionaries not supported');\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = this.p.length > 3 ? gzs(this.p) : 4;\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n err(6, 'invalid gzip data');\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k;\n if (val instanceof u8)\n t[n] = [val, o];\n else if (Array.isArray(val))\n t[n] = [val[0], mrg(o, val[1])];\n else\n fltn(val, n + '/', t, o);\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return [r, slc(d, i - 1)];\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), ch = _a[0], np = _a[1];\n if (final) {\n if (np.length)\n err(8);\n this.p = null;\n }\n else\n this.p = np;\n this.ondata(ch, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td)\n return td.decode(dat);\n else {\n var _a = dutf8(dat), out = _a[0], ext = _a[1];\n if (ext.length)\n err(8);\n return out;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n if (c != null) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n err(13);\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n function Mutation(config) {\n this.options = _extends({}, config.defaultOptions, config.options);\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.observers = [];\n this.state = config.state || getDefaultState();\n }\n\n var _proto = Mutation.prototype;\n\n _proto.setState = function setState(state) {\n this.dispatch({\n type: 'setState',\n state: state\n });\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n };\n\n _proto.cancel = function cancel() {\n if (this.retryer) {\n this.retryer.cancel();\n return this.retryer.promise.then(noop).catch(noop);\n }\n\n return Promise.resolve();\n };\n\n _proto.continue = function _continue() {\n if (this.retryer) {\n this.retryer.continue();\n return this.retryer.promise;\n }\n\n return this.execute();\n };\n\n _proto.execute = function execute() {\n var _this = this;\n\n var data;\n var restored = this.state.status === 'loading';\n var promise = Promise.resolve();\n\n if (!restored) {\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n });\n promise = promise.then(function () {\n return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n }).then(function (context) {\n if (context !== _this.state.context) {\n _this.dispatch({\n type: 'loading',\n context: context,\n variables: _this.state.variables\n });\n }\n });\n }\n\n return promise.then(function () {\n return _this.executeMutation();\n }).then(function (result) {\n data = result;\n }).then(function () {\n return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'success',\n data: data\n });\n\n return data;\n }).catch(function (error) {\n // Notify cache callback\n if (_this.mutationCache.config.onError) {\n _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this);\n } // Log error\n\n\n getLogger().error(error);\n return Promise.resolve().then(function () {\n return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'error',\n error: error\n });\n\n throw error;\n });\n });\n };\n\n _proto.executeMutation = function executeMutation() {\n var _this2 = this,\n _this$options$retry;\n\n this.retryer = new Retryer({\n fn: function fn() {\n if (!_this2.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return _this2.options.mutationFn(_this2.state.variables);\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay\n });\n return this.retryer.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onMutationUpdate(action);\n });\n\n _this3.mutationCache.notify(_this3);\n });\n };\n\n return Mutation;\n}();\nexport function getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'loading':\n return _extends({}, state, {\n context: action.context,\n data: undefined,\n error: null,\n isPaused: false,\n status: 'loading',\n variables: action.variables\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false\n });\n\n case 'error':\n return _extends({}, state, {\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error'\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n}","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nexport var useQueryClient = function useQueryClient() {\n var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n var client = _ref.client,\n _ref$contextSharing = _ref.contextSharing,\n contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n children = _ref.children;\n React.useEffect(function () {\n client.mount();\n return function () {\n client.unmount();\n };\n }, [client]);\n var Context = getQueryClientContext(contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\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\n return self;\n}","/** @typedef {import('./array-buffer-utils')} types */\n/* global TextEncoder */\nimport assert from '../env-utils/assert';\nimport * as node from '../node/buffer-utils.node';\n\n/** @type {types['toArrayBuffer']} */\nexport function toArrayBuffer(data) {\n // Note: Should be called first, Buffers can trigger other detections below\n if (node.toArrayBuffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n data = node.toArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n return data._toArrayBuffer();\n }\n\n return assert(false);\n}\n\n/** @type {types['compareArrayBuffers']} */\nexport function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Concatenate ArrayBuffers\n/** @type {types['concatenateArrayBuffers']} */\nexport function concatenateArrayBuffers(...sources) {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map(\n source2 => (source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2)\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n// Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\nexport function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport IconButton from '../IconButton';\nexport var styles = {\n root: {\n padding: 9\n },\n checked: {},\n disabled: {},\n input: {\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n var autoFocus = props.autoFocus,\n checkedProp = props.checked,\n checkedIcon = props.checkedIcon,\n classes = props.classes,\n className = props.className,\n defaultChecked = props.defaultChecked,\n disabledProp = props.disabled,\n icon = props.icon,\n id = props.id,\n inputProps = props.inputProps,\n inputRef = props.inputRef,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onFocus = props.onFocus,\n readOnly = props.readOnly,\n required = props.required,\n tabIndex = props.tabIndex,\n type = props.type,\n value = props.value,\n other = _objectWithoutProperties(props, [\"autoFocus\", \"checked\", \"checkedIcon\", \"classes\", \"className\", \"defaultChecked\", \"disabled\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"]);\n\n var _useControlled = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n checked = _useControlled2[0],\n setCheckedState = _useControlled2[1];\n\n var muiFormControl = useFormControl();\n\n var handleFocus = function handleFocus(event) {\n if (onFocus) {\n onFocus(event);\n }\n\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n\n var handleInputChange = function handleInputChange(event) {\n var newChecked = event.target.checked;\n setCheckedState(newChecked);\n\n if (onChange) {\n // TODO v5: remove the second argument.\n onChange(event, newChecked);\n }\n };\n\n var disabled = disabledProp;\n\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n\n var hasLabelFor = type === 'checkbox' || type === 'radio';\n return /*#__PURE__*/React.createElement(IconButton, _extends({\n component: \"span\",\n className: clsx(classes.root, className, checked && classes.checked, disabled && classes.disabled),\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"input\", _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor && id,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n tabIndex: tabIndex,\n type: type,\n value: value\n }, inputProps)), checked ? checkedIcon : icon);\n}); // NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\n\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * If `true`, the switch will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /*\n * @ignore\n */\n name: PropTypes.string,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateSwitchBase'\n})(SwitchBase);","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","export default function requirePropFactory(componentNameInError) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n var requireProp = function requireProp(requiredProp) {\n return function (props, propName, componentName, location, propFullName) {\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameInError, \"` must be used on `\").concat(requiredProp, \"`.\"));\n }\n\n return null;\n };\n };\n\n return requireProp;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","class KeyboardEventHandler {\n constructor() {\n this.numKeys_ = 350;\n this.keyDown_ = [];\n this.keyPressed_ = [];\n\n for (let i = 0; i < this.numKeys_; i++) {\n this.keyDown_.push(false);\n this.keyPressed_.push(false);\n }\n }\n\n reset() {\n for (let i = 0; i < this.numKeys_; i++) {\n this.keyDown_[i] = false;\n this.keyPressed_[i] = false;\n }\n }\n\n keyDown(keyValue) {\n this.keyDown_[keyValue] = true;\n }\n\n keyUp(keyValue) {\n if(this.keyDown_[keyValue])\n {\n this.keyPressed_[keyValue] = true;\n }\n this.keyDown_[keyValue] = false;\n }\n\n isDown(key) {\n return this.keyDown_[key];\n }\n\n isPressed(key){\n const v = this.keyPressed_[key]; \n this.keyPressed_[key] = false;\n return v;\n }\n}\n\nexport { KeyboardEventHandler };\n","// https://developer.mozilla.org/en-US/docs/Web/API/Touch_events\n\n/////////////////////////////////////////////////////////////////////////\n// Globals\nvar gMaxPathCount = 5; // potentially 5 fingers\n/////////////////////////////////////////////////////////////////////////\n\n// TODO not fully implemented yet\nclass TouchPoint {\n constructor(x, y, pathId) {\n this.x_ = x;\n this.y_ = y;\n\n this.id_ = pathId; // for debugging\n }\n}\n\nclass TouchPath {\n constructor(id) {\n this.id_ = id;\n this.pathPoints_ = [];\n this.currentPathIndex_ = 0;\n }\n\n setId(id) {\n this.id_ = id;\n }\n\n getId() {\n return this.id_;\n }\n\n resetPath() {\n this.pathPoints_.length = 0;\n }\n\n addPoint(p) {\n this.pathPoints_.push(p);\n }\n}\n\n// we only handle single touch path\nclass TouchEventHandler {\n constructor() {\n this.width_ = 1;\n this.height_ = 1;\n\n this.isDown_ = false;\n\n this.screenX_ = 0;\n this.screenY_ = 0;\n this.clientX_ = 0;\n this.clientY_ = 0;\n\n this.lastX_ = 0;\n this.lastY_ = 0;\n\n this.deltaX_ = 0.0;\n this.deltaY_ = 0.0;\n\n this.normX_ = 0.0;\n this.normY_ = 0.0;\n\n this.inside_ = false;\n }\n\n isDown() {\n return this.isDown_;\n }\n\n getDeltaX() {\n return this.deltaX_;\n }\n getDeltaY() {\n return this.deltaY_;\n }\n\n getNormX() {\n return this.normX_;\n }\n getNormY() {\n return this.normY_;\n }\n\n resetMouseState() {\n this.flush();\n this.screenX_ = 0;\n this.screenY_ = 0;\n this.clientX_ = 0;\n this.clientY_ = 0;\n this.lastX_ = 0;\n this.lastY_ = 0;\n this.deltaX_ = 0.0;\n this.deltaY_ = 0.0;\n\n this.normX_ = 0.0;\n this.normY_ = 0.0;\n this.isDown_ = false;\n this.startNewPath_ = false;\n }\n\n flush() {\n this.deltaX_ = 0.0;\n this.deltaY_ = 0.0;\n }\n\n onTouchStart(event) {\n this.isDown_ = true;\n this.startNewPath_ = true;\n console.log(\"Touch down\");\n event.preventDefault();\n }\n\n onTouchEnd(event) {\n this.isDown_ = false;\n console.log(\"Touch up\");\n event.preventDefault();\n }\n\n onTouchCancel(event) {\n if (event.touches.length > 1) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.isDown_ = false;\n event.preventDefault();\n }\n\n onTouchMove(event) {\n var touchObj = event.changedTouches[0];\n this.screenX_ = touchObj.screenX;\n this.screenY_ = touchObj.screenY;\n this.clientX_ = touchObj.clientX;\n this.clientY_ = touchObj.clientY;\n\n // console.log(\"client:\" + this.clientX_ + \",\" + this.clientY_);\n let rect = touchObj.target.getBoundingClientRect();\n this.width_ = rect.right - rect.left;\n this.height_ = rect.bottom - rect.top;\n\n if (this.inside_) {\n if (this.startNewPath_) {\n this.lastX_ = this.clientX_;\n this.lastY_ = this.clientY_;\n this.startNewPath_ = false;\n\n console.log(\"delta:\" + this.deltaX_ + \",\" + this.deltaY_);\n }\n this.deltaX_ = (this.clientX_ - this.lastX_) / this.width_;\n this.deltaY_ = (this.clientY_ - this.lastY_) / this.height_;\n }\n\n // Check if the mouse cursor is in canvas.\n if (\n this.clientX_ >= rect.left &&\n this.clientX_ < rect.right &&\n this.clientY_ >= rect.top &&\n this.clientY_ < rect.bottom\n ) {\n this.lastX_ = this.clientX_;\n this.lastY_ = this.clientY_;\n this.inside_ = true;\n this.normX_ = this.clientX_ / (rect.right - rect.left);\n this.normY_ = 1.0 - this.clientY_ / (rect.bottom - rect.top);\n } else {\n this.inside_ = false;\n }\n event.preventDefault();\n }\n}\n\nexport { TouchEventHandler };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\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-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.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;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3zm13.71-9.37l-1.34-1.34a.9959.9959 0 00-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41z\"\n}), 'Brush');\n\nexports.default = _default;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n\n var buttonRef = React.useRef(null);\n\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n\n var rippleRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n\n var ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n\n if (!newClasses) {\n return baseClasses;\n }\n\n var nextClasses = _extends({}, baseClasses);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: The value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { makeStyles as makeStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return makeStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default makeStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Paper from '../Paper';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden'\n }\n};\nvar Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$raised = props.raised,\n raised = _props$raised === void 0 ? false : _props$raised,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"raised\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : 1,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the card will use raised styling.\n */\n raised: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCard'\n})(Card);","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n\n var defaultProps = theme.props[name];\n var propName;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n }\n};\nvar CardContent = /*#__PURE__*/React.forwardRef(function CardContent(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCardContent'\n})(CardContent);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from './ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n },\n\n /* Styles applied to the root element if `disablePadding={false}`. */\n padding: {\n paddingTop: 8,\n paddingBottom: 8\n },\n\n /* Styles applied to the root element if dense. */\n dense: {},\n\n /* Styles applied to the root element if a `subheader` is provided. */\n subheader: {\n paddingTop: 0\n }\n};\nvar List = /*#__PURE__*/React.forwardRef(function List(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'ul' : _props$component,\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disablePadding = props.disablePadding,\n disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding,\n subheader = props.subheader,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n\n var context = React.useMemo(function () {\n return {\n dense: dense\n };\n }, [dense]);\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader),\n ref: ref\n }, other), subheader, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n */\n dense: PropTypes.bool,\n\n /**\n * If `true`, vertical padding will be removed from the list.\n */\n disablePadding: PropTypes.bool,\n\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiList'\n})(List);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n flex: '1 1 auto',\n minWidth: 0,\n marginTop: 4,\n marginBottom: 4\n },\n\n /* Styles applied to the `Typography` components if primary and secondary are set. */\n multiline: {\n marginTop: 6,\n marginBottom: 6\n },\n\n /* Styles applied to the `Typography` components if dense. */\n dense: {},\n\n /* Styles applied to the root element if `inset={true}`. */\n inset: {\n paddingLeft: 56\n },\n\n /* Styles applied to the primary `Typography` component. */\n primary: {},\n\n /* Styles applied to the secondary `Typography` component. */\n secondary: {}\n};\nvar ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n _props$inset = props.inset,\n inset = _props$inset === void 0 ? false : _props$inset,\n primaryProp = props.primary,\n primaryTypographyProps = props.primaryTypographyProps,\n secondaryProp = props.secondary,\n secondaryTypographyProps = props.secondaryTypographyProps,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"]);\n\n var _React$useContext = React.useContext(ListContext),\n dense = _React$useContext.dense;\n\n var primary = primaryProp != null ? primaryProp : children;\n\n if (primary != null && primary.type !== Typography && !disableTypography) {\n primary = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: dense ? 'body2' : 'body1',\n className: classes.primary,\n component: \"span\",\n display: \"block\"\n }, primaryTypographyProps), primary);\n }\n\n var secondary = secondaryProp;\n\n if (secondary != null && secondary.type !== Typography && !disableTypography) {\n secondary = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: \"body2\",\n className: classes.secondary,\n color: \"textSecondary\",\n display: \"block\"\n }, secondaryTypographyProps), secondary);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, dense && classes.dense, inset && classes.inset, primary && secondary && classes.multiline),\n ref: ref\n }, other), primary, secondary);\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Alias for the `primary` prop.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the children won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `children` (or `primary`) text, and optional `secondary` text\n * with the Typography component.\n */\n disableTypography: PropTypes.bool,\n\n /**\n * If `true`, the children will be indented.\n * This should be used if there is no left avatar or left icon.\n */\n inset: PropTypes.bool,\n\n /**\n * The main content element.\n */\n primary: PropTypes.node,\n\n /**\n * These props will be forwarded to the primary typography component\n * (as long as disableTypography is not `true`).\n */\n primaryTypographyProps: PropTypes.object,\n\n /**\n * The secondary content element.\n */\n secondary: PropTypes.node,\n\n /**\n * These props will be forwarded to the secondary typography component\n * (as long as disableTypography is not `true`).\n */\n secondaryTypographyProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItemText'\n})(ListItemText);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getScale(value) {\n return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\n\nvar styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? 'auto' : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n\n var timer = React.useRef();\n var autoTimeout = React.useRef();\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration,\n delay = _getTransitionProps.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay\n })].join(',');\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration,\n delay = _getTransitionProps2.delay;\n\n var duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n };\n\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the child component.\n */\n disableStrictModeCompat: PropTypes.bool,\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType } from '@material-ui/utils';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\n\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container; // #StrictMode ready\n\n return ReactDOM.findDOMNode(container);\n}\n\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\n\nvar Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n var children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n onRendered = props.onRendered;\n\n var _React$useState = React.useState(null),\n mountNode = _React$useState[0],\n setMountNode = _React$useState[1];\n\n var handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(function () {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(function () {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return function () {\n setRef(ref, null);\n };\n }\n\n return undefined;\n }, [ref, mountNode, disablePortal]);\n useEnhancedEffect(function () {\n if (onRendered && (mountNode || disablePortal)) {\n onRendered();\n }\n }, [onRendered, mountNode, disablePortal]);\n\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n return /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n });\n }\n\n return children;\n }\n\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Callback fired once the children has been mounted into the `container`.\n *\n * This prop will be deprecated and removed in v5, the ref can be used instead.\n */\n onRendered: PropTypes.func\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\n\nexport default Portal;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListItem from '../ListItem';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, _defineProperty({\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n width: 'auto',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n }, theme.breakpoints.up('sm'), {\n minHeight: 'auto'\n })),\n // TODO v5: remove\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: {},\n\n /* Styles applied to the root element if `selected={true}`. */\n selected: {},\n\n /* Styles applied to the root element if dense. */\n dense: _extends({}, theme.typography.body2, {\n minHeight: 'auto'\n })\n };\n};\nvar MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'li' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n ListItemClasses = props.ListItemClasses,\n _props$role = props.role,\n role = _props$role === void 0 ? 'menuitem' : _props$role,\n selected = props.selected,\n tabIndexProp = props.tabIndex,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"ListItemClasses\", \"role\", \"selected\", \"tabIndex\"]);\n\n var tabIndex;\n\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n\n return /*#__PURE__*/React.createElement(ListItem, _extends({\n button: true,\n role: role,\n tabIndex: tabIndex,\n component: component,\n selected: selected,\n disableGutters: disableGutters,\n classes: _extends({\n dense: classes.dense\n }, ListItemClasses),\n className: clsx(classes.root, className, selected && classes.selected, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes = {\n /**\n * Menu item contents.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * `classes` prop applied to the [`ListItem`](/api/list-item/) element.\n */\n ListItemClasses: PropTypes.object,\n\n /**\n * @ignore\n */\n role: PropTypes.string,\n\n /**\n * @ignore\n */\n selected: PropTypes.bool,\n\n /**\n * @ignore\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiMenuItem'\n})(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nexport var styles = function styles(theme) {\n var backgroundColorDefault = theme.palette.type === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n zIndex: theme.zIndex.appBar,\n flexShrink: 0\n },\n\n /* Styles applied to the root element if `position=\"fixed\"`. */\n positionFixed: {\n position: 'fixed',\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n },\n\n /* Styles applied to the root element if `position=\"absolute\"`. */\n positionAbsolute: {\n position: 'absolute',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"sticky\"`. */\n positionSticky: {\n // ⚠️ sticky is not supported by IE 11.\n position: 'sticky',\n top: 0,\n left: 'auto',\n right: 0\n },\n\n /* Styles applied to the root element if `position=\"static\"`. */\n positionStatic: {\n position: 'static'\n },\n\n /* Styles applied to the root element if `position=\"relative\"`. */\n positionRelative: {\n position: 'relative'\n },\n\n /* Styles applied to the root element if `color=\"default\"`. */\n colorDefault: {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n\n /* Styles applied to the root element if `color=\"transparent\"`. */\n colorTransparent: {\n backgroundColor: 'transparent',\n color: 'inherit'\n }\n };\n};\nvar AppBar = /*#__PURE__*/React.forwardRef(function AppBar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$position = props.position,\n position = _props$position === void 0 ? 'fixed' : _props$position,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"position\"]);\n\n return /*#__PURE__*/React.createElement(Paper, _extends({\n square: true,\n component: \"header\",\n elevation: 4,\n className: clsx(classes.root, classes[\"position\".concat(capitalize(position))], classes[\"color\".concat(capitalize(color))], className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']),\n\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiAppBar'\n})(AppBar);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: _defineProperty({\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2)\n }, theme.breakpoints.up('sm'), {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }),\n\n /* Styles applied to the root element if `variant=\"regular\"`. */\n regular: theme.mixins.toolbar,\n\n /* Styles applied to the root element if `variant=\"dense\"`. */\n dense: {\n minHeight: 48\n }\n };\n};\nvar Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'regular' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"variant\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, classes[variant], className, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Toolbar.propTypes = {\n /**\n * Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, disables gutter padding.\n */\n disableGutters: PropTypes.bool,\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['regular', 'dense'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiToolbar'\n})(Toolbar);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, {\n boxSizing: 'border-box',\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: fade(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n },\n '&$disabled': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }),\n\n /* Styles applied to the span element that wraps the children. */\n label: {\n width: '100%',\n // Ensure the correct width for iOS Safari\n display: 'inherit',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n },\n\n /* Styles applied to the root element if `variant=\"text\"`. */\n text: {\n padding: '6px 8px'\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"primary\"`. */\n textPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"secondary\"`. */\n textSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n padding: '5px 15px',\n border: \"1px solid \".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'),\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabledBackground)\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"primary\"`. */\n outlinedPrimary: {\n color: theme.palette.primary.main,\n border: \"1px solid \".concat(fade(theme.palette.primary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.primary.main),\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"secondary\"`. */\n outlinedSecondary: {\n color: theme.palette.secondary.main,\n border: \"1px solid \".concat(fade(theme.palette.secondary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.secondary.main),\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabled)\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"`. */\n contained: {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2],\n '&:hover': {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300]\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n '&$focusVisible': {\n boxShadow: theme.shadows[6]\n },\n '&:active': {\n boxShadow: theme.shadows[8]\n },\n '&$disabled': {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"primary\"`. */\n containedPrimary: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.primary.main\n }\n }\n },\n\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"secondary\"`. */\n containedSecondary: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.secondary.main\n }\n }\n },\n\n /* Styles applied to the root element if `disableElevation={true}`. */\n disableElevation: {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n '&$focusVisible': {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n '&$disabled': {\n boxShadow: 'none'\n }\n },\n\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit',\n borderColor: 'currentColor'\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"text\"`. */\n textSizeSmall: {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"text\"`. */\n textSizeLarge: {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"outlined\"`. */\n outlinedSizeSmall: {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"outlined\"`. */\n outlinedSizeLarge: {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"contained\"`. */\n containedSizeSmall: {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n },\n\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"contained\"`. */\n containedSizeLarge: {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n },\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {},\n\n /* Styles applied to the root element if `size=\"large\"`. */\n sizeLarge: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n\n /* Styles applied to the startIcon element if supplied. */\n startIcon: {\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4,\n '&$iconSizeSmall': {\n marginLeft: -2\n }\n },\n\n /* Styles applied to the endIcon element if supplied. */\n endIcon: {\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8,\n '&$iconSizeSmall': {\n marginRight: -2\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"small\"`. */\n iconSizeSmall: {\n '& > *:first-child': {\n fontSize: 18\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"medium\"`. */\n iconSizeMedium: {\n '& > *:first-child': {\n fontSize: 20\n }\n },\n\n /* Styles applied to the icon element if supplied and `size=\"large\"`. */\n iconSizeLarge: {\n '& > *:first-child': {\n fontSize: 22\n }\n }\n };\n};\nvar Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableElevati = props.disableElevation,\n disableElevation = _props$disableElevati === void 0 ? false : _props$disableElevati,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n endIconProp = props.endIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n startIconProp = props.startIcon,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'text' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"]);\n\n var startIcon = startIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.startIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, startIconProp);\n var endIcon = endIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.endIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, endIconProp);\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, classes[variant], className, color === 'inherit' ? classes.colorInherit : color !== 'default' && classes[\"\".concat(variant).concat(capitalize(color))], size !== 'medium' && [classes[\"\".concat(variant, \"Size\").concat(capitalize(size))], classes[\"size\".concat(capitalize(size))]], disableElevation && classes.disableElevation, disabled && classes.disabled, fullWidth && classes.fullWidth),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.label\n }, startIcon, children, endIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the button.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, the button will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, no elevation is used.\n */\n disableElevation: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * If `true`, the button will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n\n /**\n * The size of the button.\n * `small` is equivalent to the dense button styling.\n */\n size: PropTypes.oneOf(['large', 'medium', 'small']),\n\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['contained', 'outlined', 'text'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButton'\n})(Button);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nvar SIZE = 44;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-block'\n },\n\n /* Styles applied to the root element if `variant=\"static\"`. */\n static: {\n transition: theme.transitions.create('transform')\n },\n\n /* Styles applied to the root element if `variant=\"indeterminate\"`. */\n indeterminate: {\n animation: '$circular-rotate 1.4s linear infinite'\n },\n\n /* Styles applied to the root element if `variant=\"determinate\"`. */\n determinate: {\n transition: theme.transitions.create('transform')\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the `svg` element. */\n svg: {\n display: 'block' // Keeps the progress centered\n\n },\n\n /* Styles applied to the `circle` svg path. */\n circle: {\n stroke: 'currentColor' // Use butt to follow the specification, by chance, it's already the default CSS value.\n // strokeLinecap: 'butt',\n\n },\n\n /* Styles applied to the `circle` svg path if `variant=\"static\"`. */\n circleStatic: {\n transition: theme.transitions.create('stroke-dashoffset')\n },\n\n /* Styles applied to the `circle` svg path if `variant=\"indeterminate\"`. */\n circleIndeterminate: {\n animation: '$circular-dash 1.4s ease-in-out infinite',\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: '0px' // Add the unit to fix a Edge 16 and below bug.\n\n },\n\n /* Styles applied to the `circle` svg path if `variant=\"determinate\"`. */\n circleDeterminate: {\n transition: theme.transitions.create('stroke-dashoffset')\n },\n '@keyframes circular-rotate': {\n '0%': {\n // Fix IE 11 wobbly\n transformOrigin: '50% 50%'\n },\n '100%': {\n transform: 'rotate(360deg)'\n }\n },\n '@keyframes circular-dash': {\n '0%': {\n strokeDasharray: '1px, 200px',\n strokeDashoffset: '0px'\n },\n '50%': {\n strokeDasharray: '100px, 200px',\n strokeDashoffset: '-15px'\n },\n '100%': {\n strokeDasharray: '100px, 200px',\n strokeDashoffset: '-125px'\n }\n },\n\n /* Styles applied to the `circle` svg path if `disableShrink={true}`. */\n circleDisableShrink: {\n animation: 'none'\n }\n };\n};\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\n\nvar CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$disableShrink = props.disableShrink,\n disableShrink = _props$disableShrink === void 0 ? false : _props$disableShrink,\n _props$size = props.size,\n size = _props$size === void 0 ? 40 : _props$size,\n style = props.style,\n _props$thickness = props.thickness,\n thickness = _props$thickness === void 0 ? 3.6 : _props$thickness,\n _props$value = props.value,\n value = _props$value === void 0 ? 0 : _props$value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'indeterminate' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"]);\n\n var circleStyle = {};\n var rootStyle = {};\n var rootProps = {};\n\n if (variant === 'determinate' || variant === 'static') {\n var circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = \"\".concat(((100 - value) / 100 * circumference).toFixed(3), \"px\");\n rootStyle.transform = 'rotate(-90deg)';\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], {\n 'determinate': classes.determinate,\n 'indeterminate': classes.indeterminate,\n 'static': classes.static\n }[variant]),\n style: _extends({\n width: size,\n height: size\n }, rootStyle, style),\n ref: ref,\n role: \"progressbar\"\n }, rootProps, other), /*#__PURE__*/React.createElement(\"svg\", {\n className: classes.svg,\n viewBox: \"\".concat(SIZE / 2, \" \").concat(SIZE / 2, \" \").concat(SIZE, \" \").concat(SIZE)\n }, /*#__PURE__*/React.createElement(\"circle\", {\n className: clsx(classes.circle, disableShrink && classes.circleDisableShrink, {\n 'determinate': classes.circleDeterminate,\n 'indeterminate': classes.circleIndeterminate,\n 'static': classes.circleStatic\n }[variant]),\n style: circleStyle,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n */\n disableShrink: chainPropTypes(PropTypes.bool, function (props) {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('Material-UI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n\n return null;\n }),\n\n /**\n * The size of the circle.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, e.g '3rem'.\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The thickness of the circle.\n */\n thickness: PropTypes.number,\n\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n */\n variant: chainPropTypes(PropTypes.oneOf(['determinate', 'indeterminate', 'static']), function (props) {\n var variant = props.variant;\n\n if (variant === 'static') {\n throw new Error('Material-UI: `variant=\"static\"` was deprecated. Use `variant=\"determinate\"` instead.');\n }\n\n return null;\n })\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCircularProgress',\n flip: false\n})(CircularProgress);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n margin: 0,\n padding: '16px 24px',\n flex: '0 0 auto'\n }\n};\nvar DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"disableTypography\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other), disableTypography ? children : /*#__PURE__*/React.createElement(Typography, {\n component: \"h2\",\n variant: \"h6\"\n }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogTitle.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the children won't be wrapped by a typography component.\n * For instance, this can be useful to render an h4 instead of the default h2.\n */\n disableTypography: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogTitle'\n})(DialogTitle);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top' // Fix alignment issue on Safari.\n\n },\n\n /* Styles applied to the root element if `margin=\"normal\"`. */\n marginNormal: {\n marginTop: 16,\n marginBottom: 8\n },\n\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n marginTop: 8,\n marginBottom: 4\n },\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n }\n};\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/components/text-fields/#components).\n *\n * ```jsx\n * \n * Email address\n * \n * We'll never share your email.\n * \n * ```\n *\n * ⚠️Only one input can be used within a FormControl.\n */\n\nvar FormControl = /*#__PURE__*/React.forwardRef(function FormControl(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$error = props.error,\n error = _props$error === void 0 ? false : _props$error,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n visuallyFocused = props.focused,\n _props$hiddenLabel = props.hiddenLabel,\n hiddenLabel = _props$hiddenLabel === void 0 ? false : _props$hiddenLabel,\n _props$margin = props.margin,\n margin = _props$margin === void 0 ? 'none' : _props$margin,\n _props$required = props.required,\n required = _props$required === void 0 ? false : _props$required,\n size = props.size,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"fullWidth\", \"focused\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"]);\n\n var _React$useState = React.useState(function () {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n var initialAdornedStart = false;\n\n if (children) {\n React.Children.forEach(children, function (child) {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n\n var input = isMuiElement(child, ['Select']) ? child.props.input : child;\n\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n\n return initialAdornedStart;\n }),\n adornedStart = _React$useState[0],\n setAdornedStart = _React$useState[1];\n\n var _React$useState2 = React.useState(function () {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n var initialFilled = false;\n\n if (children) {\n React.Children.forEach(children, function (child) {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n\n if (isFilled(child.props, true)) {\n initialFilled = true;\n }\n });\n }\n\n return initialFilled;\n }),\n filled = _React$useState2[0],\n setFilled = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n _focused = _React$useState3[0],\n setFocused = _React$useState3[1];\n\n var focused = visuallyFocused !== undefined ? visuallyFocused : _focused;\n\n if (disabled && focused) {\n setFocused(false);\n }\n\n var registerEffect;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var registeredInput = React.useRef(false);\n\n registerEffect = function registerEffect() {\n if (registeredInput.current) {\n console.error(['Material-UI: There are multiple InputBase components inside a FormControl.', 'This is not supported. It might cause infinite rendering loops.', 'Only use one InputBase.'].join('\\n'));\n }\n\n registeredInput.current = true;\n return function () {\n registeredInput.current = false;\n };\n };\n }\n\n var onFilled = React.useCallback(function () {\n setFilled(true);\n }, []);\n var onEmpty = React.useCallback(function () {\n setFilled(false);\n }, []);\n var childContext = {\n adornedStart: adornedStart,\n setAdornedStart: setAdornedStart,\n color: color,\n disabled: disabled,\n error: error,\n filled: filled,\n focused: focused,\n fullWidth: fullWidth,\n hiddenLabel: hiddenLabel,\n margin: (size === 'small' ? 'dense' : undefined) || margin,\n onBlur: function onBlur() {\n setFocused(false);\n },\n onEmpty: onEmpty,\n onFilled: onFilled,\n onFocus: function onFocus() {\n setFocused(true);\n },\n registerEffect: registerEffect,\n required: required,\n variant: variant\n };\n return /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, margin !== 'none' && classes[\"margin\".concat(capitalize(margin))], fullWidth && classes.fullWidth),\n ref: ref\n }, other), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The contents of the form control.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the label should be displayed in an error state.\n */\n error: PropTypes.bool,\n\n /**\n * If `true`, the component will be displayed in focused state.\n */\n focused: PropTypes.bool,\n\n /**\n * If `true`, the component will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * If `true`, the label will be hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n */\n hiddenLabel: PropTypes.bool,\n\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n\n /**\n * If `true`, the label will indicate that the input is required.\n */\n required: PropTypes.bool,\n\n /**\n * The size of the text field.\n */\n size: PropTypes.oneOf(['medium', 'small']),\n\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormControl'\n})(FormControl);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative'\n },\n\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {\n 'label + &': {\n marginTop: 16\n }\n },\n\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&:hover:not($disabled):before': {\n borderBottom: \"2px solid \".concat(theme.palette.text.primary),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: \"1px solid \".concat(bottomLineColor)\n }\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {},\n\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {},\n\n /* Styles applied to the `input` element. */\n input: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {},\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {},\n\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {}\n };\n};\nvar Input = /*#__PURE__*/React.forwardRef(function Input(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiInput'\n})(Input);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n var backgroundColor = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n backgroundColor: backgroundColor,\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.13)' : 'rgba(255, 255, 255, 0.13)',\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: backgroundColor\n }\n },\n '&$focused': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)'\n },\n '&$disabled': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)'\n }\n },\n\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n\n },\n '&:hover:before': {\n borderBottom: \"1px solid \".concat(theme.palette.text.primary)\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n\n /* Pseudo-class applied to the root element if the component is focused. */\n focused: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {\n paddingLeft: 12\n },\n\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {\n paddingRight: 12\n },\n\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: '27px 12px 10px',\n '&$marginDense': {\n paddingTop: 23,\n paddingBottom: 6\n }\n },\n\n /* Styles applied to the `input` element. */\n input: {\n padding: '27px 12px 10px',\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\n caretColor: theme.palette.type === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n },\n\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 23,\n paddingBottom: 6\n },\n\n /* Styles applied to the `input` if in ``. */\n inputHiddenLabel: {\n paddingTop: 18,\n paddingBottom: 19,\n '&$inputMarginDense': {\n paddingTop: 10,\n paddingBottom: 11\n }\n },\n\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n padding: 0\n },\n\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {\n paddingLeft: 0\n },\n\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {\n paddingRight: 0\n }\n };\n};\nvar FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiFilledInput'\n})(FilledInput);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n flex: '1 1 auto',\n WebkitOverflowScrolling: 'touch',\n // Add iOS momentum scrolling.\n overflowY: 'auto',\n padding: '8px 24px',\n '&:first-child': {\n // dialog without title\n paddingTop: 20\n }\n },\n\n /* Styles applied to the root element if `dividers={true}`. */\n dividers: {\n padding: '16px 24px',\n borderTop: \"1px solid \".concat(theme.palette.divider),\n borderBottom: \"1px solid \".concat(theme.palette.divider)\n }\n };\n};\nvar DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$dividers = props.dividers,\n dividers = _props$dividers === void 0 ? false : _props$dividers,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"dividers\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, dividers && classes.dividers),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Display the top and bottom dividers.\n */\n dividers: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogContent'\n})(DialogContent);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n },\n\n /* Styles applied to the root element if `disableSpacing={false}`. */\n spacing: {\n '& > :not(:first-child)': {\n marginLeft: 8\n }\n }\n};\nvar DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(props, ref) {\n var _props$disableSpacing = props.disableSpacing,\n disableSpacing = _props$disableSpacing === void 0 ? false : _props$disableSpacing,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"disableSpacing\", \"classes\", \"className\"]);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, !disableSpacing && classes.spacing),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n */\n disableSpacing: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiDialogActions'\n})(DialogActions);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport { useFormControl } from '../FormControl';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n WebkitTapHighlightColor: 'transparent',\n marginLeft: -11,\n marginRight: 16,\n // used for row presentation of radio/checkbox\n '&$disabled': {\n cursor: 'default'\n }\n },\n\n /* Styles applied to the root element if `labelPlacement=\"start\"`. */\n labelPlacementStart: {\n flexDirection: 'row-reverse',\n marginLeft: 16,\n // used for row presentation of radio/checkbox\n marginRight: -11\n },\n\n /* Styles applied to the root element if `labelPlacement=\"top\"`. */\n labelPlacementTop: {\n flexDirection: 'column-reverse',\n marginLeft: 16\n },\n\n /* Styles applied to the root element if `labelPlacement=\"bottom\"`. */\n labelPlacementBottom: {\n flexDirection: 'column',\n marginLeft: 16\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n\n /* Styles applied to the label's Typography component. */\n label: {\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n }\n };\n};\n/**\n * Drop in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\n\nvar FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(props, ref) {\n var checked = props.checked,\n classes = props.classes,\n className = props.className,\n control = props.control,\n disabledProp = props.disabled,\n inputRef = props.inputRef,\n label = props.label,\n _props$labelPlacement = props.labelPlacement,\n labelPlacement = _props$labelPlacement === void 0 ? 'end' : _props$labelPlacement,\n name = props.name,\n onChange = props.onChange,\n value = props.value,\n other = _objectWithoutProperties(props, [\"checked\", \"classes\", \"className\", \"control\", \"disabled\", \"inputRef\", \"label\", \"labelPlacement\", \"name\", \"onChange\", \"value\"]);\n\n var muiFormControl = useFormControl();\n var disabled = disabledProp;\n\n if (typeof disabled === 'undefined' && typeof control.props.disabled !== 'undefined') {\n disabled = control.props.disabled;\n }\n\n if (typeof disabled === 'undefined' && muiFormControl) {\n disabled = muiFormControl.disabled;\n }\n\n var controlProps = {\n disabled: disabled\n };\n ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(function (key) {\n if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n controlProps[key] = props[key];\n }\n });\n return /*#__PURE__*/React.createElement(\"label\", _extends({\n className: clsx(classes.root, className, labelPlacement !== 'end' && classes[\"labelPlacement\".concat(capitalize(labelPlacement))], disabled && classes.disabled),\n ref: ref\n }, other), /*#__PURE__*/React.cloneElement(control, controlProps), /*#__PURE__*/React.createElement(Typography, {\n component: \"span\",\n className: clsx(classes.label, disabled && classes.disabled)\n }, label));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the component appears selected.\n */\n checked: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * A control element. For instance, it can be be a `Radio`, a `Switch` or a `Checkbox`.\n */\n control: PropTypes.element.isRequired,\n\n /**\n * If `true`, the control will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * The text to be used in an enclosing label element.\n */\n label: PropTypes.node,\n\n /**\n * The position of the label.\n */\n labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n\n /**\n * @ignore\n */\n name: PropTypes.string,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormControlLabel'\n})(FormControlLabel);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// A grid component using the following libs as inspiration.\n//\n// For the implementation:\n// - https://getbootstrap.com/docs/4.3/layout/grid/\n// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css\n// - https://github.com/roylee0704/react-flexbox-grid\n// - https://material.angularjs.org/latest/layout/introduction\n//\n// Follow this flexbox Guide to better understand the underlying model:\n// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport requirePropFactory from '../utils/requirePropFactory';\nvar SPACINGS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\nfunction generateGrid(globalStyles, theme, breakpoint) {\n var styles = {};\n GRID_SIZES.forEach(function (size) {\n var key = \"grid-\".concat(breakpoint, \"-\").concat(size);\n\n if (size === true) {\n // For the auto layouting\n styles[key] = {\n flexBasis: 0,\n flexGrow: 1,\n maxWidth: '100%'\n };\n return;\n }\n\n if (size === 'auto') {\n styles[key] = {\n flexBasis: 'auto',\n flexGrow: 0,\n maxWidth: 'none'\n };\n return;\n } // Keep 7 significant numbers.\n\n\n var width = \"\".concat(Math.round(size / 12 * 10e7) / 10e5, \"%\"); // Close to the bootstrap implementation:\n // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41\n\n styles[key] = {\n flexBasis: width,\n flexGrow: 0,\n maxWidth: width\n };\n }); // No need for a media query for the first size.\n\n if (breakpoint === 'xs') {\n _extends(globalStyles, styles);\n } else {\n globalStyles[theme.breakpoints.up(breakpoint)] = styles;\n }\n}\n\nfunction getOffset(val) {\n var div = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var parse = parseFloat(val);\n return \"\".concat(parse / div).concat(String(val).replace(String(parse), '') || 'px');\n}\n\nfunction generateGutter(theme, breakpoint) {\n var styles = {};\n SPACINGS.forEach(function (spacing) {\n var themeSpacing = theme.spacing(spacing);\n\n if (themeSpacing === 0) {\n return;\n }\n\n styles[\"spacing-\".concat(breakpoint, \"-\").concat(spacing)] = {\n margin: \"-\".concat(getOffset(themeSpacing, 2)),\n width: \"calc(100% + \".concat(getOffset(themeSpacing), \")\"),\n '& > $item': {\n padding: getOffset(themeSpacing, 2)\n }\n };\n });\n return styles;\n} // Default CSS values\n// flex: '0 1 auto',\n// flexDirection: 'row',\n// alignItems: 'flex-start',\n// flexWrap: 'nowrap',\n// justifyContent: 'flex-start',\n\n\nexport var styles = function styles(theme) {\n return _extends({\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the root element if `container={true}`. */\n container: {\n boxSizing: 'border-box',\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%'\n },\n\n /* Styles applied to the root element if `item={true}`. */\n item: {\n boxSizing: 'border-box',\n margin: '0' // For instance, it's useful when used with a `figure` element.\n\n },\n\n /* Styles applied to the root element if `zeroMinWidth={true}`. */\n zeroMinWidth: {\n minWidth: 0\n },\n\n /* Styles applied to the root element if `direction=\"column\"`. */\n 'direction-xs-column': {\n flexDirection: 'column'\n },\n\n /* Styles applied to the root element if `direction=\"column-reverse\"`. */\n 'direction-xs-column-reverse': {\n flexDirection: 'column-reverse'\n },\n\n /* Styles applied to the root element if `direction=\"row-reverse\"`. */\n 'direction-xs-row-reverse': {\n flexDirection: 'row-reverse'\n },\n\n /* Styles applied to the root element if `wrap=\"nowrap\"`. */\n 'wrap-xs-nowrap': {\n flexWrap: 'nowrap'\n },\n\n /* Styles applied to the root element if `wrap=\"reverse\"`. */\n 'wrap-xs-wrap-reverse': {\n flexWrap: 'wrap-reverse'\n },\n\n /* Styles applied to the root element if `alignItems=\"center\"`. */\n 'align-items-xs-center': {\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `alignItems=\"flex-start\"`. */\n 'align-items-xs-flex-start': {\n alignItems: 'flex-start'\n },\n\n /* Styles applied to the root element if `alignItems=\"flex-end\"`. */\n 'align-items-xs-flex-end': {\n alignItems: 'flex-end'\n },\n\n /* Styles applied to the root element if `alignItems=\"baseline\"`. */\n 'align-items-xs-baseline': {\n alignItems: 'baseline'\n },\n\n /* Styles applied to the root element if `alignContent=\"center\"`. */\n 'align-content-xs-center': {\n alignContent: 'center'\n },\n\n /* Styles applied to the root element if `alignContent=\"flex-start\"`. */\n 'align-content-xs-flex-start': {\n alignContent: 'flex-start'\n },\n\n /* Styles applied to the root element if `alignContent=\"flex-end\"`. */\n 'align-content-xs-flex-end': {\n alignContent: 'flex-end'\n },\n\n /* Styles applied to the root element if `alignContent=\"space-between\"`. */\n 'align-content-xs-space-between': {\n alignContent: 'space-between'\n },\n\n /* Styles applied to the root element if `alignContent=\"space-around\"`. */\n 'align-content-xs-space-around': {\n alignContent: 'space-around'\n },\n\n /* Styles applied to the root element if `justify=\"center\"`. */\n 'justify-xs-center': {\n justifyContent: 'center'\n },\n\n /* Styles applied to the root element if `justify=\"flex-end\"`. */\n 'justify-xs-flex-end': {\n justifyContent: 'flex-end'\n },\n\n /* Styles applied to the root element if `justify=\"space-between\"`. */\n 'justify-xs-space-between': {\n justifyContent: 'space-between'\n },\n\n /* Styles applied to the root element if `justify=\"space-around\"`. */\n 'justify-xs-space-around': {\n justifyContent: 'space-around'\n },\n\n /* Styles applied to the root element if `justify=\"space-evenly\"`. */\n 'justify-xs-space-evenly': {\n justifyContent: 'space-evenly'\n }\n }, generateGutter(theme, 'xs'), theme.breakpoints.keys.reduce(function (accumulator, key) {\n // Use side effect over immutability for better performance.\n generateGrid(accumulator, theme, key);\n return accumulator;\n }, {}));\n};\nvar Grid = /*#__PURE__*/React.forwardRef(function Grid(props, ref) {\n var _props$alignContent = props.alignContent,\n alignContent = _props$alignContent === void 0 ? 'stretch' : _props$alignContent,\n _props$alignItems = props.alignItems,\n alignItems = _props$alignItems === void 0 ? 'stretch' : _props$alignItems,\n classes = props.classes,\n classNameProp = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$container = props.container,\n container = _props$container === void 0 ? false : _props$container,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'row' : _props$direction,\n _props$item = props.item,\n item = _props$item === void 0 ? false : _props$item,\n _props$justify = props.justify,\n justify = _props$justify === void 0 ? 'flex-start' : _props$justify,\n _props$lg = props.lg,\n lg = _props$lg === void 0 ? false : _props$lg,\n _props$md = props.md,\n md = _props$md === void 0 ? false : _props$md,\n _props$sm = props.sm,\n sm = _props$sm === void 0 ? false : _props$sm,\n _props$spacing = props.spacing,\n spacing = _props$spacing === void 0 ? 0 : _props$spacing,\n _props$wrap = props.wrap,\n wrap = _props$wrap === void 0 ? 'wrap' : _props$wrap,\n _props$xl = props.xl,\n xl = _props$xl === void 0 ? false : _props$xl,\n _props$xs = props.xs,\n xs = _props$xs === void 0 ? false : _props$xs,\n _props$zeroMinWidth = props.zeroMinWidth,\n zeroMinWidth = _props$zeroMinWidth === void 0 ? false : _props$zeroMinWidth,\n other = _objectWithoutProperties(props, [\"alignContent\", \"alignItems\", \"classes\", \"className\", \"component\", \"container\", \"direction\", \"item\", \"justify\", \"lg\", \"md\", \"sm\", \"spacing\", \"wrap\", \"xl\", \"xs\", \"zeroMinWidth\"]);\n\n var className = clsx(classes.root, classNameProp, container && [classes.container, spacing !== 0 && classes[\"spacing-xs-\".concat(String(spacing))]], item && classes.item, zeroMinWidth && classes.zeroMinWidth, direction !== 'row' && classes[\"direction-xs-\".concat(String(direction))], wrap !== 'wrap' && classes[\"wrap-xs-\".concat(String(wrap))], alignItems !== 'stretch' && classes[\"align-items-xs-\".concat(String(alignItems))], alignContent !== 'stretch' && classes[\"align-content-xs-\".concat(String(alignContent))], justify !== 'flex-start' && classes[\"justify-xs-\".concat(String(justify))], xs !== false && classes[\"grid-xs-\".concat(String(xs))], sm !== false && classes[\"grid-sm-\".concat(String(sm))], md !== false && classes[\"grid-md-\".concat(String(md))], lg !== false && classes[\"grid-lg-\".concat(String(lg))], xl !== false && classes[\"grid-xl-\".concat(String(xl))]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: className,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grid.propTypes = {\n /**\n * Defines the `align-content` style property.\n * It's applied for all screen sizes.\n */\n alignContent: PropTypes.oneOf(['stretch', 'center', 'flex-start', 'flex-end', 'space-between', 'space-around']),\n\n /**\n * Defines the `align-items` style property.\n * It's applied for all screen sizes.\n */\n alignItems: PropTypes.oneOf(['flex-start', 'center', 'flex-end', 'stretch', 'baseline']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, the component will have the flex *container* behavior.\n * You should be wrapping *items* with a *container*.\n */\n container: PropTypes.bool,\n\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n */\n direction: PropTypes.oneOf(['row', 'row-reverse', 'column', 'column-reverse']),\n\n /**\n * If `true`, the component will have the flex *item* behavior.\n * You should be wrapping *items* with a *container*.\n */\n item: PropTypes.bool,\n\n /**\n * Defines the `justify-content` style property.\n * It is applied for all screen sizes.\n */\n justify: PropTypes.oneOf(['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly']),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `lg` breakpoint and wider screens if not overridden.\n */\n lg: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `md` breakpoint and wider screens if not overridden.\n */\n md: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `sm` breakpoint and wider screens if not overridden.\n */\n sm: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the space between the type `item` component.\n * It can only be used on a type `container` component.\n */\n spacing: PropTypes.oneOf(SPACINGS),\n\n /**\n * Defines the `flex-wrap` style property.\n * It's applied for all screen sizes.\n */\n wrap: PropTypes.oneOf(['nowrap', 'wrap', 'wrap-reverse']),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for the `xl` breakpoint and wider screens.\n */\n xl: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * Defines the number of grids the component is going to use.\n * It's applied for all the screen sizes with the lowest priority.\n */\n xs: PropTypes.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),\n\n /**\n * If `true`, it sets `min-width: 0` on the item.\n * Refer to the limitations section of the documentation to better understand the use case.\n */\n zeroMinWidth: PropTypes.bool\n} : void 0;\nvar StyledGrid = withStyles(styles, {\n name: 'MuiGrid'\n})(Grid);\n\nif (process.env.NODE_ENV !== 'production') {\n var requireProp = requirePropFactory('Grid');\n StyledGrid.propTypes = _extends({}, StyledGrid.propTypes, {\n alignContent: requireProp('container'),\n alignItems: requireProp('container'),\n direction: requireProp('container'),\n justify: requireProp('container'),\n lg: requireProp('item'),\n md: requireProp('item'),\n sm: requireProp('item'),\n spacing: requireProp('container'),\n wrap: requireProp('container'),\n xs: requireProp('item'),\n zeroMinWidth: requireProp('item')\n });\n}\n\nexport default StyledGrid;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// @inheritedComponent IconButton\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nimport capitalize from '../utils/capitalize';\nimport SwitchBase from '../internal/SwitchBase';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n width: 34 + 12 * 2,\n height: 14 + 12 * 2,\n overflow: 'hidden',\n padding: 12,\n boxSizing: 'border-box',\n position: 'relative',\n flexShrink: 0,\n zIndex: 0,\n // Reset the stacking context.\n verticalAlign: 'middle',\n // For correct alignment with the text.\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n\n /* Styles applied to the root element if `edge=\"start\"`. */\n edgeStart: {\n marginLeft: -8\n },\n\n /* Styles applied to the root element if `edge=\"end\"`. */\n edgeEnd: {\n marginRight: -8\n },\n\n /* Styles applied to the internal `SwitchBase` component's `root` class. */\n switchBase: {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n // Render above the focus ripple.\n color: theme.palette.type === 'light' ? theme.palette.grey[50] : theme.palette.grey[400],\n transition: theme.transitions.create(['left', 'transform'], {\n duration: theme.transitions.duration.shortest\n }),\n '&$checked': {\n transform: 'translateX(20px)'\n },\n '&$disabled': {\n color: theme.palette.type === 'light' ? theme.palette.grey[400] : theme.palette.grey[800]\n },\n '&$checked + $track': {\n opacity: 0.5\n },\n '&$disabled + $track': {\n opacity: theme.palette.type === 'light' ? 0.12 : 0.1\n }\n },\n\n /* Styles applied to the internal SwitchBase component's root element if `color=\"primary\"`. */\n colorPrimary: {\n '&$checked': {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.type === 'light' ? theme.palette.grey[400] : theme.palette.grey[800]\n },\n '&$checked + $track': {\n backgroundColor: theme.palette.primary.main\n },\n '&$disabled + $track': {\n backgroundColor: theme.palette.type === 'light' ? theme.palette.common.black : theme.palette.common.white\n }\n },\n\n /* Styles applied to the internal SwitchBase component's root element if `color=\"secondary\"`. */\n colorSecondary: {\n '&$checked': {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n '&$disabled': {\n color: theme.palette.type === 'light' ? theme.palette.grey[400] : theme.palette.grey[800]\n },\n '&$checked + $track': {\n backgroundColor: theme.palette.secondary.main\n },\n '&$disabled + $track': {\n backgroundColor: theme.palette.type === 'light' ? theme.palette.common.black : theme.palette.common.white\n }\n },\n\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {\n width: 40,\n height: 24,\n padding: 7,\n '& $thumb': {\n width: 16,\n height: 16\n },\n '& $switchBase': {\n padding: 4,\n '&$checked': {\n transform: 'translateX(16px)'\n }\n }\n },\n\n /* Pseudo-class applied to the internal `SwitchBase` component's `checked` class. */\n checked: {},\n\n /* Pseudo-class applied to the internal SwitchBase component's disabled class. */\n disabled: {},\n\n /* Styles applied to the internal SwitchBase component's input element. */\n input: {\n left: '-100%',\n width: '300%'\n },\n\n /* Styles used to create the thumb passed to the internal `SwitchBase` component `icon` prop. */\n thumb: {\n boxShadow: theme.shadows[1],\n backgroundColor: 'currentColor',\n width: 20,\n height: 20,\n borderRadius: '50%'\n },\n\n /* Styles applied to the track element. */\n track: {\n height: '100%',\n width: '100%',\n borderRadius: 14 / 2,\n zIndex: -1,\n transition: theme.transitions.create(['opacity', 'background-color'], {\n duration: theme.transitions.duration.shortest\n }),\n backgroundColor: theme.palette.type === 'light' ? theme.palette.common.black : theme.palette.common.white,\n opacity: theme.palette.type === 'light' ? 0.38 : 0.3\n }\n };\n};\nvar Switch = /*#__PURE__*/React.forwardRef(function Switch(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n _props$edge = props.edge,\n edge = _props$edge === void 0 ? false : _props$edge,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"edge\", \"size\"]);\n\n var icon = /*#__PURE__*/React.createElement(\"span\", {\n className: classes.thumb\n });\n return /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.root, className, {\n 'start': classes.edgeStart,\n 'end': classes.edgeEnd\n }[edge], size === \"small\" && classes[\"size\".concat(capitalize(size))])\n }, /*#__PURE__*/React.createElement(SwitchBase, _extends({\n type: \"checkbox\",\n icon: icon,\n checkedIcon: icon,\n classes: {\n root: clsx(classes.switchBase, classes[\"color\".concat(capitalize(color))]),\n input: classes.input,\n checked: classes.checked,\n disabled: classes.disabled\n },\n ref: ref\n }, other)), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.track\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Switch.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'primary', 'secondary']),\n\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * If `true`, the switch will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node,\n\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n\n /**\n * The size of the switch.\n * `small` is equivalent to the dense switch styling.\n */\n size: PropTypes.oneOf(['medium', 'small']),\n\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiSwitch'\n})(Switch);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n alignItems: 'center',\n padding: 16\n },\n\n /* Styles applied to the avatar element. */\n avatar: {\n flex: '0 0 auto',\n marginRight: 16\n },\n\n /* Styles applied to the action element. */\n action: {\n flex: '0 0 auto',\n alignSelf: 'flex-start',\n marginTop: -8,\n marginRight: -8\n },\n\n /* Styles applied to the content wrapper element. */\n content: {\n flex: '1 1 auto'\n },\n\n /* Styles applied to the title Typography element. */\n title: {},\n\n /* Styles applied to the subheader Typography element. */\n subheader: {}\n};\nvar CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(props, ref) {\n var action = props.action,\n avatar = props.avatar,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n subheaderProp = props.subheader,\n subheaderTypographyProps = props.subheaderTypographyProps,\n titleProp = props.title,\n titleTypographyProps = props.titleTypographyProps,\n other = _objectWithoutProperties(props, [\"action\", \"avatar\", \"classes\", \"className\", \"component\", \"disableTypography\", \"subheader\", \"subheaderTypographyProps\", \"title\", \"titleTypographyProps\"]);\n\n var title = titleProp;\n\n if (title != null && title.type !== Typography && !disableTypography) {\n title = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: avatar ? 'body2' : 'h5',\n className: classes.title,\n component: \"span\",\n display: \"block\"\n }, titleTypographyProps), title);\n }\n\n var subheader = subheaderProp;\n\n if (subheader != null && subheader.type !== Typography && !disableTypography) {\n subheader = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: avatar ? 'body2' : 'body1',\n className: classes.subheader,\n color: \"textSecondary\",\n component: \"span\",\n display: \"block\"\n }, subheaderTypographyProps), subheader);\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className),\n ref: ref\n }, other), avatar && /*#__PURE__*/React.createElement(\"div\", {\n className: classes.avatar\n }, avatar), /*#__PURE__*/React.createElement(\"div\", {\n className: classes.content\n }, title, subheader), action && /*#__PURE__*/React.createElement(\"div\", {\n className: classes.action\n }, action));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display in the card header.\n */\n action: PropTypes.node,\n\n /**\n * The Avatar for the Card Header.\n */\n avatar: PropTypes.node,\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `title` text, and optional `subheader` text\n * with the Typography component.\n */\n disableTypography: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n subheader: PropTypes.node,\n\n /**\n * These props will be forwarded to the subheader\n * (as long as disableTypography is not `true`).\n */\n subheaderTypographyProps: PropTypes.object,\n\n /**\n * The content of the Card Title.\n */\n title: PropTypes.node,\n\n /**\n * These props will be forwarded to the title\n * (as long as disableTypography is not `true`).\n */\n titleTypographyProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiCardHeader'\n})(CardHeader);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: You should return an object from your theme function, i.e.', ' ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: You are providing a theme function prop to the ThemeProvider component:', ' outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n AAD = \"AAD\",\r\n OIDC = \"OIDC\"\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nexport class MathUtils {\r\n\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n static decimalToHex(num: number): string {\r\n let hex: string = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\nexport class GuidGenerator {\r\n\r\n // browser crypto object used to generate random values\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n generateGuid(): string {\r\n try {\r\n const buffer: Uint8Array = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n const hex: string = \"0123456789abcdef\";\r\n let r: number = 0;\r\n let guidResponse: string = \"\";\r\n for (let i: number = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n }\r\n\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class BrowserStringUtils {\r\n\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr \r\n */\r\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\r\n let nChr;\r\n let nArrLen = 0;\r\n const nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n\r\n const aBytes = new Uint8Array(nArrLen);\r\n\r\n /* transcription... */\r\n\r\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n } else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n\r\n return aBytes; \r\n }\r\n\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString \r\n */\r\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\r\n const data = new ArrayBuffer(dataString.length);\r\n const dataView = new Uint8Array(data);\r\n for (let i: number = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes \r\n */\r\n static utf8ArrToString (aBytes: Uint8Array): string {\r\n let sView = \"\";\r\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(\r\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart\r\n );\r\n }\r\n return sView;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Encode {\r\n \r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input \r\n */\r\n urlEncode(input: string): string {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n }\r\n\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr \r\n */\r\n urlEncodeArr(inputArr: Uint8Array): string {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input \r\n */\r\n encode(input: string): string {\r\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes \r\n */\r\n private base64EncArr(aBytes: Uint8Array): string { \r\n const eqLen = (3 - (aBytes.length % 3)) % 3;\r\n let sB64Enc = \"\";\r\n \r\n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(\r\n this.uint6ToB64(nUint24 >>> 18 & 63), \r\n this.uint6ToB64(nUint24 >>> 12 & 63), \r\n this.uint6ToB64(nUint24 >>> 6 & 63), \r\n this.uint6ToB64(nUint24 & 63)\r\n );\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n }\r\n\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6 \r\n */\r\n private uint6ToB64 (nUint6: number): number {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class Base64Decode {\r\n\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input \r\n */\r\n decode(input: string): string {\r\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n\r\n const inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String \r\n * @param nBlockSize \r\n */\r\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\r\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, \"\");\r\n const nInLen = sB64Enc.length;\r\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n const aBytes = new Uint8Array(nOutLen);\r\n\r\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return aBytes;\r\n }\r\n\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum \r\n */\r\n private b64ToUint6(charNum: number): number {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ? \r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { PkceCodes } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\n// Constant byte array length\r\nconst RANDOM_BYTE_ARR_LENGTH = 32;\r\n\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nexport class PkceGenerator {\r\n\r\n private base64Encode: Base64Encode;\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n async generateCodes(): Promise {\r\n const codeVerifier = this.generateCodeVerifier();\r\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\r\n return {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n };\r\n }\r\n\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n private generateCodeVerifier(): string {\r\n try {\r\n // Generate random values as utf-8\r\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise {\r\n try {\r\n // hashed verifier\r\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\r\n // encode hash as base64\r\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nconst S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nconst MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\r\n\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nexport class BrowserCrypto {\r\n\r\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\r\n\r\n constructor() {\r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString \r\n */\r\n async sha256Digest(dataString: string): Promise {\r\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n\r\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\r\n }\r\n\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer \r\n */\r\n getRandomValues(dataBuffer: Uint8Array): void {\r\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n }\r\n\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable \r\n * @param usages \r\n */\r\n async generateKeyPair(extractable: boolean, usages: Array): Promise {\r\n return (\r\n this.hasIECrypto() ? \r\n this.msCryptoGenerateKey(extractable, usages) \r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\r\n ) as Promise;\r\n }\r\n\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key \r\n * @param format \r\n */\r\n async exportJwk(key: CryptoKey): Promise {\r\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\r\n }\r\n\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array): Promise {\r\n const keyString = BrowserCrypto.getJwkString(key);\r\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n\r\n return this.hasIECrypto() ? \r\n this.msCryptoImportKey(keyBuffer, extractable, usages) \r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Signs given data with given key\r\n * @param key \r\n * @param data \r\n */\r\n async sign(key: CryptoKey, data: ArrayBuffer): Promise {\r\n return this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n }\r\n\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n private hasCryptoAPI(): boolean {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n }\r\n\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n private hasIECrypto(): boolean {\r\n return \"msCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n private hasBrowserCrypto(): boolean {\r\n return \"crypto\" in window;\r\n }\r\n\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise {\r\n return window.crypto.subtle.digest(algorithm, data);\r\n }\r\n\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise {\r\n return new Promise((resolve, reject) => {\r\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoGenerateKey(extractable: boolean, usages: Array): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msGenerateKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key \r\n * @param format \r\n */\r\n private async msCryptoExportJwk(key: CryptoKey): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\r\n const resultBuffer: ArrayBuffer = e.target.result;\r\n\r\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, \"\")\r\n .replace(/\\n/g, \"\")\r\n .replace(/\\t/g, \"\")\r\n .split(\" \").join(\"\")\r\n .replace(\"\\u0000\", \"\");\r\n\r\n try {\r\n resolve(JSON.parse(resultString));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n msExportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for importKey\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msImportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key \r\n * @param data \r\n */\r\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msSign.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk \r\n */\r\n static getJwkString(jwk: JsonWebKey): string {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\ninterface IDBOpenDBRequestEvent extends Event {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBRequestEvent extends Event {\r\n target: IDBRequest & EventTarget;\r\n}\r\n\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nexport class DatabaseStorage{\r\n private db: IDBDatabase|undefined;\r\n private dbName: string;\r\n private tableName: string;\r\n private version: number;\r\n private dbOpen: boolean;\r\n\r\n constructor(dbName: string, tableName: string, version: number) {\r\n this.dbName = dbName;\r\n this.tableName = tableName;\r\n this.version = version;\r\n this.dbOpen = false;\r\n }\r\n\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n async open(): Promise {\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n const openDB = window.indexedDB.open(this.dbName, this.version);\r\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\r\n const event = e as IDBOpenOnUpgradeNeededEvent;\r\n event.target.result.createObjectStore(this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBOpenDBRequestEvent;\r\n this.db = event.target.result;\r\n this.dbOpen = true;\r\n resolve();\r\n });\r\n\r\n openDB.addEventListener(\"error\", error => reject(error));\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key \r\n */\r\n async get(key: string): Promise {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key \r\n * @param payload \r\n */\r\n async put(key: string, payload: T): Promise {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise((resolve: Function, reject: Function) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbPut.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseAuthRequest, ICrypto, PkceCodes, SignedHttpRequest } from \"@azure/msal-common\";\r\nimport { GuidGenerator } from \"./GuidGenerator\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { Base64Decode } from \"../encode/Base64Decode\";\r\nimport { PkceGenerator } from \"./PkceGenerator\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nimport { DatabaseStorage } from \"../cache/DatabaseStorage\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\n\r\nexport type CachedKeyPair = {\r\n publicKey: CryptoKey,\r\n privateKey: CryptoKey,\r\n requestMethod?: string,\r\n requestUri?: string\r\n};\r\n\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nexport class CryptoOps implements ICrypto {\r\n\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n private b64Encode: Base64Encode;\r\n private b64Decode: Base64Decode;\r\n private pkceGenerator: PkceGenerator;\r\n\r\n private static POP_KEY_USAGES: Array = [\"sign\", \"verify\"];\r\n private static EXTRACTABLE: boolean = true;\r\n\r\n private static DB_VERSION = 1;\r\n private static DB_NAME = \"msal.db\";\r\n private static TABLE_NAME =`${CryptoOps.DB_NAME}.keys`;\r\n private cache: DatabaseStorage;\r\n\r\n constructor() {\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto();\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = new DatabaseStorage(CryptoOps.DB_NAME, CryptoOps.TABLE_NAME, CryptoOps.DB_VERSION);\r\n }\r\n\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid(): string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n /**\r\n * Encodes input string to base64.\r\n * @param input \r\n */\r\n base64Encode(input: string): string {\r\n return this.b64Encode.encode(input);\r\n } \r\n \r\n /**\r\n * Decodes input string from base64.\r\n * @param input \r\n */\r\n base64Decode(input: string): string {\r\n return this.b64Decode.decode(input);\r\n }\r\n\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n async generatePkceCodes(): Promise {\r\n return this.pkceGenerator.generateCodes();\r\n }\r\n\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n async getPublicKeyThumbprint(request: BaseAuthRequest): Promise {\r\n // Generate Keypair\r\n const keyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\r\n\r\n // Generate Thumbprint for Public Key\r\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\r\n const pubKeyThumprintObj: JsonWebKey = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n const publicJwkBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(publicJwkString);\r\n const publicJwkHash: string = this.b64Encode.urlEncodeArr(new Uint8Array(publicJwkBuffer));\r\n\r\n // Generate Thumbprint for Private Key\r\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\r\n // Re-import private key to make it unextractable\r\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\r\n\r\n // Store Keypair data in keystore\r\n this.cache.put(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n });\r\n\r\n return publicJwkHash;\r\n }\r\n\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload \r\n * @param kid \r\n */\r\n async signJwt(payload: SignedHttpRequest, kid: string): Promise {\r\n // Get keypair from cache\r\n const cachedKeyPair: CachedKeyPair = await this.cache.get(kid);\r\n\r\n // Get public key as JWK\r\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\r\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n\r\n // Generate header\r\n const header = {\r\n alg: publicKeyJwk.alg,\r\n type: KEY_FORMAT_JWK\r\n };\r\n const encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\r\n\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n\r\n // Form token string\r\n const tokenString = `${encodedHeader}.${encodedPayload}`;\r\n\r\n // Sign token\r\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\r\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n\r\n return `${tokenString}.${encodedSignature}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\r\n\r\n/**\r\n * The PkceCodes type describes the structure\r\n * of objects that contain PKCE code\r\n * challenge and verifier pairs\r\n */\r\nexport type PkceCodes = {\r\n verifier: string,\r\n challenge: string\r\n};\r\n\r\n/**\r\n * Interface for crypto functions used by library\r\n */\r\nexport interface ICrypto {\r\n /**\r\n * Creates a guid randomly.\r\n */\r\n createNewGuid(): string;\r\n /**\r\n * base64 Encode string\r\n * @param input \r\n */\r\n base64Encode(input: string): string;\r\n /**\r\n * base64 decode string\r\n * @param input \r\n */\r\n base64Decode(input: string): string;\r\n /**\r\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\r\n */\r\n generatePkceCodes(): Promise;\r\n /**\r\n * Generates an JWK RSA S256 Thumbprint\r\n * @param request\r\n */\r\n getPublicKeyThumbprint(request: BaseAuthRequest): Promise;\r\n /** \r\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\r\n * @param accessToken \r\n */\r\n signJwt(payload: SignedHttpRequest, kid: string): Promise;\r\n}\r\n\r\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\r\n createNewGuid: (): string => {\r\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: (): string => {\r\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async generatePkceCodes(): Promise {\r\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async getPublicKeyThumbprint(): Promise {\r\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async signJwt(): Promise {\r\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientAuthError } from \"./ClientAuthError\";\r\n\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent' and 'none'. Please see here for valid configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a JSON object containing authorization_endpoint, token_endpoint, end_session_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n }\r\n};\r\n\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nexport class ClientConfigurationError extends ClientAuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\r\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\r\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\r\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\r\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\r\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n static createUrlEmptyError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\r\n ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are not an array\r\n * @param inputScopes\r\n */\r\n static createScopesNonArrayError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopesError.code,\r\n `${ClientConfigurationErrorMessage.nonArrayScopesError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n static createEmptyScopesArrayError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\r\n `${ClientConfigurationErrorMessage.emptyScopesError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n static createClientIdSingleScopeError(inputScopes: Array): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\r\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\r\n }\r\n\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\r\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n static createInvalidClaimsRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\r\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyLogoutRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n static createEmptyTokenRequestError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\r\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\r\n return new ClientConfigurationError(\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\r\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\r\n );\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\r\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\r\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n }\r\n\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n static createUntrustedAuthorityError(): ClientConfigurationError {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\r\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { IUri } from \"./IUri\";\r\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\r\n\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nexport class UrlString {\r\n\r\n // internal url string field\r\n private _urlString: string;\r\n public get urlString(): string {\r\n return this._urlString;\r\n }\r\n \r\n constructor(url: string) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url \r\n */\r\n static canonicalizeUri(url: string): string {\r\n if (url) {\r\n url = url.toLowerCase();\r\n\r\n if (StringUtils.endsWith(url, \"?\")) {\r\n url = url.slice(0, -1);\r\n } else if (StringUtils.endsWith(url, \"?/\")) {\r\n url = url.slice(0, -2);\r\n }\r\n\r\n if (!StringUtils.endsWith(url, \"/\")) {\r\n url += \"/\";\r\n }\r\n }\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n validateAsUri(): void {\r\n // Attempts to parse url for uri components\r\n let components;\r\n try {\r\n components = this.getUrlComponents();\r\n } catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Throw error if uri is insecure.\r\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n }\r\n\r\n /**\r\n * Function to remove query string params from url. Returns the new url.\r\n * @param url\r\n * @param name\r\n */\r\n urlRemoveQueryStringParameter(name: string): string {\r\n let regex = new RegExp(\"(\\\\&\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value&\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+&\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n // name=value\r\n regex = new RegExp(\"(\" + name + \"=)[^\\&]+\");\r\n this._urlString = this.urlString.replace(regex, \"\");\r\n return this.urlString;\r\n }\r\n\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url \r\n * @param queryString \r\n */\r\n static appendQueryString(url: string, queryString: string): string {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n\r\n return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\r\n }\r\n\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url \r\n */\r\n static removeHashFromUrl(url: string): string {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n }\r\n\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n replaceTenantPath(tenantId: string): UrlString {\r\n const urlObject = this.getUrlComponents();\r\n const pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n }\r\n\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n getHash(): string {\r\n return UrlString.parseHash(this.urlString);\r\n }\r\n\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n getUrlComponents(): IUri {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n\r\n // If url string does not match regEx, we throw an error\r\n const match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\r\n }\r\n\r\n // Url component object\r\n const urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n } as IUri;\r\n\r\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\r\n }\r\n return urlComponents;\r\n }\r\n\r\n static getDomainFromUrl(url: string): string {\r\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n\r\n const match = url.match(regEx);\r\n\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\r\n }\r\n\r\n return match[2];\r\n }\r\n\r\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n const url = new UrlString(baseUrl);\r\n const baseComponents = url.getUrlComponents();\r\n\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n \r\n return relativeUrl;\r\n }\r\n \r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString \r\n */\r\n static parseHash(hashString: string): string {\r\n const hashIndex1 = hashString.indexOf(\"#\");\r\n const hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n } else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return \"\";\r\n }\r\n\r\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n }\r\n\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n const parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n }\r\n\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n static hashContainsKnownProperties(hash: string): boolean {\r\n if (StringUtils.isEmpty(hash)) {\r\n return false;\r\n }\r\n\r\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n return !!(\r\n parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { HeaderNames, CacheSchemaType, ThrottlingConstants, Constants } from \"../utils/Constants\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\r\n\r\nexport class ThrottlingUtils {\r\n\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\r\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\r\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n const value = cacheManager.getThrottlingCache(key);\r\n\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n }\r\n\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse): void {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n const thumbprintValue: ThrottlingEntity = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(\r\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\r\n thumbprintValue\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n static checkResponseStatus(response: NetworkResponse): boolean {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n }\r\n\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n static checkResponseForRetryAfter(response: NetworkResponse): boolean {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n static calculateThrottleTime(throttleTime: number): number {\r\n if(throttleTime <= 0) {\r\n throttleTime = 0;\r\n }\r\n const currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(\r\n currentSeconds + (throttleTime || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\r\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\r\n ) * 1000);\r\n }\r\n\r\n static removeThrottle(cacheManager: CacheManager, clientId: string, authority: string, scopes: Array, homeAccountIdentifier?: string): boolean {\r\n const thumbprint: RequestThumbprint = {\r\n clientId,\r\n authority,\r\n scopes,\r\n homeAccountIdentifier\r\n };\r\n\r\n const key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint: string;\r\n issuer: string;\r\n};\r\n\r\nexport function isOpenIdConfigResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") && \r\n response.hasOwnProperty(\"end_session_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nexport class TimeUtils {\r\n\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n static nowSeconds(): number {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n }\r\n \r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n static isTokenExpired(expiresOn: string, offset: number): boolean {\r\n // check for access token expiry\r\n const expirationSec = Number(expiresOn) || 0;\r\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\r\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\r\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\n\r\nexport class AuthorityMetadataEntity {\r\n aliases: Array;\r\n preferred_cache: string;\r\n preferred_network: string;\r\n canonical_authority: string;\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint: string;\r\n issuer: string;\r\n aliasesFromNetwork: boolean;\r\n endpointsFromNetwork: boolean;\r\n expiresAt: number;\r\n\r\n constructor() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata \r\n * @param fromNetwork \r\n */\r\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n }\r\n\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority \r\n */\r\n updateCanonicalAuthority(authority: string): void {\r\n this.canonical_authority = authority;\r\n }\r\n\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n resetExpiresAt(): void {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n isExpired(): boolean {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"end_session_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\r\nimport { Constants, ResponseCodes } from \"../utils/Constants\";\r\n\r\nexport class RegionDiscovery {\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Options for the IMDS endpoint request\r\n protected static IMDS_OPTIONS = {headers: {\"Metadata\": \"true\"}};\r\n\r\n constructor(networkInterface: INetworkModule) {\r\n this.networkInterface = networkInterface;\r\n }\r\n\r\n /**\r\n * Detect the region from the application's environment.\r\n * \r\n * @returns Promise\r\n */\r\n public async detectRegion(environmentRegion: string | undefined): Promise {\r\n // Initialize auto detected region with the region from the envrionment \r\n let autodetectedRegionName = environmentRegion;\r\n\r\n // Call the local IMDS endpoint for applications running in azure vms\r\n if (!autodetectedRegionName) {\r\n try {\r\n const response = await this.getRegionFromIMDS(Constants.IMDS_VERSION);\r\n if (response.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = response.body;\r\n } \r\n \r\n if (response.status === ResponseCodes.httpBadRequest) {\r\n const latestIMDSVersion = await this.getCurrentVersion();\r\n if (!latestIMDSVersion) {\r\n return null;\r\n }\r\n\r\n const response = await this.getRegionFromIMDS(latestIMDSVersion);\r\n if (response.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = response.body;\r\n }\r\n } \r\n } catch(e) {\r\n return null;\r\n } \r\n }\r\n\r\n return autodetectedRegionName || null;\r\n }\r\n\r\n /**\r\n * Make the call to the IMDS endpoint\r\n * \r\n * @param imdsEndpointUrl\r\n * @returns Promise>\r\n */\r\n private async getRegionFromIMDS(version: string): Promise> {\r\n return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, RegionDiscovery.IMDS_OPTIONS, Constants.IMDS_TIMEOUT);\r\n }\r\n\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n * \r\n * @returns Promise\r\n */\r\n private async getCurrentVersion(): Promise {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, RegionDiscovery.IMDS_OPTIONS);\r\n\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AuthorityMetadataSource, Constants } from \"../utils/Constants\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n\r\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n\r\n return AuthorityType.Default;\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString \r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n const cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return endpoint;\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n } \r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity \r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion);\r\n\r\n const azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG \r\n ? autodetectedRegionName \r\n : this.authorityOptions.azureRegionConfiguration.azureRegion;\r\n\r\n if (azureRegion) {\r\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n \r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata \r\n * @param newMetadata \r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise {\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface \r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint);\r\n const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n if (metadata.length === 0) {\r\n // If no metadata is returned, authority is untrusted\r\n return null;\r\n }\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n } catch(e) {\r\n return null;\r\n }\r\n\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n } \r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host \r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response \r\n * @param authority \r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host \r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n * \r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.includes(host);\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n * \r\n * @param host string\r\n * @param region string \r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n * \r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n \r\n return metadata;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryResponse = {\r\n tenant_discovery_endpoint: string;\r\n metadata: Array;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\")\r\n );\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Promise {\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions);\r\n\r\n try {\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Separators, CredentialType, CacheType, Constants } from \"../../utils/Constants\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: -----\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * oboAssertion: access token passed in as part of OBO request\r\n * }\r\n */\r\nexport class CredentialEntity {\r\n homeAccountId: string;\r\n environment: string;\r\n credentialType: CredentialType;\r\n clientId: string;\r\n secret: string;\r\n familyId?: string;\r\n realm?: string;\r\n target?: string;\r\n oboAssertion?: string;\r\n\r\n /**\r\n * Generate Account Id key component as per the schema: -\r\n */\r\n generateAccountId(): string {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n }\r\n\r\n /**\r\n * Generate Credential Id key component as per the schema: --\r\n */\r\n generateCredentialId(): string {\r\n return CredentialEntity.generateCredentialIdForCacheKey(\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n generateTarget(): string {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n generateCredentialKey(): string {\r\n return CredentialEntity.generateCredentialCacheKey(\r\n this.homeAccountId,\r\n this.environment,\r\n this.credentialType,\r\n this.clientId,\r\n this.realm,\r\n this.target,\r\n this.familyId\r\n );\r\n }\r\n\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n generateType(): number {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n static getCredentialType(key: string): string {\r\n // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\r\n // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\r\n return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n }\r\n return CredentialType.ACCESS_TOKEN;\r\n } else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ID_TOKEN;\r\n } else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.REFRESH_TOKEN;\r\n }\r\n\r\n return Constants.NOT_DEFINED;\r\n }\r\n\r\n /**\r\n * generates credential key\r\n */\r\n static generateCredentialCacheKey(\r\n homeAccountId: string,\r\n environment: string,\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n target?: string,\r\n familyId?: string\r\n ): string {\r\n const credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n ];\r\n\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n private static generateAccountIdForCacheKey(\r\n homeAccountId: string,\r\n environment: string\r\n ): string {\r\n const accountId: Array = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n private static generateCredentialIdForCacheKey(\r\n credentialType: CredentialType,\r\n clientId: string,\r\n realm?: string,\r\n familyId?: string\r\n ): string {\r\n const clientOrFamilyId =\r\n credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n const credentialId: Array = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || \"\",\r\n ];\r\n\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Generate target key component as per schema: \r\n */\r\n private static generateTargetForCacheKey(scopes?: string): string {\r\n return (scopes || \"\").toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { OIDC_SCOPES } from \"../utils/Constants\";\r\n\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nexport class ScopeSet {\r\n // Scopes as a Set of strings\r\n private scopes: Set;\r\n\r\n constructor(inputScopes: Array) {\r\n // Filter empty string and null/undefined array items\r\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\r\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(scope => this.scopes.add(scope));\r\n }\r\n\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n static fromString(inputScopeString: string): ScopeSet {\r\n inputScopeString = inputScopeString || \"\";\r\n const inputScopes: Array = inputScopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n }\r\n\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n private validateInputScopes(inputScopes: Array): void {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError(inputScopes);\r\n }\r\n }\r\n\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n containsScope(scope: string): boolean {\r\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n }\r\n\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n containsScopeSet(scopeSet: ScopeSet): boolean {\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\r\n }\r\n\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n containsOnlyOIDCScopes(): boolean {\r\n let defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n if (this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n\r\n return this.scopes.size === defaultScopeCount;\r\n }\r\n\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n appendScope(newScope: string): void {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n }\r\n\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n appendScopes(newScopes: Array): void {\r\n try {\r\n newScopes.forEach(newScope => this.appendScope(newScope));\r\n } catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n removeScope(scope: string): void {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n }\r\n\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n removeOIDCScopes(): void {\r\n OIDC_SCOPES.forEach((defaultScope: string) => {\r\n this.scopes.delete(defaultScope);\r\n });\r\n }\r\n\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n unionScopeSets(otherScopes: ScopeSet): Set {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\r\n return unionScopes;\r\n }\r\n\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError(otherScopes);\r\n }\r\n \r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n const unionScopes = this.unionScopeSets(otherScopes);\r\n const sizeOtherScopes = otherScopes.getScopeCount();\r\n const sizeThisScopes = this.getScopeCount();\r\n const sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n }\r\n\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n getScopeCount(): number {\r\n return this.scopes.size;\r\n }\r\n\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n asArray(): Array {\r\n const array: Array = [];\r\n this.scopes.forEach(val => array.push(val));\r\n return array;\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n printScopes(): string {\r\n if (this.scopes) {\r\n const scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n printScopesLowerCase(): string {\r\n return this.printScopes().toLowerCase();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { TokenClaims } from \"./TokenClaims\";\r\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\n\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nexport class AuthToken {\r\n\r\n // Raw Token string\r\n rawToken: string;\r\n // Claims inside token\r\n claims: TokenClaims;\r\n constructor(rawToken: string, crypto: ICrypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\r\n\r\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\r\n\r\n // token will be decoded to get the username\r\n try {\r\n const base64TokenPayload = decodedToken.JWSPayload;\r\n\r\n // base64Decode() should throw an error if there is an issue\r\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded) as TokenClaims;\r\n } catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\r\nimport { CacheRecord } from \"./entities/CacheRecord\";\r\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme } from \"../utils/Constants\";\r\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AccountEntity } from \"./entities/AccountEntity\";\r\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\r\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ICacheManager } from \"./interface/ICacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\r\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\r\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\r\n\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nexport abstract class CacheManager implements ICacheManager {\r\n protected clientId: string;\r\n protected cryptoImpl: ICrypto;\r\n\r\n constructor(clientId: string, cryptoImpl: ICrypto) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n abstract getAccount(accountKey: string): AccountEntity | null;\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param account\r\n */\r\n abstract setAccount(account: AccountEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param idTokenKey\r\n */\r\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param idToken\r\n */\r\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param accessTokenKey\r\n */\r\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param accessToken\r\n */\r\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\r\n\r\n /**\r\n * fetch the idToken entity from the platform cache\r\n * @param refreshTokenKey\r\n */\r\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\r\n\r\n /**\r\n * set idToken entity to the platform cache\r\n * @param refreshToken\r\n */\r\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\r\n\r\n /**\r\n * fetch cloud discovery metadata entity from the platform cache\r\n * @param key\r\n */\r\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\r\n\r\n /**\r\n * \r\n */\r\n abstract getAuthorityMetadataKeys(): Array;\r\n\r\n /**\r\n * set cloud discovery metadata entity to the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\r\n\r\n /**\r\n * Function to remove an item from cache given its key.\r\n * @param key\r\n */\r\n abstract removeItem(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which returns boolean whether cache contains a specific key.\r\n * @param key\r\n */\r\n abstract containsKey(key: string, type?: string): boolean;\r\n\r\n /**\r\n * Function which retrieves all current keys from the cache.\r\n */\r\n abstract getKeys(): string[];\r\n\r\n /**\r\n * Function which clears cache.\r\n */\r\n abstract clear(): void;\r\n\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n const currentAccounts: AccountCache = this.getAccountsFilteredBy();\r\n const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\r\n const numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n } else {\r\n const allAccounts = accountValues.map((value) => {\r\n const accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n const accountInfo = accountEntity.getAccountInfo();\r\n const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return accountInfo;\r\n \r\n });\r\n return allAccounts;\r\n }\r\n }\r\n\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n saveCacheRecord(cacheRecord: CacheRecord): void {\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n\r\n if (!!cacheRecord.accessToken) {\r\n this.saveAccessToken(cacheRecord.accessToken);\r\n }\r\n\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n }\r\n\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n private saveAccessToken(credential: AccessTokenEntity): void {\r\n const currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n });\r\n const currentScopes = ScopeSet.fromString(credential.target);\r\n const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\r\n if (currentAccessTokens) {\r\n currentAccessTokens.forEach((tokenEntity) => {\r\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n this.removeCredential(tokenEntity);\r\n }\r\n });\r\n }\r\n this.setAccessTokenCredential(credential);\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\r\n return this.getAccountsFilteredByInternal(\r\n accountFilter ? accountFilter.homeAccountId : \"\",\r\n accountFilter ? accountFilter.environment : \"\",\r\n accountFilter ? accountFilter.realm : \"\"\r\n );\r\n }\r\n\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n private getAccountsFilteredByInternal(\r\n homeAccountId?: string,\r\n environment?: string,\r\n realm?: string\r\n ): AccountCache {\r\n const allCacheKeys = this.getKeys();\r\n const matchingAccounts: AccountCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n const entity: AccountEntity | null = this.getAccount(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!realm && !this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n\r\n return matchingAccounts;\r\n }\r\n\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\r\n return this.getCredentialsFilteredByInternal(\r\n filter.homeAccountId,\r\n filter.environment,\r\n filter.credentialType,\r\n filter.clientId,\r\n filter.familyId,\r\n filter.realm,\r\n filter.target,\r\n filter.oboAssertion\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n private getCredentialsFilteredByInternal(\r\n homeAccountId?: string,\r\n environment?: string,\r\n credentialType?: string,\r\n clientId?: string,\r\n familyId?: string,\r\n realm?: string,\r\n target?: string,\r\n oboAssertion?: string\r\n ): CredentialCache {\r\n const allCacheKeys = this.getKeys();\r\n const matchingCredentials: CredentialCache = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n \r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-credential type cache entities\r\n const credType = CredentialEntity.getCredentialType(cacheKey);\r\n\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getSpecificCredential(cacheKey, credType);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!oboAssertion && !this.matchOboAssertion(entity, oboAssertion)) {\r\n return;\r\n }\r\n\r\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!realm && !this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n\r\n if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n if (!!familyId && !this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[cacheKey] = entity as IdTokenEntity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n matchingCredentials.accessTokens[cacheKey] = entity as AccessTokenEntity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[cacheKey] = entity as RefreshTokenEntity;\r\n break;\r\n }\r\n });\r\n\r\n return matchingCredentials;\r\n }\r\n\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\r\n return this.getAppMetadataFilteredByInternal(\r\n filter.environment,\r\n filter.clientId,\r\n );\r\n }\r\n\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n private getAppMetadataFilteredByInternal(\r\n environment?: string,\r\n clientId?: string\r\n ): AppMetadataCache {\r\n\r\n const allCacheKeys = this.getKeys();\r\n const matchingAppMetadata: AppMetadataCache = {};\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAppMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (!!environment && !this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n\r\n if (!!clientId && !this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n\r\n matchingAppMetadata[cacheKey] = entity;\r\n\r\n });\r\n\r\n return matchingAppMetadata;\r\n }\r\n\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\r\n const allCacheKeys = this.getAuthorityMetadataKeys();\r\n let matchedEntity = null;\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\r\n return;\r\n }\r\n\r\n // Attempt retrieval\r\n const entity = this.getAuthorityMetadata(cacheKey);\r\n\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n\r\n matchedEntity = entity;\r\n\r\n });\r\n \r\n return matchedEntity;\r\n }\r\n\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n removeAllAccounts(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n const entity = this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n this.removeAccount(cacheKey);\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n removeAccount(accountKey: string): boolean {\r\n const account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return (this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\r\n }\r\n\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n removeAccountContext(account: AccountEntity): boolean {\r\n const allCacheKeys = this.getKeys();\r\n const accountId = account.generateAccountId();\r\n\r\n allCacheKeys.forEach((cacheKey) => {\r\n // don't parse any non-credential type cache entities\r\n const credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n\r\n const cacheEntity = this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n this.removeCredential(cacheEntity);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n removeCredential(credential: CredentialEntity): boolean {\r\n const key = credential.generateCredentialKey();\r\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\r\n }\r\n\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n removeAppMetadata(): boolean {\r\n const allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach((cacheKey) => {\r\n if (this.isAppMetadata(cacheKey)) {\r\n this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n readCacheRecord(account: AccountInfo, clientId: string, scopes: ScopeSet, environment: string, authScheme: AuthenticationScheme): CacheRecord {\r\n const cachedAccount = this.readAccountFromCache(account);\r\n const cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, scopes, authScheme);\r\n const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n }\r\n\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\r\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n }\r\n\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\r\n const idTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\r\n const numIdTokens = idTokens.length;\r\n\r\n if (numIdTokens < 1) {\r\n return null;\r\n } else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n return idTokens[0] as IdTokenEntity;\r\n }\r\n\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n readAccessTokenFromCache(clientId: string, account: AccountInfo, scopes: ScopeSet, authScheme: AuthenticationScheme): AccessTokenEntity | null {\r\n const credentialType = (authScheme === AuthenticationScheme.POP) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n\r\n const accessTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n\r\n const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\r\n\r\n const numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n } else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n\r\n return accessTokens[0] as AccessTokenEntity;\r\n }\r\n\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\r\n const id = familyRT ? THE_FAMILY_ID : undefined;\r\n const refreshTokenFilter: CredentialFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id\r\n };\r\n\r\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\r\n\r\n const numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n\r\n return refreshTokens[0] as RefreshTokenEntity;\r\n }\r\n\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\r\n const appMetadataFilter: AppMetadataFilter = {\r\n environment,\r\n clientId,\r\n };\r\n\r\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\r\n\r\n const numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n } else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n\r\n return appMetadataEntries[0] as AppMetadataEntity;\r\n }\r\n\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n isAppMetadataFOCI(environment: string, clientId: string): boolean {\r\n const appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n }\r\n\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\r\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\r\n }\r\n\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n private matchOboAssertion(entity: AccountEntity | CredentialEntity, oboAssertion: string): boolean {\r\n return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\r\n }\r\n\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\r\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n }\r\n\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n }\r\n\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n }\r\n\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\r\n return !!(entity.realm && realm === entity.realm);\r\n }\r\n\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n private matchTarget(entity: CredentialEntity, target: string): boolean {\r\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n\r\n if ( isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n\r\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\r\n const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\r\n\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n } else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n private isAppMetadata(key: string): boolean {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n }\r\n\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n protected isAuthorityMetadata(key: string): boolean {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n }\r\n\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n generateAuthorityMetadataCacheKey(authority: string): string {\r\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\r\n }\r\n\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n static toObject(obj: T, json: object): T {\r\n for (const propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class DefaultStorageClass extends CacheManager {\r\n setAccount(): void {\r\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccount(): AccountEntity {\r\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setIdTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getIdTokenCredential(): IdTokenEntity {\r\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAccessTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAccessTokenCredential(): AccessTokenEntity {\r\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setRefreshTokenCredential(): void {\r\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getRefreshTokenCredential(): RefreshTokenEntity {\r\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAppMetadata(): void {\r\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAppMetadata(): AppMetadataEntity {\r\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setServerTelemetry(): void {\r\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getServerTelemetry(): ServerTelemetryEntity {\r\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setAuthorityMetadata(): void {\r\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\r\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getAuthorityMetadataKeys(): Array {\r\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n setThrottlingCache(): void {\r\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getThrottlingCache(): ThrottlingEntity {\r\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n removeItem(): boolean {\r\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n containsKey(): boolean {\r\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n getKeys(): string[] {\r\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n clear(): void {\r\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { ILoggerCallback, LogLevel } from \"../logger/Logger\";\r\nimport { Constants } from \"../utils/Constants\";\r\nimport { version } from \"../packageMetadata\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\n\r\n// Token renewal offset default in seconds\r\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\n\r\n/**\r\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - authOptions - Authentication for application\r\n * - cryptoInterface - Implementation of crypto functions\r\n * - libraryInfo - Library metadata\r\n * - loggerOptions - Logging for application\r\n * - networkInterface - Network implementation\r\n * - storageInterface - Storage implementation\r\n * - systemOptions - Additional library options\r\n * - clientCredentials - Credentials options for confidential clients\r\n */\r\nexport type ClientConfiguration = {\r\n authOptions: AuthOptions,\r\n systemOptions?: SystemOptions,\r\n loggerOptions?: LoggerOptions,\r\n storageInterface?: CacheManager,\r\n networkInterface?: INetworkModule,\r\n cryptoInterface?: ICrypto,\r\n clientCredentials?: ClientCredentials,\r\n libraryInfo?: LibraryInfo\r\n serverTelemetryManager?: ServerTelemetryManager | null,\r\n persistencePlugin?: ICachePlugin | null,\r\n serializableCache?: ISerializableTokenCache | null\r\n};\r\n\r\nexport type CommonClientConfiguration = {\r\n authOptions: Required,\r\n systemOptions: Required,\r\n loggerOptions : Required,\r\n storageInterface: CacheManager,\r\n networkInterface : INetworkModule,\r\n cryptoInterface : Required,\r\n libraryInfo : LibraryInfo,\r\n serverTelemetryManager: ServerTelemetryManager | null,\r\n clientCredentials: ClientCredentials,\r\n persistencePlugin: ICachePlugin | null,\r\n serializableCache: ISerializableTokenCache | null\r\n};\r\n\r\n/**\r\n * Use this to configure the auth options in the ClientConfiguration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\nexport type AuthOptions = {\r\n clientId: string;\r\n authority: Authority;\r\n clientCapabilities?: Array;\r\n};\r\n\r\n/**\r\n * Use this to configure token renewal info in the Configuration object\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n */\r\nexport type SystemOptions = {\r\n tokenRenewalOffsetSeconds?: number;\r\n};\r\n\r\n/**\r\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\r\n *\r\n * - loggerCallback - Callback for logger\r\n * - piiLoggingEnabled - Sets whether pii logging is enabled\r\n * - logLevel - Sets the level at which logging happens\r\n */\r\nexport type LoggerOptions = {\r\n loggerCallback?: ILoggerCallback,\r\n piiLoggingEnabled?: boolean,\r\n logLevel?: LogLevel\r\n};\r\n\r\n/**\r\n * Library-specific options\r\n */\r\nexport type LibraryInfo = {\r\n sku: string,\r\n version: string,\r\n cpu: string,\r\n os: string\r\n};\r\n\r\n/**\r\n * Credentials for confidential clients\r\n */\r\nexport type ClientCredentials = {\r\n clientSecret?: string,\r\n clientAssertion? : {\r\n assertion: string,\r\n assertionType: string\r\n };\r\n};\r\n\r\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC\r\n};\r\n\r\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\r\n loggerCallback: () => {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info\r\n};\r\n\r\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\r\n async sendGetRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n async sendPostRequestAsync(): Promise {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n }\r\n};\r\n\r\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: \"\",\r\n os: \"\"\r\n};\r\n\r\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\r\n clientSecret: \"\",\r\n clientAssertion: undefined\r\n};\r\n\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nexport function buildClientConfiguration(\r\n {\r\n authOptions: userAuthOptions,\r\n systemOptions: userSystemOptions,\r\n loggerOptions: userLoggerOption,\r\n storageInterface: storageImplementation,\r\n networkInterface: networkImplementation,\r\n cryptoInterface: cryptoImplementation,\r\n clientCredentials: clientCredentials,\r\n libraryInfo: libraryInfo,\r\n serverTelemetryManager: serverTelemetryManager,\r\n persistencePlugin: persistencePlugin,\r\n serializableCache: serializableCache\r\n }: ClientConfiguration): CommonClientConfiguration {\r\n\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\r\n loggerOptions: { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption },\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null\r\n };\r\n}\r\n\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\r\n return {\r\n clientCapabilities: [],\r\n ...authOptions\r\n };\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto } from \"./ICrypto\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TokenClaims } from \"../account/TokenClaims\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\n/**\r\n * See eSTS docs for more info.\r\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\r\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\r\n * - sw: software storage\r\n * - uhw: hardware storage\r\n */\r\ntype ReqCnf = {\r\n kid: string;\r\n xms_ksl: KeyLocation;\r\n};\r\n\r\nenum KeyLocation {\r\n SW = \"sw\",\r\n UHW = \"uhw\"\r\n}\r\n\r\nexport class PopTokenGenerator {\r\n\r\n private cryptoUtils: ICrypto;\r\n\r\n constructor(cryptoUtils: ICrypto) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n\r\n async generateCnf(request: BaseAuthRequest): Promise {\r\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\r\n const reqCnf: ReqCnf = {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n };\r\n return this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\r\n }\r\n\r\n async signPopToken(accessToken: string, request: BaseAuthRequest): Promise {\r\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, this.cryptoUtils);\r\n\r\n // Deconstruct request to extract SHR parameters\r\n const { resourceRequestMethod, resourceRequestUri, shrClaims } = request;\r\n\r\n const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\r\n\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n\r\n return await this.cryptoUtils.signJwt({\r\n at: accessToken,\r\n ts: TimeUtils.nowSeconds(),\r\n m: resourceRequestMethod?.toUpperCase(),\r\n u: resourceUrlComponents?.HostNameAndPort,\r\n nonce: this.cryptoUtils.createNewGuid(),\r\n p: resourceUrlComponents?.AbsolutePath,\r\n q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\r\n client_claims: shrClaims || undefined\r\n }, tokenClaims.cnf.kid);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\r\nimport { RequestThumbprint } from \"./RequestThumbprint\";\r\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { AuthError } from \"../error/AuthError\";\r\n\r\nexport type NetworkResponse = {\r\n headers: Record;\r\n body: T;\r\n status: number;\r\n};\r\n\r\nexport class NetworkManager {\r\n private networkClient: INetworkModule;\r\n private cacheManager: CacheManager;\r\n\r\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n async sendPostRequest(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise> {\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n\r\n let response;\r\n try {\r\n response = await this.networkClient.sendPostRequestAsync(tokenEndpoint, options);\r\n } catch (e) {\r\n if (e instanceof AuthError) {\r\n throw e;\r\n } else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\r\n }\r\n }\r\n\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n\r\n return response;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { Constants, HeaderNames } from \"../utils/Constants\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nexport abstract class BaseClient {\r\n // Logger object\r\n public logger: Logger;\r\n\r\n // Application config\r\n protected config: CommonClientConfiguration;\r\n\r\n // Crypto Interface\r\n protected cryptoUtils: ICrypto;\r\n\r\n // Storage Interface\r\n protected cacheManager: CacheManager;\r\n\r\n // Network Interface\r\n protected networkClient: INetworkModule;\r\n\r\n // Server Telemetry Manager\r\n protected serverTelemetryManager: ServerTelemetryManager | null;\r\n\r\n // Network Manager\r\n protected networkManager: NetworkManager;\r\n\r\n // Default authority object\r\n public authority: Authority;\r\n\r\n protected constructor(configuration: ClientConfiguration) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n }\r\n\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n protected createDefaultTokenRequestHeaders(): Record {\r\n const headers: Record = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n\r\n return headers;\r\n }\r\n\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record, thumbprint: RequestThumbprint): Promise> {\r\n const response = await this.networkManager.sendPostRequest(\r\n thumbprint,\r\n tokenEndpoint,\r\n { body: queryString, headers: headers }\r\n );\r\n\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority \r\n */\r\n updateAuthority(updatedAuthority: Authority): void {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\n\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nexport class RequestValidator {\r\n\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n static validateRedirectUri(redirectUri: string) : void {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n static validatePrompt(prompt: string) : void {\r\n if (\r\n [\r\n PromptValue.LOGIN,\r\n PromptValue.SELECT_ACCOUNT,\r\n PromptValue.CONSENT,\r\n PromptValue.NONE\r\n ].indexOf(prompt) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n }\r\n\r\n static validateClaims(claims: string) : void {\r\n try {\r\n JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n } else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n }\r\n\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\r\n if (\r\n [\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0\r\n ) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n }\r\n\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map) : StringDict {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach((value, key) => {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n\r\n return eQParams;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, ClientInfo, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants} from \"../utils/Constants\";\r\nimport { ScopeSet } from \"./ScopeSet\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { StringDict } from \"../utils/MsalTypes\";\r\nimport { RequestValidator } from \"./RequestValidator\";\r\nimport { LibraryInfo } from \"../config/ClientConfiguration\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\r\n\r\nexport class RequestParameterBuilder {\r\n\r\n private parameters: Map;\r\n\r\n constructor() {\r\n this.parameters = new Map();\r\n }\r\n\r\n /**\r\n * add response_type = code\r\n */\r\n addResponseTypeCode(): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\r\n );\r\n }\r\n\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n addResponseMode(responseMode?: ResponseMode): void {\r\n this.parameters.set(\r\n AADServerParamKeys.RESPONSE_MODE,\r\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\r\n );\r\n }\r\n\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\r\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\r\n const scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n }\r\n\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n addClientId(clientId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n }\r\n\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n addRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n addPostLogoutRedirectUri(redirectUri: string): void {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n }\r\n\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n addIdTokenHint(idTokenHint: string): void {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n }\r\n\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n addDomainHint(domainHint: string): void {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n }\r\n\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n addLoginHint(loginHint: string): void {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n }\r\n\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n addSid(sid: string): void {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n }\r\n\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n addClaims(claims?: string, clientCapabilities?: Array): void {\r\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n }\r\n\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n addCorrelationId(correlationId: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n }\r\n\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n addLibraryInfo(libraryInfo: LibraryInfo): void {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n addPrompt(prompt: string): void {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\r\n }\r\n\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n addState(state: string): void {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n }\r\n\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n addNonce(nonce: string): void {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n }\r\n\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n addCodeChallengeParams(\r\n codeChallenge: string,\r\n codeChallengeMethod: string\r\n ): void {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n } else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addAuthorizationCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n addDeviceCode(code: string): void {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n }\r\n\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n addRefreshToken(refreshToken: string): void {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n }\r\n\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n addCodeVerifier(codeVerifier: string): void {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n }\r\n\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n addClientSecret(clientSecret: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n }\r\n\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addClientAssertion(clientAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n }\r\n\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n addClientAssertionType(clientAssertionType: string): void {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n }\r\n\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n addOboAssertion(oboAssertion: string): void {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addRequestTokenUse(tokenUse: string): void {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n }\r\n\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n addGrantType(grantType: string): void {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n }\r\n\r\n /**\r\n * add client info\r\n *\r\n */\r\n addClientInfo(): void {\r\n this.parameters.set(ClientInfo, \"1\");\r\n }\r\n\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n addExtraQueryParameters(eQparams: StringDict): void {\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach((key) => {\r\n this.parameters.set(key, eQparams[key]);\r\n });\r\n }\r\n\r\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array): string {\r\n let mergedClaims: object;\r\n\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n } else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n } catch(e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n\r\n return JSON.stringify(mergedClaims);\r\n }\r\n\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n addUsername(username: string): void {\r\n this.parameters.set(PasswordGrantConstants.username, username);\r\n }\r\n\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n addPassword(password: string): void {\r\n this.parameters.set(PasswordGrantConstants.password, password);\r\n }\r\n\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n addPopToken(cnfString: string): void {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n }\r\n\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager \r\n */\r\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n }\r\n\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n addThrottling(): void {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n }\r\n\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n createQueryString(): string {\r\n const queryParameterArray: Array = new Array();\r\n\r\n this.parameters.forEach((value, key) => {\r\n queryParameterArray.push(`${key}=${value}`);\r\n });\r\n\r\n return queryParameterArray.join(\"&\");\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nexport class IdTokenEntity extends CredentialEntity {\r\n realm: string;\r\n\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createIdTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n idToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n oboAssertion?: string\r\n ): IdTokenEntity {\r\n const idTokenEntity = new IdTokenEntity();\r\n\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n idTokenEntity.oboAssertion = oboAssertion;\r\n\r\n return idTokenEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isIdTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\r\nimport { TimeUtils } from \"../../utils/TimeUtils\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\nimport { ICrypto } from \"../../crypto/ICrypto\";\r\nimport { TokenClaims } from \"../../account/TokenClaims\";\r\nimport { AuthToken } from \"../../account/AuthToken\";\r\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\r\n\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nexport class AccessTokenEntity extends CredentialEntity {\r\n realm: string;\r\n target: string;\r\n cachedAt: string;\r\n expiresOn: string;\r\n extendedExpiresOn?: string;\r\n refreshOn?: string;\r\n keyId?: string; // for POP and SSH tokenTypes\r\n tokenType?: string;\r\n\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n static createAccessTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n accessToken: string,\r\n clientId: string,\r\n tenantId: string,\r\n scopes: string,\r\n expiresOn: number,\r\n extExpiresOn: number,\r\n cryptoUtils: ICrypto,\r\n refreshOn?: number,\r\n tokenType?: string,\r\n oboAssertion?: string\r\n ): AccessTokenEntity {\r\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\r\n\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n\r\n const currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.oboAssertion = oboAssertion;\r\n\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n\r\n // Create Access Token With AuthScheme instead of regular access token\r\n if (atEntity.tokenType === AuthenticationScheme.POP) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n // Make sure keyId is present and add it to credential\r\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!tokenClaims?.cnf?.kid) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n }\r\n\r\n return atEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAccessTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CredentialEntity } from \"./CredentialEntity\";\r\nimport { CredentialType } from \"../../utils/Constants\";\r\n\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nexport class RefreshTokenEntity extends CredentialEntity {\r\n familyId?: string;\r\n\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n static createRefreshTokenEntity(\r\n homeAccountId: string,\r\n environment: string,\r\n refreshToken: string,\r\n clientId: string,\r\n familyId?: string,\r\n oboAssertion?: string\r\n ): RefreshTokenEntity {\r\n const rtEntity = new RefreshTokenEntity();\r\n\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.oboAssertion = oboAssertion;\r\n\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n\r\n return rtEntity;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isRefreshTokenEntity(entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IdTokenEntity } from \"./IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\r\nimport { AccountEntity } from \"./AccountEntity\";\r\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\r\n\r\nexport class CacheRecord {\r\n account: AccountEntity | null;\r\n idToken: IdTokenEntity | null;\r\n accessToken: AccessTokenEntity | null;\r\n refreshToken: RefreshTokenEntity | null;\r\n appMetadata: AppMetadataEntity | null;\r\n\r\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils } from \"./StringUtils\";\r\nimport { Constants } from \"./Constants\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\n\r\n/**\r\n * Type which defines the object that is stringified, encoded and sent in the state value.\r\n * Contains the following:\r\n * - id - unique identifier for this request\r\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\r\n * - platformState - string value sent from the platform.\r\n */\r\nexport type LibraryStateObject = {\r\n id: string,\r\n meta?: Record\r\n};\r\n\r\n/**\r\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\r\n */\r\nexport type RequestStateObject = {\r\n userRequestState: string,\r\n libraryState: LibraryStateObject\r\n};\r\n\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nexport class ProtocolUtils {\r\n\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState \r\n * @param randomGuid \r\n */\r\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record): string {\r\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\r\n }\r\n\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid \r\n * @param cryptoObj \r\n */\r\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record): string {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n const stateObj: LibraryStateObject = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n\r\n const stateString = JSON.stringify(stateObj);\r\n\r\n return cryptoObj.base64Encode(stateString);\r\n }\r\n\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state \r\n * @param cryptoObj \r\n */\r\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n const splitState = decodeURIComponent(state).split(Constants.RESOURCE_DELIM);\r\n const libraryState = splitState[0];\r\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : \"\";\r\n const libraryStateString = cryptoObj.base64Decode(libraryState);\r\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : \"\",\r\n libraryState: libraryStateObj\r\n };\r\n } catch(e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\r\n\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata--\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nexport class AppMetadataEntity {\r\n clientId: string;\r\n environment: string;\r\n familyId?: string;\r\n\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\r\n */\r\n generateAppMetadataKey(): string {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n }\r\n\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\r\n const appMetaDataKeyArray: Array = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n }\r\n\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\r\n const appMetadata = new AppMetadataEntity();\r\n\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n\r\n return appMetadata;\r\n }\r\n\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n static isAppMetadataEntity(key: string, entity: object): boolean {\r\n\r\n if (!entity) {\r\n return false;\r\n }\r\n\r\n return (\r\n key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\")\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\r\n\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */export class TokenCacheContext {\r\n /**\r\n * boolean indicating cache change\r\n */\r\n hasChanged: boolean;\r\n /**\r\n * serializable token cache interface\r\n */\r\n cache: ISerializableTokenCache;\r\n\r\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get cacheHasChanged(): boolean {\r\n return this.hasChanged;\r\n }\r\n\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get tokenCache(): ISerializableTokenCache {\r\n return this.cache;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\r\nimport { buildClientInfo} from \"../account/ClientInfo\";\r\nimport { ICrypto } from \"../crypto/ICrypto\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\r\nimport { Logger } from \"../logger/Logger\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthenticationResult } from \"./AuthenticationResult\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { AuthorityType } from \"../authority/AuthorityType\";\r\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\r\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\r\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\r\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { CacheManager } from \"../cache/CacheManager\";\r\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\r\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\r\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\r\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\r\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\r\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\r\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\r\n\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nexport class ResponseHandler {\r\n private clientId: string;\r\n private cacheStorage: CacheManager;\r\n private cryptoObj: ICrypto;\r\n private logger: Logger;\r\n private homeAccountIdentifier: string;\r\n private serializableCache: ISerializableTokenCache | null;\r\n private persistencePlugin: ICachePlugin | null;\r\n\r\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\r\n\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n }\r\n\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n\r\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n async handleServerTokenResponse(\r\n serverTokenResponse: ServerAuthorizationTokenResponse,\r\n authority: Authority,\r\n reqTimestamp: number,\r\n request: BaseAuthRequest,\r\n authCodePayload?: AuthorizationCodePayload,\r\n oboAssertion?: string,\r\n handlingRefreshTokenResponse?: boolean): Promise {\r\n\r\n // create an idToken object (not entity)\r\n let idTokenObj: AuthToken | undefined;\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n \r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n }\r\n\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n\r\n // save the response tokens\r\n let requestStateObj: RequestStateObject | undefined;\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n\r\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, idTokenObj, request.scopes, oboAssertion, authCodePayload);\r\n let cacheContext;\r\n try {\r\n if (this.persistencePlugin && this.serializableCache) {\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\r\n }\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\r\n */\r\n if (handlingRefreshTokenResponse && cacheRecord.account) {\r\n const key = cacheRecord.account.generateAccountKey();\r\n const account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj);\r\n }\r\n }\r\n this.cacheStorage.saveCacheRecord(cacheRecord);\r\n } finally {\r\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n await this.persistencePlugin.afterCacheAccess(cacheContext);\r\n }\r\n }\r\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj);\r\n }\r\n\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, idTokenObj?: AuthToken, requestScopes?: string[], oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\r\n const env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n\r\n // IdToken: non AAD scenarios can have empty realm\r\n let cachedIdToken: IdTokenEntity | undefined;\r\n let cachedAccount: AccountEntity | undefined;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\r\n oboAssertion\r\n );\r\n\r\n cachedAccount = this.generateAccountEntity(\r\n serverTokenResponse,\r\n idTokenObj,\r\n authority,\r\n oboAssertion,\r\n authCodePayload\r\n );\r\n }\r\n\r\n // AccessToken\r\n let cachedAccessToken: AccessTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n\r\n // If scopes not returned in server response, use request scopes\r\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(requestScopes || []);\r\n\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\r\n responseScopes.printScopes(),\r\n tokenExpirationSeconds,\r\n extendedTokenExpirationSeconds,\r\n this.cryptoObj,\r\n refreshOnSeconds,\r\n serverTokenResponse.token_type,\r\n oboAssertion\r\n );\r\n }\r\n\r\n // refreshToken\r\n let cachedRefreshToken: RefreshTokenEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\r\n this.homeAccountIdentifier,\r\n env,\r\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\r\n this.clientId,\r\n serverTokenResponse.foci,\r\n oboAssertion\r\n );\r\n }\r\n\r\n // appMetadata\r\n let cachedAppMetadata: AppMetadataEntity | null = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n }\r\n\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, oboAssertion?: string, authCodePayload?: AuthorizationCodePayload): AccountEntity {\r\n const authorityType = authority.authorityType;\r\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : \"\";\r\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : \"\";\r\n\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, authority, idToken, oboAssertion, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(authority, this.homeAccountIdentifier, idToken, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n static async generateAuthenticationResult(\r\n cryptoObj: ICrypto, \r\n authority: Authority,\r\n cacheRecord: CacheRecord, \r\n fromTokenCache: boolean, \r\n request: BaseAuthRequest,\r\n idTokenObj?: AuthToken,\r\n requestState?: RequestStateObject): Promise {\r\n let accessToken: string = \"\";\r\n let responseScopes: Array = [];\r\n let expiresOn: Date | null = null;\r\n let extExpiresOn: Date | undefined;\r\n let familyId: string = Constants.EMPTY_STRING;\r\n\r\n if (cacheRecord.accessToken) {\r\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\r\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n accessToken = await popTokenGenerator.signPopToken(cacheRecord.accessToken.secret, request);\r\n } else {\r\n accessToken = cacheRecord.accessToken.secret;\r\n }\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n }\r\n\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\r\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\r\n\r\n return {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\r\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\r\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, PromptValue } from \"../utils/Constants\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\r\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\r\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { TokenClaims } from \"../account/TokenClaims\";\r\nimport { AccountInfo } from \"../account/AccountInfo\";\r\n\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nexport class AuthorizationCodeClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise {\r\n const queryString = this.createAuthCodeUrlQueryString(request);\r\n\r\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\r\n }\r\n\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise {\r\n this.logger.info(\"in acquireToken call\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executeTokenRequest(this.authority, request);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload);\r\n }\r\n\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\r\n // Handle responses.\r\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n\r\n // Deserialize hash fragment response parameters.\r\n const hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n\r\n return {\r\n ...serverParams,\r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code\r\n };\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n\r\n if (logoutRequest.account) {\r\n // Clear given account.\r\n this.cacheManager.removeAccount(AccountEntity.generateAccountCacheKey(logoutRequest.account));\r\n } else {\r\n // Clear all accounts and tokens\r\n this.cacheManager.clear();\r\n }\r\n\r\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n\r\n // Construct logout URI.\r\n return StringUtils.isEmpty(queryString) ? this.authority.endSessionEndpoint : `${this.authority.endSessionEndpoint}?${queryString}`;\r\n }\r\n\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise> {\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const queryParameters = this.createTokenQueryParameters(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n\r\n const endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : `${authority.tokenEndpoint}?${queryParameters}`;\r\n\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Creates query string for the /token request\r\n * @param request \r\n */\r\n private createTokenQueryParameters(request: CommonAuthorizationCodeRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n\r\n parameterBuilder.addThrottling();\r\n \r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n const cnfString = await popTokenGenerator.generateCnf(request);\r\n parameterBuilder.addPopToken(cnfString);\r\n }\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n private createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\r\n parameterBuilder.addScopes(requestScopes);\r\n\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n\r\n // generate the correlationId if not set by the user and add\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n\r\n // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n } else if (request.account) {\r\n const accountSid = this.extractAccountSid(request.account);\r\n // If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n if (accountSid && request.prompt === PromptValue.NONE) {\r\n // SessionId is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n } else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n }\r\n } else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n }\r\n } else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account \r\n */\r\n private extractAccountSid(account: AccountInfo): string | null {\r\n if (account.idTokenClaims) {\r\n const tokenClaims = account.idTokenClaims as TokenClaims;\r\n return tokenClaims.sid || null;\r\n }\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\r\nimport { Authority } from \"../authority/Authority\";\r\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\r\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\r\nimport { GrantType, AuthenticationScheme, Errors } from \"../utils/Constants\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ServerError } from \"../error/ServerError\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { UrlString } from \"../url/UrlString\";\r\n\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nexport class RefreshTokenClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n public async acquireToken(request: CommonRefreshTokenRequest): Promise{\r\n const reqTimestamp = TimeUtils.nowSeconds();\r\n const response = await this.executeTokenRequest(request, this.authority);\r\n\r\n const responseHandler = new ResponseHandler(\r\n this.config.authOptions.clientId,\r\n this.cacheManager,\r\n this.cryptoUtils,\r\n this.logger,\r\n this.config.serializableCache,\r\n this.config.persistencePlugin\r\n );\r\n\r\n responseHandler.validateTokenResponse(response.body);\r\n return responseHandler.handleServerTokenResponse(\r\n response.body,\r\n this.authority,\r\n reqTimestamp,\r\n request,\r\n undefined,\r\n undefined,\r\n true\r\n );\r\n }\r\n\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n\r\n // try checking if FOCI is enabled for the given application\r\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return this.acquireTokenWithCachedRefreshToken(request, true);\r\n } catch (e) {\r\n const noFamilyRTInCache = e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.noTokensFoundError.code;\r\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n // throw in all other cases\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n // fall back to application refresh token acquisition\r\n return this.acquireTokenWithCachedRefreshToken(request, false);\r\n }\r\n\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\r\n // fetches family RT or application RT based on FOCI value\r\n const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n\r\n // no refresh Token\r\n if (!refreshToken) {\r\n throw ClientAuthError.createNoTokensFoundError();\r\n }\r\n\r\n const refreshTokenRequest: CommonRefreshTokenRequest = {\r\n ...request,\r\n refreshToken: refreshToken.secret,\r\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER\r\n };\r\n\r\n return this.acquireToken(refreshTokenRequest);\r\n }\r\n\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\r\n : Promise> {\r\n\r\n const requestBody = await this.createTokenRequestBody(request);\r\n const queryParameters = this.createTokenQueryParameters(request);\r\n const headers: Record = this.createDefaultTokenRequestHeaders();\r\n const thumbprint: RequestThumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes\r\n };\r\n\r\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\r\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\r\n }\r\n\r\n /**\r\n * Creates query string for the /token request\r\n * @param request \r\n */\r\n private createTokenQueryParameters(request: CommonRefreshTokenRequest): string {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise {\r\n const parameterBuilder = new RequestParameterBuilder();\r\n\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n\r\n parameterBuilder.addScopes(request.scopes);\r\n\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n\r\n parameterBuilder.addClientInfo();\r\n\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n\r\n parameterBuilder.addThrottling();\r\n \r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n\r\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n\r\n if (this.config.clientCredentials.clientAssertion) {\r\n const clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n\r\n if (request.authenticationScheme === AuthenticationScheme.POP) {\r\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n\r\n parameterBuilder.addPopToken(await popTokenGenerator.generateCnf(request));\r\n }\r\n\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n\r\n return parameterBuilder.createQueryString();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BaseClient } from \"./BaseClient\";\r\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\r\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\r\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\r\nimport { ScopeSet } from \"../request/ScopeSet\";\r\nimport { AuthToken } from \"../account/AuthToken\";\r\nimport { TimeUtils } from \"../utils/TimeUtils\";\r\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\r\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ResponseHandler } from \"../response/ResponseHandler\";\r\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\r\nimport { AuthenticationScheme } from \"../utils/Constants\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\n\r\nexport class SilentFlowClient extends BaseClient {\r\n\r\n constructor(configuration: ClientConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n async acquireToken(request: CommonSilentFlowRequest): Promise {\r\n try {\r\n return await this.acquireCachedToken(request);\r\n } catch (e) {\r\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n const refreshTokenClient = new RefreshTokenClient(this.config);\r\n return refreshTokenClient.acquireTokenByRefreshToken(request);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n const requestScopes = new ScopeSet(request.scopes || []);\r\n const environment = request.authority || this.authority.getPreferredCache();\r\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, requestScopes, environment, authScheme);\r\n\r\n if (request.forceRefresh || \r\n !StringUtils.isEmptyObj(request.claims) || \r\n !cacheRecord.accessToken || \r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds) ||\r\n (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0))) {\r\n // Must refresh due to request parameters, or expired or non-existent access_token\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n\r\n return await this.generateResultFromCacheRecord(cacheRecord, request);\r\n }\r\n\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise {\r\n let idTokenObj: AuthToken | undefined;\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n return await ResponseHandler.generateAuthenticationResult(\r\n this.cryptoUtils,\r\n this.authority,\r\n cacheRecord,\r\n true,\r\n request,\r\n idTokenObj\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\r\n\r\nexport class ServerTelemetryEntity {\r\n failedRequests: Array;\r\n errors: string[];\r\n cacheHits: number;\r\n\r\n constructor() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\r\n\r\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n let validateEntity: boolean = true;\r\n\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SERVER_TELEM_CONSTANTS, Separators, Constants } from \"../../utils/Constants\";\r\nimport { CacheManager } from \"../../cache/CacheManager\";\r\nimport { AuthError } from \"../../error/AuthError\";\r\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\r\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\r\nimport { StringUtils } from \"../../utils/StringUtils\";\r\n\r\nexport class ServerTelemetryManager {\r\n private cacheManager: CacheManager;\r\n private apiId: number;\r\n private correlationId: string;\r\n private forceRefresh: boolean;\r\n private telemetryCacheKey: string;\r\n private wrapperSKU: String;\r\n private wrapperVer: String;\r\n\r\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.forceRefresh = telemetryRequest.forceRefresh || false;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n generateCurrentRequestHeaderValue(): string {\r\n const forceRefreshInt = this.forceRefresh ? 1 : 0;\r\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${forceRefreshInt}`;\r\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, request, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n generateLastRequestHeaderValue(): string {\r\n const lastRequests = this.getLastRequests();\r\n\r\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n const errorCount = lastRequests.errors.length;\r\n\r\n // Indicate whether this header contains all data or partial data\r\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n }\r\n\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n cacheFailedRequest(error: AuthError): void {\r\n const lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n \r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n } else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n } else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n } else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n incrementCacheHits(): number {\r\n const lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n }\r\n\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n getLastRequests(): ServerTelemetryEntity {\r\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\r\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\r\n\r\n return lastRequests || initialValue;\r\n }\r\n\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n clearTelemetryCache(): void {\r\n const lastRequests = this.getLastRequests();\r\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n const errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n } else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n const serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\r\n let i;\r\n let maxErrors = 0;\r\n let dataSize = 0;\r\n const errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\r\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\r\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return maxErrors;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ThrottlingConstants } from \"../../utils/Constants\";\r\n\r\nexport class ThrottlingEntity {\r\n // Unix-time value representing the expiration of the throttle\r\n throttleTime: number;\r\n // Information provided by the server\r\n error?: string;\r\n errorCodes?: Array;\r\n errorMessage?: string;\r\n subError?: string;\r\n\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses \r\n * @param key\r\n * @param entity\r\n */\r\n static isThrottlingEntity(key: string, entity?: object): boolean {\r\n \r\n let validateKey: boolean = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n \r\n let validateEntity: boolean = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n\r\n return validateKey && validateEntity;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class BrowserStorage implements IWindowStorage {\r\n\r\n private windowStorage: Storage;\r\n\r\n constructor(cacheLocation: string) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n\r\n private validateWindowStorage(cacheLocation: string): void {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n const storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.windowStorage.getItem(key);\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.windowStorage.setItem(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.windowStorage.removeItem(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n return Object.keys(this.windowStorage);\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.windowStorage.hasOwnProperty(key);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\n\r\nexport class MemoryStorage implements IWindowStorage {\r\n\r\n private cache: Map;\r\n\r\n constructor() {\r\n this.cache = new Map();\r\n }\r\n\r\n getItem(key: string): string | null {\r\n return this.cache.get(key) || null;\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.cache.set(key, value);\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.cache.delete(key);\r\n }\r\n\r\n getKeys(): string[] {\r\n const cacheKeys: string[] = [];\r\n this.cache.forEach((value: string, key: string) => {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n }\r\n\r\n containsKey(key: string): boolean {\r\n return this.cache.has(key);\r\n }\r\n\r\n clear() :void {\r\n this.cache.clear();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { InteractionType } from \"./BrowserConstants\";\r\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\r\n\r\nexport type BrowserStateObject = {\r\n interactionType: InteractionType\r\n};\r\n\r\nexport class BrowserProtocolUtils {\r\n\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto \r\n * @param state \r\n */\r\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n\r\n try {\r\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta as BrowserStateObject;\r\n } catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n \r\n const hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION } from \"@azure/msal-common\";\r\nimport { CacheOptions } from \"../config/Configuration\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserStorage } from \"./BrowserStorage\";\r\nimport { MemoryStorage } from \"./MemoryStorage\";\r\nimport { IWindowStorage } from \"./IWindowStorage\";\r\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\n\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nexport class BrowserCacheManager extends CacheManager {\r\n\r\n // Cache configuration, either set by user or default values.\r\n private cacheConfig: Required;\r\n // Window storage object (either local or sessionStorage)\r\n private browserStorage: IWindowStorage;\r\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\r\n private internalStorage: MemoryStorage;\r\n // Temporary cache\r\n private temporaryCacheStorage: IWindowStorage;\r\n // Client id of application. Used in cache keys to partition cache correctly in the case of multiple instances of MSAL.\r\n private logger: Logger;\r\n\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n private readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n\r\n constructor(clientId: string, cacheConfig: Required, cryptoImpl: ICrypto, logger: Logger) {\r\n super(clientId, cryptoImpl);\r\n\r\n this.cacheConfig = cacheConfig;\r\n this.logger = logger;\r\n\r\n this.internalStorage = new MemoryStorage();\r\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\r\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.cacheLocation);\r\n\r\n // Migrate any cache entries from older versions of MSAL.\r\n this.migrateCacheEntries();\r\n }\r\n\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n private setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n break;\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n }\r\n\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n private setupTemporaryCacheStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n } catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n }\r\n\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n private migrateCacheEntries(): void {\r\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\r\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\r\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\r\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\r\n\r\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n const errorValue = this.browserStorage.getItem(errorKey);\r\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n\r\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n\r\n keysToMigrate.forEach((cacheKey:string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\r\n }\r\n\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n private migrateCacheEntry(newKey: string, value: string|null): void {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n }\r\n\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n private validateAndParseJson(jsonValue: string): object | null {\r\n try {\r\n const parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n getItem(key: string): string | null {\r\n return this.browserStorage.getItem(key);\r\n }\r\n\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n setItem(key: string, value: string): void {\r\n this.browserStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n getAccount(accountKey: string): AccountEntity | null {\r\n const account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n\r\n const parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n }\r\n\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n setAccount(account: AccountEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n const key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n }\r\n\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\r\n const value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n }\r\n\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n setIdTokenCredential(idToken: IdTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n const idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n }\r\n\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\r\n const value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n }\r\n\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n const accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n }\r\n\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\r\n const value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n }\r\n\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n const refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n }\r\n\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\r\n const value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n setAppMetadata(appMetadata: AppMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n const appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n }\r\n\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\r\n const value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n }\r\n\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadata(key: string) : AuthorityMetadataEntity | null {\r\n const value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n const parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n getAuthorityMetadataKeys(): Array {\r\n const allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter((key) => {\r\n return this.isAuthorityMetadata(key);\r\n });\r\n }\r\n\r\n /**\r\n *\r\n * @param entity\r\n */\r\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n }\r\n\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\r\n const value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n const parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n }\r\n\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n }\r\n\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n const itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n\r\n const value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n const item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n }\r\n\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\r\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n removeItem(key: string): boolean {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n containsKey(key: string): boolean {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n }\r\n\r\n /**\r\n * Gets all keys in window.\r\n */\r\n getKeys(): string[] {\r\n return [\r\n ...this.browserStorage.getKeys(),\r\n ...this.temporaryCacheStorage.getKeys()\r\n ];\r\n }\r\n\r\n /**\r\n * Clears all cache entries created by MSAL (except tokens).\r\n */\r\n clear(): void {\r\n this.removeAllAccounts();\r\n this.removeAppMetadata();\r\n this.getKeys().forEach((cacheKey: string) => {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\r\n this.removeItem(cacheKey);\r\n }\r\n });\r\n\r\n this.internalStorage.clear();\r\n }\r\n\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\r\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;`;\r\n if (expires) {\r\n const expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += `expires=${expireTime};`;\r\n }\r\n\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n \r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n getItemCookie(cookieName: string): string {\r\n const name = `${encodeURIComponent(cookieName)}=`;\r\n const cookieList = document.cookie.split(\";\");\r\n for (let i: number = 0; i < cookieList.length; i++) {\r\n let cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n clearMsalCookies(): void {\r\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\r\n const cookieList = document.cookie.split(\";\");\r\n cookieList.forEach((cookie: string): void => {\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n const cookieKey = cookie.split(\"=\")[0];\r\n this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n clearItemCookie(cookieName: string): void {\r\n this.setItemCookie(cookieName, \"\", -1);\r\n }\r\n\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n getCookieExpirationTime(cookieLifeDays: number): string {\r\n const today = new Date();\r\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n }\r\n\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n getCache(): object {\r\n return this.browserStorage;\r\n }\r\n\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n setCache(): void {\r\n // sets nothing\r\n }\r\n\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n generateCacheKey(key: string): string {\r\n const generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\r\n }\r\n\r\n return JSON.stringify(key);\r\n }\r\n\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n generateAuthorityKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n generateNonceKey(stateString: string): string {\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n\r\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\r\n }\r\n\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n generateStateKey(stateString: string): string {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n const {\r\n libraryState: {\r\n id: stateId\r\n }\r\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\r\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\r\n } \r\n\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n getCachedAuthority(cachedState: string): string | null {\r\n const stateCacheKey = this.generateStateKey(cachedState);\r\n const state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n }\r\n\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n updateCacheEntries(state: string, nonce: string, authorityInstance: string): void {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n const stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n\r\n // Cache the nonce\r\n const nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n\r\n // Cache authorityKey\r\n const authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n }\r\n\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n resetRequestCache(state: string): void {\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(key => {\r\n if (key.indexOf(state) !== -1) {\r\n this.removeItem(key);\r\n }\r\n });\r\n }\r\n\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n }\r\n\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString \r\n */\r\n cleanRequestByState(stateString: string): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n const stateKey = this.generateStateKey(stateString);\r\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\r\n this.resetRequestCache(cachedState || \"\");\r\n }\r\n this.clearMsalCookies();\r\n }\r\n\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType \r\n */\r\n cleanRequestByInteractionType(interactionType: InteractionType): void {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach((key) => {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n \r\n // Retrieve state value, return if not a valid value\r\n const stateValue = this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\r\n this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n }\r\n\r\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n\r\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n }\r\n\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n\r\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n const authorityCacheKey: string = this.generateAuthorityKey(state);\r\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n\r\n return parsedRequest;\r\n }\r\n}\r\n\r\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\r\n const cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"../error/AuthError\";\r\nimport { NetworkResponse } from \"./NetworkManager\";\r\n\r\n/**\r\n * Options allowed by network request APIs.\r\n */\r\nexport type NetworkRequestOptions = {\r\n headers?: Record,\r\n body?: string;\r\n};\r\n\r\n/**\r\n * Client network interface to send backend requests.\r\n * @interface\r\n */\r\nexport interface INetworkModule {\r\n\r\n /**\r\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendGetRequestAsync(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise>;\r\n\r\n /**\r\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\r\n * @param url\r\n * @param requestParams\r\n * @param enableCaching\r\n */\r\n sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise>;\r\n}\r\n\r\nexport const StubbedNetworkModule: INetworkModule = {\r\n sendGetRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: () => {\r\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nexport class FetchClient implements INetworkModule {\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n const reqBody = (options && options.body) || \"\";\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders \r\n */\r\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\r\n const headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n const optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach((key) => {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n }\r\n\r\n private getHeaderDict(headers: Headers): Record {\r\n const headerDict: Record = {};\r\n headers.forEach((value: string, key: string) => {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nexport class XhrClient implements INetworkModule {\r\n\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\r\n }\r\n\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync(url: string, options?: NetworkRequestOptions): Promise> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\r\n }\r\n\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url \r\n * @param method \r\n * @param options \r\n */\r\n private sendRequestAsync(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise> {\r\n return new Promise>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n this.setXhrHeaders(xhr, options);\r\n xhr.onload = (): void => {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n }\r\n try {\r\n const jsonResponse = JSON.parse(xhr.responseText) as T;\r\n const networkResponse: NetworkResponse = {\r\n headers: this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n } catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n\r\n xhr.onerror = (): void => {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n } else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n } else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n } else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr \r\n * @param options \r\n */\r\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\r\n if (options && options.headers) {\r\n const headers = options.headers;\r\n Object.keys(headers).forEach((key: string) => {\r\n xhr.setRequestHeader(key, headers[key]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n * \r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr \r\n */\r\n private getHeaderDict(xhr: XMLHttpRequest): Record {\r\n const headerString = xhr.getAllResponseHeaders();\r\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n const headerDict: Record = {};\r\n headerArr.forEach((value: string) => {\r\n const parts = value.split(\": \");\r\n const headerName = parts.shift();\r\n const headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n\r\n return headerDict;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\r\nimport { FetchClient } from \"../network/FetchClient\";\r\nimport { XhrClient } from \"../network/XhrClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nexport class BrowserUtils {\r\n\r\n // #region Window Navigation and URL management\r\n\r\n /**\r\n * Clears hash from window url.\r\n */\r\n static clearHash(contentWindow: Window): void {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.pathname}${contentWindow.location.search}`);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n static replaceHash(url: string): void {\r\n const urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\r\n }\r\n\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n static isInIframe(): boolean {\r\n return window.parent !== window;\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n static getCurrentUri(): string {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n }\r\n\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n static getHomepage(): string {\r\n const currentUrl = new UrlString(window.location.href);\r\n const urlComponents = currentUrl.getUrlComponents();\r\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\r\n }\r\n\r\n /**\r\n * Returns best compatible network client object. \r\n */\r\n static getBrowserNetworkClient(): INetworkModule {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n } else {\r\n return new XhrClient();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if we have completed an auth and are \r\n * attempting another auth request inside an iframe.\r\n */\r\n static blockReloadInHiddenIframes(): void {\r\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n }\r\n\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\r\n const isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n }\r\n\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n static blockAcquireTokenInPopups(): void {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (window.opener && window.opener !== window && typeof window.name === \"string\" && window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n }\r\n\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n static detectIEOrEdge(): boolean {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf(\"MSIE \");\r\n const msie11 = ua.indexOf(\"Trident/\");\r\n const msedge = ua.indexOf(\"Edge/\");\r\n const isIE = msie > 0 || msie11 > 0;\r\n const isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INavigationClient } from \"./INavigationClient\";\r\nimport { NavigationOptions } from \"./NavigationOptions\";\r\n\r\nexport class NavigationClient implements INavigationClient {\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url \r\n * @param options \r\n */\r\n navigateInternal(url: string, options: NavigationOptions): Promise{\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url \r\n * @param options \r\n */\r\n navigateExternal(url: string, options: NavigationOptions): Promise {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url \r\n * @param options \r\n */\r\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n } else {\r\n window.location.assign(url);\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule } from \"@azure/msal-common\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationClient } from \"../navigation/NavigationClient\";\r\n\r\n// Default timeout for popup windows and iframes in milliseconds\r\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\n\r\n/**\r\n * Use this to configure the auth options in the Configuration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\r\n * - postLogoutRedirectUri - The redirect URI where the window navigates after a successful logout.\r\n * - navigateToLoginRequestUrl - Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\nexport type BrowserAuthOptions = {\r\n clientId: string;\r\n authority?: string;\r\n knownAuthorities?: Array;\r\n cloudDiscoveryMetadata?: string;\r\n authorityMetadata?: string;\r\n redirectUri?: string;\r\n postLogoutRedirectUri?: string | null;\r\n navigateToLoginRequestUrl?: boolean;\r\n clientCapabilities?: Array;\r\n protocolMode?: ProtocolMode;\r\n};\r\n\r\n/**\r\n * Use this to configure the below cache configuration options:\r\n *\r\n * - cacheLocation - Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\r\n * - storeAuthStateInCookie - If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\r\n * - secureCookies - If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\r\n */\r\nexport type CacheOptions = {\r\n cacheLocation?: BrowserCacheLocation | string;\r\n storeAuthStateInCookie?: boolean;\r\n secureCookies?: boolean;\r\n};\r\n\r\n/**\r\n * Library Specific Options\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n * - loggerOptions - Used to initialize the Logger object (See ClientConfiguration.ts)\r\n * - networkClient - Network interface implementation\r\n * - windowHashTimeout - Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\r\n * - iframeHashTimeout - Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\r\n * - loadFrameTimeout - Sets the timeout for waiting for a response hash in an iframe or popup\r\n * - navigateFrameWait - Maximum time the library should wait for a frame to load\r\n * - redirectNavigationTimeout - Time to wait for redirection to occur before resolving promise\r\n * - asyncPopups - Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\r\n * - allowRedirectInIframe - Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\r\n */\r\nexport type BrowserSystemOptions = SystemOptions & {\r\n loggerOptions?: LoggerOptions;\r\n networkClient?: INetworkModule;\r\n navigationClient?: INavigationClient;\r\n windowHashTimeout?: number;\r\n iframeHashTimeout?: number;\r\n loadFrameTimeout?: number;\r\n navigateFrameWait?: number;\r\n redirectNavigationTimeout?: number;\r\n asyncPopups?: boolean;\r\n allowRedirectInIframe?: boolean;\r\n};\r\n\r\n/**\r\n * Use the configuration object to configure MSAL and initialize the UserAgentApplication.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\r\n * - cache: this is where you configure cache location and whether to store cache in cookies\r\n * - system: this is where you can configure the network client, logger, token renewal offset\r\n */\r\nexport type Configuration = {\r\n auth: BrowserAuthOptions,\r\n cache?: CacheOptions,\r\n system?: BrowserSystemOptions\r\n};\r\n\r\nexport type BrowserConfiguration = {\r\n auth: Required,\r\n cache: Required,\r\n system: Required\r\n};\r\n\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\r\n\r\n // Default auth options for browser\r\n const DEFAULT_AUTH_OPTIONS: Required = {\r\n clientId: \"\",\r\n authority: `${Constants.DEFAULT_AUTHORITY}`,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n redirectUri: \"\",\r\n postLogoutRedirectUri: \"\",\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD\r\n };\r\n\r\n // Default cache options for browser\r\n const DEFAULT_CACHE_OPTIONS: Required = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n\r\n // Default logger options for browser\r\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: (): void => {},\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n\r\n // Default system options for browser\r\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\r\n navigationClient: new NavigationClient(),\r\n loadFrameTimeout: 0,\r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS,\r\n iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS,\r\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\r\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\r\n asyncPopups: false,\r\n allowRedirectInIframe: false\r\n };\r\n\r\n const overlayedConfig: BrowserConfiguration = {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\r\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem }\r\n };\r\n return overlayedConfig;\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport type InteractionParams = {};\r\n\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nexport abstract class InteractionHandler {\r\n\r\n protected authModule: AuthorizationCodeClient;\r\n protected browserStorage: BrowserCacheManager;\r\n protected authCodeRequest: CommonAuthorizationCodeRequest;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n }\r\n\r\n /**\r\n * Function to enable user interaction.\r\n * @param requestUrl\r\n */\r\n abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise | Promise;\r\n\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n\r\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise {\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\r\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { ApiId, BrowserConstants, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport type RedirectParams = InteractionParams & {\r\n navigationClient: INavigationClient;\r\n redirectTimeout: number;\r\n redirectStartPage: string;\r\n onRedirectNavigate?: (url: string) => void | boolean;\r\n};\r\n\r\nexport class RedirectHandler extends InteractionHandler {\r\n\r\n private browserCrypto: ICrypto;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n this.browserCrypto = browserCrypto;\r\n }\r\n\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n // Navigate if valid URL\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set to true, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.authModule.logger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to:\" + requestUrl);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n \r\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\r\n if (typeof params.onRedirectNavigate === \"function\") {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n const navigate = params.onRedirectNavigate(requestUrl);\r\n\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n } else {\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return;\r\n }\r\n } else {\r\n // Navigate window to request URL\r\n this.authModule.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n }\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise {\r\n this.authModule.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Remove throttle if it exists\r\n if (clientId) {\r\n ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest.authority, this.authCodeRequest.scopes);\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CommonEndSessionRequest, Constants, Logger, StringUtils } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConstants, InteractionType, TemporaryCacheKeys } from \"./BrowserConstants\";\r\n\r\nexport class PopupUtils {\r\n private browserStorage: BrowserCacheManager;\r\n private logger: Logger;\r\n private currentWindow: Window|undefined;\r\n\r\n constructor(storageImpl: BrowserCacheManager, logger: Logger) {\r\n this.browserStorage = storageImpl;\r\n this.logger = logger;\r\n\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n }\r\n\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @ignore\r\n * @hidden\r\n */\r\n openPopup(urlNavigate: string, popupName: string, popup?: Window|null): Window {\r\n try {\r\n let popupWindow;\r\n // Popup window passed in, setting url to navigate to\r\n if (popup) {\r\n popupWindow = popup;\r\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\r\n popupWindow.location.assign(urlNavigate);\r\n } else if (typeof popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\r\n popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupName);\r\n }\r\n\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n return popupWindow;\r\n } catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n }\r\n\r\n static openSizedPopup(urlNavigate: string, popupName: string): Window|null {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n const winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n const height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n const left = Math.max(0, ((width / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n const top = Math.max(0, ((height / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n\r\n return window.open(urlNavigate, popupName, `width=${BrowserConstants.POPUP_WIDTH}, height=${BrowserConstants.POPUP_HEIGHT}, top=${top}, left=${left}, scrollbars=yes`);\r\n }\r\n\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n unloadWindow(e: Event): void {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n cleanPopup(popupWindow?: Window): void {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n */\r\n monitorPopupForSameOrigin(popupWindow: Window): Promise {\r\n return new Promise((resolve, reject) => {\r\n const intervalId = setInterval(() => {\r\n if (popupWindow.closed) {\r\n // Window is closed\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n clearInterval(intervalId);\r\n resolve();\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n static generatePopupName(clientId: string, request: AuthorizationUrlRequest): string {\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${request.scopes.join(\"-\")}.${request.authority}.${request.correlationId}`;\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId \r\n * @param request \r\n */\r\n static generateLogoutPopupName(clientId: string, request: CommonEndSessionRequest): string {\r\n const homeAccountId = request.account && request.account.homeAccountId;\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${homeAccountId}.${request.correlationId}`;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient } from \"@azure/msal-common\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserConstants, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { PopupUtils } from \"../utils/PopupUtils\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\n\r\nexport type PopupParams = InteractionParams & {\r\n popup?: Window|null;\r\n popupName: string\r\n};\r\n\r\n/**\r\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\r\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\r\n */\r\nexport class PopupHandler extends InteractionHandler {\r\n private popupUtils: PopupUtils;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n\r\n // Properly sets this reference for the unload event.\r\n this.popupUtils = new PopupUtils(storageImpl, authCodeModule.logger);\r\n }\r\n\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n this.authModule.logger.infoPii(\"Navigate to:\" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.popupUtils.openPopup(requestUrl, params.popupName, params.popup);\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - milliseconds until timeout\r\n */\r\n monitorPopupForHash(popupWindow: Window): Promise {\r\n return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(() => {\r\n const contentHash = popupWindow.location.hash;\r\n BrowserUtils.clearHash(popupWindow);\r\n this.popupUtils.cleanPopup(popupWindow);\r\n\r\n if (!contentHash) {\r\n throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\r\n }\r\n\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n return contentHash;\r\n } else {\r\n throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants } from \"@azure/msal-common\";\r\nimport { InteractionHandler } from \"./InteractionHandler\";\r\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\r\n\r\nexport class SilentHandler extends InteractionHandler {\r\n\r\n private navigateFrameWait: number;\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, navigateFrameWait: number) {\r\n super(authCodeModule, storageImpl, authCodeRequest);\r\n this.navigateFrameWait = navigateFrameWait;\r\n }\r\n\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n async initiateAuthRequest(requestUrl: string): Promise {\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.authModule.logger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n\r\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\r\n }\r\n\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n this.authModule.logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\r\n }\r\n\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n const nowMark = window.performance.now();\r\n const timeoutMark = nowMark + timeout;\r\n\r\n const intervalId = setInterval(() => {\r\n if (window.performance.now() > timeoutMark) {\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n const contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n } catch (e) {}\r\n\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n\r\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n private loadFrame(urlNavigate: string): Promise {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n\r\n return new Promise((resolve, reject) => {\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n setTimeout(() => {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n resolve(frameHandle);\r\n }, this.navigateFrameWait);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n return frameHandle;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n private createHiddenIframe(): HTMLIFrameElement {\r\n const authFrame = document.createElement(\"iframe\");\r\n\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n\r\n return authFrame;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthenticationResult, CommonSilentFlowRequest } from \"@azure/msal-common\";\r\nimport { Configuration } from \"../config/Configuration\";\r\nimport { DEFAULT_REQUEST, ApiId, InteractionType } from \"../utils/BrowserConstants\";\r\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { ClientApplication } from \"./ClientApplication\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n super(configuration);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async loginRedirect(request?: RedirectRequest): Promise {\r\n this.logger.verbose(\"loginRedirect called\");\r\n return this.acquireTokenRedirect(request || DEFAULT_REQUEST);\r\n }\r\n\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n loginPopup(request?: PopupRequest): Promise {\r\n this.logger.verbose(\"loginPopup called\");\r\n return this.acquireTokenPopup(request || DEFAULT_REQUEST);\r\n }\r\n\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n async acquireTokenSilent(request: SilentRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\");\r\n const account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...this.initializeBaseRequest(request),\r\n account: account,\r\n forceRefresh: request.forceRefresh || false\r\n };\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n try {\r\n // Telemetry manager only used to increment cacheHits here\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow, silentRequest.correlationId);\r\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority);\r\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, cachedToken);\r\n return cachedToken;\r\n } catch (e) {\r\n try {\r\n const tokenRenewalResult = await this.acquireTokenByRefreshToken(silentRequest);\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, tokenRenewalResult);\r\n return tokenRenewalResult;\r\n } catch (tokenRenewalError) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n throw tokenRenewalError;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CryptoOps } from \"../crypto/CryptoOps\";\r\nimport { Authority, StringUtils, UrlString, ServerAuthorizationCodeResponse, CommonAuthorizationCodeRequest, AuthorizationCodeClient, PromptValue, ServerError, InteractionRequiredAuthError, AccountInfo, AuthorityFactory, ServerTelemetryManager, SilentFlowClient, ClientConfiguration, BaseAuthRequest, ServerTelemetryRequest, PersistentCacheKeys, IdToken, ProtocolUtils, ResponseMode, Constants, INetworkModule, AuthenticationResult, Logger, ThrottlingUtils, RefreshTokenClient, AuthenticationScheme, CommonSilentFlowRequest, CommonEndSessionRequest, AccountEntity, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthorityOptions } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserConfiguration, buildConfiguration, Configuration } from \"../config/Configuration\";\r\nimport { TemporaryCacheKeys, InteractionType, ApiId, BrowserConstants, BrowserCacheLocation, WrapperSKU } from \"../utils/BrowserConstants\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserStateObject, BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\r\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\r\nimport { PopupHandler, PopupParams } from \"../interaction_handler/PopupHandler\";\r\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\r\nimport { version, name } from \"../packageMetadata\";\r\nimport { EventError, EventMessage, EventPayload, EventCallbackFunction } from \"../event/EventMessage\";\r\nimport { EventType } from \"../event/EventType\";\r\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\r\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\r\nimport { PopupUtils } from \"../utils/PopupUtils\";\r\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport abstract class ClientApplication {\r\n\r\n // Crypto interface implementation\r\n protected readonly browserCrypto: ICrypto;\r\n\r\n // Storage interface implementation\r\n protected readonly browserStorage: BrowserCacheManager;\r\n\r\n // Network interface implementation\r\n protected readonly networkClient: INetworkModule;\r\n\r\n // Navigation interface implementation\r\n protected navigationClient: INavigationClient;\r\n\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n\r\n // Logger\r\n protected logger: Logger;\r\n\r\n // Flag to indicate if in browser environment\r\n protected isBrowserEnvironment: boolean;\r\n\r\n // Sets the account to use if no account info is given\r\n private activeLocalAccountId: string | null;\r\n\r\n // Set the SKU and Version for wrapper library if applicable\r\n private wrapperSKU: string | undefined;\r\n private wrapperVer: string | undefined;\r\n\r\n // Callback for subscribing to events\r\n private eventCallbacks: Map;\r\n\r\n // Redirect Response Object\r\n private redirectResponse: Map>;\r\n\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n constructor(configuration: Configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n\r\n this.activeLocalAccountId = null;\r\n\r\n // Array of events\r\n this.eventCallbacks = new Map();\r\n\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n \r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n\r\n if (!this.isBrowserEnvironment) {\r\n this.browserStorage = DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n this.browserCrypto = DEFAULT_CRYPTO_IMPLEMENTATION;\r\n return;\r\n }\r\n\r\n // Initialize the crypto class.\r\n this.browserCrypto = new CryptoOps();\r\n\r\n // Initialize the browser storage class.\r\n this.browserStorage = new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger);\r\n }\r\n\r\n // #region Redirect Flow\r\n\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n async handleRedirectPromise(hash?: string): Promise {\r\n this.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n /**\r\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\r\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\r\n * several times concurrently.\r\n */\r\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n let response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n response = this.handleRedirectResponse(hash)\r\n .then((result: AuthenticationResult | null) => {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n } else {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n this.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n return result;\r\n })\r\n .catch((e) => {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n this.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n } else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n \r\n return response;\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return null;\r\n }\r\n\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n private async handleRedirectResponse(hash?: string): Promise {\r\n if (!this.interactionInProgress()) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return null;\r\n }\r\n\r\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n let state: string;\r\n try {\r\n state = this.validateAndExtractStateFromHash(responseHash, InteractionType.Redirect);\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"State extracted from hash\");\r\n } catch (e) {\r\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return null;\r\n }\r\n\r\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\r\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || \"\";\r\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n\r\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n const handleHashResult = await this.handleHash(responseHash, state);\r\n\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n\r\n return handleHashResult;\r\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return this.handleHash(responseHash, state);\r\n } else if (!BrowserUtils.isInIframe()) {\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n\r\n /**\r\n * Default behavior is to redirect to the start page and not process the hash now. \r\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\r\n */ \r\n let processHashOnRedirect: boolean = true;\r\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\r\n // Redirect to home page if login request url is null (real null or the string null)\r\n const homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\r\n } else {\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\r\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\r\n }\r\n\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return this.handleHash(responseHash, state);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n private getRedirectResponseHash(hash: string): string | null {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\r\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n\r\n if (isResponseHash) {\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n }\r\n\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n private validateAndExtractStateFromHash(hash: string, interactionType: InteractionType): string {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\");\r\n // Deserialize hash fragment response parameters.\r\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n\r\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n\r\n this.logger.verbose(\"Returning state from hash\");\r\n return serverParams.state;\r\n }\r\n\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n private async handleHash(hash: string, state: string): Promise {\r\n this.logger.verbose(\"handleHash called\");\r\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise, cachedRequest.correlationId);\r\n\r\n try {\r\n // Hash contains known properties - handle and return in callback\r\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.browserCrypto);\r\n return await interactionHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient, this.config.auth.clientId);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n async acquireTokenRedirect(request: RedirectRequest): Promise {\r\n // Preflight request\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n this.logger.verbose(\"acquireTokenRedirect called\");\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n\r\n const validRequest: AuthorizationUrlRequest = this.preflightInteractiveRequest(request, InteractionType.Redirect);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect, validRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority);\r\n\r\n // Create redirect interaction handler.\r\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.browserCrypto);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\r\n\r\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n\r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n });\r\n } catch (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Popup Flow\r\n\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n acquireTokenPopup(request: PopupRequest): Promise {\r\n let validRequest: AuthorizationUrlRequest;\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n this.logger.verbose(\"acquireTokenPopup called\");\r\n validRequest = this.preflightInteractiveRequest(request, InteractionType.Popup);\r\n } catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n const popupName = PopupUtils.generatePopupName(this.config.auth.clientId, validRequest);\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n return this.acquireTokenPopupAsync(validRequest, popupName);\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n const popup = PopupUtils.openSizedPopup(\"about:blank\", popupName);\r\n return this.acquireTokenPopupAsync(validRequest, popupName, popup);\r\n }\r\n }\r\n\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n private async acquireTokenPopupAsync(validRequest: AuthorizationUrlRequest, popupName: string, popup?: Window|null): Promise {\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n // If logged in, emit acquire token events\r\n const loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, validRequest);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_START, InteractionType.Popup, validRequest);\r\n }\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup, validRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority);\r\n\r\n // Create acquire token url.\r\n const navigateUrl = await authClient.getAuthCodeUrl(validRequest);\r\n\r\n // Create popup interaction handler.\r\n const interactionHandler = new PopupHandler(authClient, this.browserStorage, authCodeRequest);\r\n\r\n // Show the UI once the url has been created. Get the window handle for the popup.\r\n const popupParameters: PopupParams = {\r\n popup,\r\n popupName\r\n };\r\n const popupWindow: Window = interactionHandler.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n const hash = await interactionHandler.monitorPopupForHash(popupWindow);\r\n const state = this.validateAndExtractStateFromHash(hash, InteractionType.Popup);\r\n\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest.authority, authCodeRequest.scopes);\r\n\r\n // Handle response from hash string.\r\n const result = await interactionHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient);\r\n\r\n // If logged in, emit acquire token events\r\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n this.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n } else {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n\r\n return result;\r\n } catch (e) {\r\n if (loggedInAccounts.length > 0) {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n } else {\r\n this.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n \r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Silent Flow\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n async ssoSilent(request: SsoSilentRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"ssoSilent called\");\r\n this.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, request);\r\n\r\n try {\r\n const silentTokenResult = await this.acquireTokenByIframe(request, ApiId.ssoSilent);\r\n this.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, silentTokenResult);\r\n return silentTokenResult;\r\n } catch (e) {\r\n this.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. To be used for silent refresh token acquisition and renewal.\r\n * @param request\r\n * @param apiId - ApiId of the calling function. Used for telemetry.\r\n */\r\n private async acquireTokenByIframe(request: SsoSilentRequest, apiId: ApiId): Promise {\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n throw BrowserAuthError.createSilentSSOInsufficientInfoError();\r\n }\r\n\r\n // Check that prompt is set to none, throw error if it is set to anything else.\r\n if (request.prompt && request.prompt !== PromptValue.NONE) {\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n\r\n // Create silent request\r\n const silentRequest: AuthorizationUrlRequest = this.initializeAuthorizationRequest({\r\n ...request,\r\n prompt: PromptValue.NONE\r\n }, InteractionType.Silent);\r\n\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(apiId, silentRequest.correlationId);\r\n\r\n try {\r\n // Create auth code request and generate PKCE params\r\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\r\n\r\n // Initialize the client\r\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority);\r\n\r\n // Create authorize request url\r\n const navigateUrl = await authClient.getAuthCodeUrl(silentRequest);\r\n\r\n return await this.silentTokenHelper(navigateUrl, authCodeRequest, authClient);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a refresh token.\r\n *\r\n * @param {@link SilentRequest}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n protected async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise {\r\n this.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n const silentRequest: CommonSilentFlowRequest = {\r\n ...request,\r\n ...this.initializeBaseRequest(request)\r\n };\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow, silentRequest.correlationId);\r\n try {\r\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority);\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n return await refreshTokenClient.acquireTokenByRefreshToken(silentRequest);\r\n } catch (e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n const isServerError = e instanceof ServerError;\r\n const isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\r\n const isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\r\n this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\");\r\n return await this.acquireTokenByIframe(request, ApiId.acquireTokenSilent_authCode);\r\n }\r\n throw e;\r\n }\r\n }\r\n\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n private async silentTokenHelper(navigateUrl: string, authCodeRequest: CommonAuthorizationCodeRequest, authClient: AuthorizationCodeClient): Promise {\r\n // Create silent handler\r\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.config.system.navigateFrameWait);\r\n // Get the frame handle for the silent request\r\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\r\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\r\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\r\n const state = this.validateAndExtractStateFromHash(hash, InteractionType.Silent);\r\n\r\n // Handle response from hash string\r\n return silentHandler.handleCodeResponse(hash, state, authClient.authority, this.networkClient);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Logout\r\n\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest \r\n * @deprecated\r\n */\r\n async logout(logoutRequest?: EndSessionRequest): Promise {\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\");\r\n return this.logoutRedirect(logoutRequest);\r\n }\r\n\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n this.logger.verbose(\"logoutRedirect called\");\r\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout, validLogoutRequest.correlationId);\r\n\r\n try {\r\n this.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\r\n // create logout string and navigate user window to logout. Auth module will clear cache.\r\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\r\n \r\n if (!validLogoutRequest.account || AccountEntity.accountInfoIsEqual(validLogoutRequest.account, this.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.setActiveAccount(null);\r\n }\r\n \r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n \r\n this.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n // Check if onRedirectNavigate is implemented, and invoke it if so\r\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\r\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n\r\n if (navigate !== false) {\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n } else {\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n }\r\n } else {\r\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\r\n return;\r\n }\r\n } catch(e) {\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n this.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\r\n throw e;\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n }\r\n\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest \r\n */\r\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\r\n let validLogoutRequest: CommonEndSessionRequest;\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n this.logger.verbose(\"logoutPopup called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n } catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n\r\n const popupName = PopupUtils.generateLogoutPopupName(this.config.auth.clientId, validLogoutRequest);\r\n let popup;\r\n\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n } else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n popup = PopupUtils.openSizedPopup(\"about:blank\", popupName);\r\n }\r\n\r\n const authority = logoutRequest && logoutRequest.authority;\r\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, authority, popup, mainWindowRedirectUri);\r\n }\r\n\r\n /**\r\n * \r\n * @param request \r\n * @param popupName \r\n * @param requestAuthority\r\n * @param popup \r\n */\r\n private async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise {\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n \r\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup, validRequest.correlationId);\r\n \r\n try {\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n // Initialize the client\r\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\r\n\r\n // create logout string and navigate user window to logout. Auth module will clear cache.\r\n const logoutUri: string = authClient.getLogoutUri(validRequest);\r\n if (!validRequest.account || AccountEntity.accountInfoIsEqual(validRequest.account, this.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.setActiveAccount(null);\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n\r\n const popupUtils = new PopupUtils(this.browserStorage, this.logger);\r\n // Open the popup window to requestUrl.\r\n const popupWindow = popupUtils.openPopup(logoutUri, popupName, popup);\r\n this.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\r\n\r\n try {\r\n // Don't care if this throws an error (User Cancelled)\r\n await popupUtils.monitorPopupForSameOrigin(popupWindow);\r\n this.logger.verbose(\"Popup successfully redirected to postLogoutRedirectUri\");\r\n } catch (e) {\r\n this.logger.verbose(`Error occurred while monitoring popup for same origin. Session on server may remain active. Error: ${e}`);\r\n }\r\n\r\n popupUtils.cleanPopup(popupWindow);\r\n\r\n if (mainWindowRedirectUri) {\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(`Redirecing main window to: ${absoluteUrl}`);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n } else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n\r\n } catch (e) {\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n \r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.INTERACTION_STATUS_KEY));\r\n this.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n throw e;\r\n }\r\n\r\n this.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Account APIs\r\n\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n getAllAccounts(): AccountInfo[] {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByUsername(userName: string): AccountInfo|null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching username: ${userName}`);\r\n return allAccounts.filter(accountObj => accountObj.username.toLowerCase() === userName.toLowerCase())[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByHomeId(homeAccountId: string): AccountInfo|null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\r\n return allAccounts.filter(accountObj => accountObj.homeAccountId === homeAccountId)[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\r\n const allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(`Returning signed-in accounts matching localAccountId: ${localAccountId}`);\r\n return allAccounts.filter(accountObj => accountObj.localAccountId === localAccountId)[0] || null;\r\n } else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n setActiveAccount(account: AccountInfo | null): void {\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n this.activeLocalAccountId = account.localAccountId;\r\n } else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.activeLocalAccountId = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the currently active account\r\n */\r\n getActiveAccount(): AccountInfo | null {\r\n if (!this.activeLocalAccountId) {\r\n this.logger.verbose(\"getActiveAccount: No active account\");\r\n return null;\r\n }\r\n\r\n return this.getAccountByLocalId(this.activeLocalAccountId);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Helpers\r\n\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n protected getRedirectUri(requestRedirectUri?: string): string {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n protected getRedirectStartPage(requestStartPage?: string): string {\r\n this.logger.verbose(\"getRedirectStartPage called\");\r\n const redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n }\r\n\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n */\r\n async getDiscoveredAuthority(requestAuthority?: string): Promise {\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n\r\n if (requestAuthority) {\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\r\n }\r\n\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions);\r\n }\r\n\r\n /**\r\n * Helper to check whether interaction is in progress.\r\n */\r\n protected interactionInProgress(): boolean {\r\n // Check whether value in cache is present and equal to expected value\r\n return (this.browserStorage.getTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, true)) === BrowserConstants.INTERACTION_IN_PROGRESS_VALUE;\r\n }\r\n\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createAuthCodeClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new AuthorizationCodeClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createSilentFlowClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new SilentFlowClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise {\r\n this.logger.verbose(\"createRefreshTokenClient called\");\r\n // Create auth module.\r\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\r\n return new RefreshTokenClient(clientConfig);\r\n }\r\n\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n */\r\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string): Promise {\r\n this.logger.verbose(\"getClientConfiguration called\");\r\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority);\r\n\r\n return {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds\r\n },\r\n loggerOptions: {\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: \"\",\r\n os: \"\"\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Helper to validate app environment before making a request.\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected preflightInteractiveRequest(request: RedirectRequest|PopupRequest, interactionType: InteractionType): AuthorizationUrlRequest {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Check if interaction is in progress. Throw error if true.\r\n if (this.interactionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n\r\n return this.initializeAuthorizationRequest(request, interactionType);\r\n }\r\n\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n * * @param interactionType\r\n */\r\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType): void {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n }\r\n\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n protected initializeBaseRequest(request: Partial): BaseAuthRequest {\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n const authority = request.authority || this.config.auth.authority;\r\n\r\n const scopes = [...((request && request.scopes) || [])];\r\n const correlationId = (request && request.correlationId) || this.browserCrypto.createNewGuid();\r\n\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!request.authenticationScheme) {\r\n request.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n } else {\r\n this.logger.verbose(`Authentication Scheme set to \"${request.authenticationScheme}\" as configured in Auth request`);\r\n }\r\n\r\n const validatedRequest: BaseAuthRequest = {\r\n ...request,\r\n correlationId,\r\n authority,\r\n scopes\r\n };\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n protected initializeServerTelemetryManager(apiId: number, correlationId: string, forceRefresh?: boolean): ServerTelemetryManager {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n const telemetryPayload: ServerTelemetryRequest = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.wrapperSKU,\r\n wrapperVer: this.wrapperVer\r\n };\r\n\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n }\r\n\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n protected initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): AuthorizationUrlRequest {\r\n this.logger.verbose(\"initializeAuthorizationRequest called\");\r\n const redirectUri = this.getRedirectUri(request.redirectUri);\r\n const browserState: BrowserStateObject = {\r\n interactionType: interactionType\r\n };\r\n\r\n const state = ProtocolUtils.setRequestState(\r\n this.browserCrypto,\r\n (request && request.state) || \"\",\r\n browserState\r\n );\r\n\r\n const validatedRequest: AuthorizationUrlRequest = {\r\n ...this.initializeBaseRequest(request),\r\n redirectUri: redirectUri,\r\n state: state,\r\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\r\n responseMode: ResponseMode.FRAGMENT\r\n };\r\n\r\n const account = request.account || this.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\");\r\n this.logger.verbosePii(`Setting validated request account: ${account}`);\r\n validatedRequest.account = account;\r\n }\r\n\r\n // Check for ADAL SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint)) {\r\n // Only check for adal token if no SSO params are being used\r\n const adalIdTokenString = this.browserStorage.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n const adalIdToken = new IdToken(adalIdTokenString, this.browserCrypto);\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdToken.claims && adalIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL token retrieved, setting ADAL upn as loginHint\");\r\n validatedRequest.loginHint = adalIdToken.claims.upn;\r\n }\r\n }\r\n }\r\n\r\n this.browserStorage.updateCacheEntries(validatedRequest.state, validatedRequest.nonce, validatedRequest.authority);\r\n\r\n return validatedRequest;\r\n }\r\n\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise {\r\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\r\n\r\n const authCodeRequest: CommonAuthorizationCodeRequest = {\r\n ...request,\r\n redirectUri: request.redirectUri,\r\n code: \"\",\r\n codeVerifier: generatedPkceParams.verifier\r\n };\r\n\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n\r\n return authCodeRequest;\r\n }\r\n\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\r\n this.logger.verbose(\"initializeLogoutRequest called\");\r\n\r\n // Check if interaction is in progress. Throw error if true.\r\n if (this.interactionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n\r\n const validLogoutRequest: CommonEndSessionRequest = {\r\n correlationId: this.browserCrypto.createNewGuid(),\r\n ...logoutRequest\r\n };\r\n\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\");\r\n } else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n } else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\");\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n } else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not settibng post logout redirect uri\");\r\n }\r\n\r\n return validLogoutRequest;\r\n }\r\n\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n protected emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\r\n if (this.isBrowserEnvironment) {\r\n const message: EventMessage = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n\r\n this.logger.info(`Emitting event: ${eventType}`);\r\n\r\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\r\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\r\n callback.apply(null, [message]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n if (this.isBrowserEnvironment) {\r\n const callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\r\n\r\n return callbackId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(`Event callback ${callbackId} removed.`);\r\n }\r\n\r\n /**\r\n * Returns the logger instance\r\n */\r\n getLogger(): Logger {\r\n return this.logger;\r\n }\r\n\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n setLogger(logger: Logger): void {\r\n this.logger = logger;\r\n }\r\n\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\r\n // Validate the SKU passed in is one we expect\r\n this.wrapperSKU = sku;\r\n this.wrapperVer = version;\r\n }\r\n\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n setNavigationClient(navigationClient: INavigationClient): void {\r\n this.navigationClient = navigationClient;\r\n }\r\n // #endregion\r\n}\r\n","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'assert failed: gltf');\n }\n}\n","/* global ImageBitmap, Image */\nimport {global, isBrowser} from '../utils/globals';\n\n// @ts-ignore TS2339: Property does not exist on type\nconst {_parseImageNode} = global;\n\nconst IMAGE_SUPPORTED = typeof Image !== 'undefined'; // NOTE: \"false\" positives if jsdom is installed\nconst IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== 'undefined';\nconst NODE_IMAGE_SUPPORTED = Boolean(_parseImageNode);\nconst DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;\n\n// Checks if a loaders.gl image type is supported\nexport function isImageTypeSupported(type) {\n switch (type) {\n case 'auto':\n // Should only ever be false in Node.js, if polyfills have not been installed...\n return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;\n\n case 'imagebitmap':\n return IMAGE_BITMAP_SUPPORTED;\n case 'image':\n return IMAGE_SUPPORTED;\n case 'data':\n return DATA_SUPPORTED;\n\n // DEPRECATED types\n case 'html':\n return IMAGE_SUPPORTED;\n case 'ndarray':\n return DATA_SUPPORTED;\n\n default:\n throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);\n }\n}\n\n// Returns the best loaders.gl image type supported on current run-time environment\nexport function getDefaultImageType() {\n if (IMAGE_BITMAP_SUPPORTED) {\n return 'imagebitmap';\n }\n if (IMAGE_SUPPORTED) {\n return 'image';\n }\n if (DATA_SUPPORTED) {\n return 'data';\n }\n\n // This should only happen in Node.js\n throw new Error(`Install '@loaders.gl/polyfills' to parse images under Node.js`);\n}\n","/* global Image, ImageBitmap */\nimport assert from '../utils/assert';\n\nexport function isImage(image) {\n return Boolean(getImageTypeOrNull(image));\n}\n\nexport function deleteImage(image) {\n switch (getImageType(image)) {\n case 'imagebitmap':\n image.close();\n break;\n default:\n // Nothing to do for images and image data objects\n }\n}\n\nexport function getImageType(image) {\n const format = getImageTypeOrNull(image);\n if (!format) {\n throw new Error('Not an image');\n }\n return format;\n}\n\nexport function getImageData(image) {\n switch (getImageType(image)) {\n case 'data':\n return image;\n\n case 'image':\n case 'imagebitmap':\n // Extract the image data from the image via a canvas\n /* global document */\n const canvas = document.createElement('canvas');\n // TODO - reuse the canvas?\n const context = canvas.getContext('2d');\n if (context) {\n canvas.width = image.width;\n canvas.height = image.height;\n context.drawImage(image, 0, 0);\n return context.getImageData(0, 0, image.width, image.height);\n }\n // eslint-disable no-fallthrough\n default:\n return assert(false);\n }\n}\n\n// TODO DEPRECATED not needed (use getImageData)\nexport {getImageData as getImageSize};\n\n// PRIVATE\n\n// eslint-disable-next-line complexity\nfunction getImageTypeOrNull(image) {\n if (typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n return 'imagebitmap';\n }\n if (typeof Image !== 'undefined' && image instanceof Image) {\n return 'image';\n }\n if (image && typeof image === 'object' && image.data && image.width && image.height) {\n return 'data';\n }\n return null;\n}\n","/* global TextDecoder, Blob, btoa */\n// SVG parsing has limitations, e.g:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=606319\n\nconst SVG_DATA_URL_PATTERN = /^data:image\\/svg\\+xml/;\nconst SVG_URL_PATTERN = /\\.svg((\\?|#).*)?$/;\n\nexport function isSVG(url) {\n return url && (SVG_DATA_URL_PATTERN.test(url) || SVG_URL_PATTERN.test(url));\n}\n\nexport function getBlobOrSVGDataUrl(arrayBuffer, url) {\n if (isSVG(url)) {\n // Prepare a properly tagged data URL, and load using normal mechanism\n const textDecoder = new TextDecoder();\n const xmlText = textDecoder.decode(arrayBuffer);\n // TODO Escape in browser to support e.g. Chinese characters\n // if (typeof unescape === 'function' && typeof encodeURLComponent === 'function') {\n // xmlText = unescape(encodeURLComponent(xmlText));\n // }\n // base64 encoding is safer. utf-8 fails in some browsers\n const src = `data:image/svg+xml;base64,${btoa(xmlText)}`;\n return src;\n }\n return getBlob(arrayBuffer, url);\n}\n\nexport function getBlob(arrayBuffer, url) {\n if (isSVG(url)) {\n // https://bugs.chromium.org/p/chromium/issues/detail?id=606319\n // return new Blob([new Uint8Array(arrayBuffer)], {type: 'image/svg+xml'});\n throw new Error('SVG cannot be parsed directly to imagebitmap');\n }\n // TODO - how to determine mime type? Param? Sniff here?\n return new Blob([new Uint8Array(arrayBuffer)]); // MIME type not needed?\n}\n","/* global self, Image */\nimport {getBlobOrSVGDataUrl} from './svg-utils';\n\n// Parses html image from array buffer\nexport default async function parseToImage(arrayBuffer, options, url) {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n\n const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);\n const URL = self.URL || self.webkitURL;\n const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n try {\n return await loadToImage(objectUrl || blobOrDataUrl, options);\n } finally {\n if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n }\n}\n\nexport async function loadToImage(url, options) {\n const image = new Image();\n image.src = url;\n\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = err => reject(new Error(`Could not load image ${url}: ${err}`));\n } catch (error) {\n reject(error);\n }\n });\n}\n","/* global createImageBitmap */\nimport {isSVG, getBlob} from './svg-utils';\nimport parseToImage from './parse-to-image';\n\nconst EMPTY_OBJECT = {};\n\nlet imagebitmapOptionsSupported = true;\n\n/**\n * Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n * ImageBitmaps are supported on worker threads, but not supported on Edge, IE11 and Safari\n * https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n *\n * TODO - createImageBitmap supports source rect (5 param overload), pass through?\n */\nexport default async function parseToImageBitmap(arrayBuffer, options, url) {\n let blob;\n\n // Cannot parse SVG directly to ImageBitmap, parse to Image first\n if (isSVG(url)) {\n // Note: this only works on main thread\n const image = await parseToImage(arrayBuffer, options, url);\n blob = image;\n } else {\n // Create blob from the array buffer\n blob = getBlob(arrayBuffer, url);\n }\n\n const imagebitmapOptions = options && options.imagebitmap;\n\n return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\n\n/**\n * Safely creates an imageBitmap with options\n * *\n * Firefox crashes if imagebitmapOptions is supplied\n * Avoid supplying if not provided or supported, remember if not supported\n */\nasync function safeCreateImageBitmap(blob, imagebitmapOptions = null) {\n if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n imagebitmapOptions = null;\n }\n\n if (imagebitmapOptions) {\n try {\n // @ts-ignore Options\n return await createImageBitmap(blob, imagebitmapOptions);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n imagebitmapOptionsSupported = false;\n }\n }\n\n return await createImageBitmap(blob);\n}\n\nfunction isEmptyObject(object) {\n for (const key in object || EMPTY_OBJECT) {\n return false;\n }\n return true;\n}\n","// Attributions\n// * Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\n// TODO: make these functions work for Node.js buffers?\n// Quarantine references to Buffer to prevent bundler from adding big polyfills\n// import {bufferToArrayBuffer} from '../node/buffer-to-array-buffer';\n// TODO - this should be handled in @loaders.gl/polyfills\n\nconst BIG_ENDIAN = false;\nconst LITTLE_ENDIAN = true;\n\nexport function getBinaryImageMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n return (\n getPngMetadata(dataView) ||\n getJpegMetadata(dataView) ||\n getGifMetadata(dataView) ||\n getBmpMetadata(dataView)\n );\n}\n\n// PNG\n\nfunction getPngMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check file contains the first 4 bytes of the PNG signature.\n const isPng = dataView.byteLength >= 24 && dataView.getUint32(0, BIG_ENDIAN) === 0x89504e47;\n if (!isPng) {\n return null;\n }\n\n // Extract size from a binary PNG file\n return {\n mimeType: 'image/png',\n width: dataView.getUint32(16, BIG_ENDIAN),\n height: dataView.getUint32(20, BIG_ENDIAN)\n };\n}\n\n// GIF\n\n// Extract size from a binary GIF file\n// TODO: GIF is not this simple\nfunction getGifMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check first 4 bytes of the GIF signature (\"GIF8\").\n const isGif = dataView.byteLength >= 10 && dataView.getUint32(0, BIG_ENDIAN) === 0x47494638;\n if (!isGif) {\n return null;\n }\n\n // GIF is little endian.\n return {\n mimeType: 'image/gif',\n width: dataView.getUint16(6, LITTLE_ENDIAN),\n height: dataView.getUint16(8, LITTLE_ENDIAN)\n };\n}\n\n// BMP\n\n// TODO: BMP is not this simple\nexport function getBmpMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check magic number is valid (first 2 characters should be \"BM\").\n // The mandatory bitmap file header is 14 bytes long.\n const isBmp =\n dataView.byteLength >= 14 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0x424d &&\n dataView.getUint32(2, LITTLE_ENDIAN) === dataView.byteLength;\n\n if (!isBmp) {\n return null;\n }\n\n // BMP is little endian.\n return {\n mimeType: 'image/bmp',\n width: dataView.getUint32(18, LITTLE_ENDIAN),\n height: dataView.getUint32(22, LITTLE_ENDIAN)\n };\n}\n\n// JPEG\n\n// Extract width and height from a binary JPEG file\nfunction getJpegMetadata(binaryData) {\n const dataView = toDataView(binaryData);\n // Check file contains the JPEG \"start of image\" (SOI) marker\n // followed by another marker.\n const isJpeg =\n dataView.byteLength >= 3 &&\n dataView.getUint16(0, BIG_ENDIAN) === 0xffd8 &&\n dataView.getUint8(2) === 0xff;\n\n if (!isJpeg) {\n return null;\n }\n\n const {tableMarkers, sofMarkers} = getJpegMarkers();\n\n // Exclude the two byte SOI marker.\n let i = 2;\n while (i + 9 < dataView.byteLength) {\n const marker = dataView.getUint16(i, BIG_ENDIAN);\n\n // The frame that contains the width and height of the JPEG image.\n if (sofMarkers.has(marker)) {\n return {\n mimeType: 'image/jpeg',\n height: dataView.getUint16(i + 5, BIG_ENDIAN), // Number of lines\n width: dataView.getUint16(i + 7, BIG_ENDIAN) // Number of pixels per line\n };\n }\n\n // Miscellaneous tables/data preceding the frame header.\n if (!tableMarkers.has(marker)) {\n return null;\n }\n\n // Length includes size of length parameter but not the two byte header.\n i += 2;\n i += dataView.getUint16(i, BIG_ENDIAN);\n }\n\n return null;\n}\n\nfunction getJpegMarkers() {\n // Tables/misc header markers.\n // DQT, DHT, DAC, DRI, COM, APP_n\n const tableMarkers = new Set([0xffdb, 0xffc4, 0xffcc, 0xffdd, 0xfffe]);\n for (let i = 0xffe0; i < 0xfff0; ++i) {\n tableMarkers.add(i);\n }\n\n // SOF markers and DHP marker.\n // These markers are after tables/misc data.\n const sofMarkers = new Set([\n 0xffc0,\n 0xffc1,\n 0xffc2,\n 0xffc3,\n 0xffc5,\n 0xffc6,\n 0xffc7,\n 0xffc9,\n 0xffca,\n 0xffcb,\n 0xffcd,\n 0xffce,\n 0xffcf,\n 0xffde\n ]);\n\n return {tableMarkers, sofMarkers};\n}\n\n// TODO - move into image module?\nfunction toDataView(data) {\n if (data instanceof DataView) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n return new DataView(data.buffer);\n }\n\n // TODO: make these functions work for Node.js buffers?\n // if (bufferToArrayBuffer) {\n // data = bufferToArrayBuffer(data);\n // }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n }\n throw new Error('toDataView');\n}\n","import {global} from '../utils/globals';\nimport assert from '../utils/assert';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Use polyfills if installed to p[arsed image using get-pixels\nexport default function parseToNodeImage(arrayBuffer, options) {\n const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};\n\n // @ts-ignore\n const {_parseImageNode} = global;\n assert(_parseImageNode); // '@loaders.gl/polyfills not installed'\n\n return _parseImageNode(arrayBuffer, mimeType, options);\n}\n","import assert from '../utils/assert';\nimport {isImageTypeSupported, getDefaultImageType} from '../category-api/image-type';\nimport {getImageData} from '../category-api/parsed-image-api';\nimport parseToImage from './parse-to-image';\nimport parseToImageBitmap from './parse-to-image-bitmap';\nimport parseToNodeImage from './parse-to-node-image';\n\n// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)\n// eslint-disable-next-line complexity\nexport default async function parseImage(arrayBuffer, options, context) {\n options = options || {};\n const imageOptions = options.image || {};\n\n // The user can request a specific output format via `options.image.type`\n const imageType = imageOptions.type || 'auto';\n\n const {url} = context || {};\n\n // Note: For options.image.type === `data`, we may still need to load as `image` or `imagebitmap`\n const loadType = getLoadableImageType(imageType);\n\n let image;\n switch (loadType) {\n case 'imagebitmap':\n image = await parseToImageBitmap(arrayBuffer, options, url);\n break;\n case 'image':\n image = await parseToImage(arrayBuffer, options, url);\n break;\n case 'data':\n // Node.js loads imagedata directly\n image = await parseToNodeImage(arrayBuffer, options);\n break;\n default:\n assert(false);\n }\n\n // Browser: if options.image.type === 'data', we can now extract data from the loaded image\n if (imageType === 'data') {\n image = getImageData(image);\n }\n\n return image;\n}\n\n// Get a loadable image type from image type\nfunction getLoadableImageType(type) {\n switch (type) {\n case 'auto':\n case 'data':\n // Browser: For image data we need still need to load using an image format\n // Node: the default image type is `data`.\n return getDefaultImageType();\n default:\n // Throw an error if not supported\n isImageTypeSupported(type);\n return type;\n }\n}\n","import parseImage from './lib/parsers/parse-image';\nimport {getBinaryImageMetadata} from './lib/category-api/binary-image-api';\n/** @typedef {import('@loaders.gl/loader-utils').LoaderObject} LoaderObject */\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/bmp',\n 'image/vnd.microsoft.icon',\n 'image/svg+xml'\n];\n\n// Loads a platform-specific image type that can be used as input data to WebGL textures\n/** @type {LoaderObject} */\nconst ImageLoader = {\n id: 'image',\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n // TODO: byteOffset, byteLength;\n tests: [arrayBuffer => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n options: {\n image: {\n type: 'auto',\n decode: true // if format is HTML\n }\n // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor\n }\n};\n\nexport default ImageLoader;\n","export function getFirstCharacters(data, length = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nexport function getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength <= byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import {getFirstCharacters} from '../binary-utils/get-first-characters';\n\n// Minimal JSON parser with a meaningful error message\nexport function parseJSON(string) {\n try {\n return JSON.parse(string);\n } catch (_) {\n throw new Error(`Failed to parse JSON from data starting with \"${getFirstCharacters(string)}\"`);\n }\n}\n","import {sliceArrayBuffer} from './array-buffer-utils';\n\nexport function padTo4Bytes(byteLength) {\n return (byteLength + 3) & ~3;\n}\n\nexport function getZeroOffsetArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n return sliceArrayBuffer(arrayBuffer, byteOffset, byteLength);\n}\n\n/* Creates a new Uint8Array based on two different ArrayBuffers\n * @private\n * @param {ArrayBuffers} buffer1 The first buffer.\n * @param {ArrayBuffers} buffer2 The second buffer.\n * @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n */\nexport function copyArrayBuffer(\n targetBuffer,\n sourceBuffer,\n byteOffset,\n byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n/**\n * Copy from source to target at the targetOffset\n *\n * @param {ArrayBuffer|any} source - The data to copy\n * @param {any} target - The destination to copy data into\n * @param {Number} targetOffset - The start offset into target to place the copied data\n *\n * @return {Number} Returns the new offset taking into account proper padding\n */\nexport function copyToArray(source, target, targetOffset) {\n let sourceArray;\n\n if (source instanceof ArrayBuffer) {\n sourceArray = new Uint8Array(source);\n } else {\n // Pack buffer onto the big target array\n //\n // 'source.data.buffer' could be a view onto a larger buffer.\n // We MUST use this constructor to ensure the byteOffset and byteLength is\n // set to correct values from 'source.data' and not the underlying\n // buffer for target.set() to work properly.\n const srcByteOffset = source.byteOffset;\n const srcByteLength = source.byteLength;\n sourceArray = new Uint8Array(source.buffer, srcByteOffset, srcByteLength);\n }\n\n // Pack buffer onto the big target array\n target.set(sourceArray, targetOffset);\n\n return targetOffset + padTo4Bytes(sourceArray.byteLength);\n}\n","// Resolves a relative url against a baseUrl\n// If url is absolute, return it unchanged\nexport function resolveUrl(url, options) {\n // TODO: Use better logic to handle all protocols plus not delay on data\n const absolute = url.startsWith('data:') || url.startsWith('http:') || url.startsWith('https:');\n if (absolute) {\n return url;\n }\n const baseUrl = options.baseUri || options.uri;\n if (!baseUrl) {\n throw new Error(`'baseUri' must be provided to resolve relative url ${url}`);\n }\n return baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1) + url;\n}\n","// TODO - GLTFScenegraph should use these\nimport assert from '../utils/assert';\n\n// accepts buffer view index or buffer view object\n// returns a `Uint8Array`\nexport function getTypedArrayForBufferView(json, buffers, bufferViewIndex) {\n const bufferView = json.bufferViews[bufferViewIndex];\n assert(bufferView);\n\n // Get hold of the arrayBuffer\n const bufferIndex = bufferView.buffer;\n const binChunk = buffers[bufferIndex];\n assert(binChunk);\n\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n}\n\n// accepts accessor index or accessor object\n// returns a `Uint8Array`\nexport function getTypedArrayForImageData(json, buffers, imageIndex) {\n const image = json.images[imageIndex];\n const bufferViewIndex = json.bufferViews[image.bufferView];\n return getTypedArrayForBufferView(json, buffers, bufferViewIndex);\n}\n\n/*\n// accepts accessor index or accessor object\n// returns a typed array with type that matches the types\nexport function getTypedArrayForAccessor(accessor) {\n accessor = this.getAccessor(accessor);\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n}\n*/\n","// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {loadLibrary, global} from '@loaders.gl/loader-utils';\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise =\n loadDecoderPromise ||\n new Promise(resolve => {\n const draco = modules.draco3d.createDecoderModule({\n onModuleLoaded() {\n resolve({draco});\n }\n });\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise = loadDecoderPromise || loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise =\n loadEncoderPromise ||\n new Promise(resolve => {\n const draco = modules.draco3d.createEncoderModule({\n onModuleLoaded() {\n resolve({draco});\n }\n });\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise = loadEncoderPromise || loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary('draco_decoder.js', 'draco', options);\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary('draco_wasm_wrapper.js', 'draco', options),\n await loadLibrary('draco_decoder.wasm', 'draco', options)\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || global.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise(resolve => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: draco => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary('draco_encoder.js', 'draco', options);\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || global.DracoEncoderModule;\n\n return new Promise(resolve => {\n DracoEncoderModule({\n onModuleLoaded: draco => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n","/* global fetch, document */\nimport {global, isBrowser, isWorker} from '../env-utils/globals';\nimport * as node from '../node/require-utils.node';\nimport assert from '../env-utils/assert';\n\n// TODO - unpkg.com doesn't seem to have a `latest` specifier for alpha releases...\nconst LATEST = 'beta';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : LATEST;\n\nconst loadLibraryPromises = {}; // promises\n\n// Dynamically loads a library (\"module\")\nexport async function loadLibrary(libraryUrl, moduleName = null, options = {}) {\n if (moduleName) {\n libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);\n }\n\n // Ensure libraries are only loaded once\n loadLibraryPromises[libraryUrl] =\n loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);\n return await loadLibraryPromises[libraryUrl];\n}\n\n// TODO - sort out how to resolve paths for main/worker and dev/prod\nexport function getLibraryUrl(library, moduleName, options) {\n // Allow application to import and supply libraries through `options.modules`\n const modules = options.modules || {};\n if (modules[library]) {\n return modules[library];\n }\n\n // Load from local files, not from CDN scripts in Node.js\n // TODO - needs to locate the modules directory when installed!\n if (!isBrowser) {\n return `modules/${moduleName}/dist/libs/${library}`;\n }\n\n // In browser, load from external scripts\n if (options.CDN) {\n assert(options.CDN.startsWith('http'));\n return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${library}`;\n }\n\n // TODO - loading inside workers requires paths relative to worker script location...\n if (isWorker) {\n return `../src/libs/${library}`;\n }\n\n return `modules/${moduleName}/src/libs/${library}`;\n}\n\nasync function loadLibraryFromFile(libraryUrl) {\n if (libraryUrl.endsWith('wasm')) {\n const response = await fetch(libraryUrl);\n return await response.arrayBuffer();\n }\n\n if (!isBrowser) {\n return node.requireFromFile && node.requireFromFile(libraryUrl);\n }\n if (isWorker) {\n /* global importScripts */\n return importScripts(libraryUrl);\n }\n // TODO - fix - should be more secure than string parsing since observes CORS\n // if (isBrowser) {\n // return await loadScriptFromFile(libraryUrl);\n // }\n\n const response = await fetch(libraryUrl);\n const scriptSource = await response.text();\n return loadLibraryFromString(scriptSource, libraryUrl);\n}\n\n/*\nasync function loadScriptFromFile(libraryUrl) {\n const script = document.createElement('script');\n script.src = libraryUrl;\n return await new Promise((resolve, reject) => {\n script.onload = data => {\n resolve(data);\n };\n script.onerror = reject;\n });\n}\n*/\n\n// TODO - Needs security audit...\n// - Raw eval call\n// - Potentially bypasses CORS\n// Upside is that this separates fetching and parsing\n// we could create a`LibraryLoader` or`ModuleLoader`\nfunction loadLibraryFromString(scriptSource, id) {\n if (!isBrowser) {\n return node.requireFromString && node.requireFromString(scriptSource, id);\n }\n\n if (isWorker) {\n // Use lvalue trick to make eval run in global scope\n eval.call(global, scriptSource); // eslint-disable-line no-eval\n // https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript\n // http://perfectionkills.com/global-eval-what-are-the-options/\n return null;\n }\n\n const script = document.createElement('script');\n script.id = id;\n // most browsers like a separate text node but some throw an error. The second method covers those.\n try {\n script.appendChild(document.createTextNode(scriptSource));\n } catch (e) {\n script.text = scriptSource;\n }\n document.body.appendChild(script);\n return null;\n}\n\n// TODO - technique for module injection into worker, from THREE.DracoLoader...\n/*\nfunction combineWorkerWithLibrary(worker, jsContent) {\n var fn = wWorker.toString();\n var body = [\n '// injected',\n jsContent,\n '',\n '// worker',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))\n ].join('\\n');\n this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n}\n*/\n","export function getMeshSize(attributes) {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes) {\n if (!attributes || !attributes.POSITION) {\n return null;\n }\n\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n\n const positions = attributes.POSITION.value;\n const len = positions && positions.length;\n\n if (!len) {\n return null;\n }\n\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [[minX, minY, minZ], [maxX, maxY, maxZ]];\n}\n","// This code is inspired by example code in the DRACO repository\n/** @typedef {import('../types/draco-types')} Draco3D */\n/** @typedef {import('../types/draco-types').Decoder} Decoder */\nimport {getMeshBoundingBox} from '@loaders.gl/loader-utils';\n\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nexport default class DracoParser {\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco) {\n /** @type {Draco3D} */\n this.draco = draco;\n this.drawMode = 'TRIANGLE';\n this.metadataQuerier = {};\n }\n\n destroy() {}\n\n destroyGeometry(dracoGeometry) {\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry.dracoGeometry);\n }\n }\n\n // NOTE: caller must call `destroyGeometry` on the return value after using it\n parseSync(arrayBuffer, options = {}) {\n this.metadataQuerier = new this.draco.MetadataQuerier();\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n const decoder = new this.draco.Decoder();\n\n const data = {};\n let dracoStatus;\n let dracoGeometry;\n let header;\n\n try {\n const geometryType = decoder.GetEncodedGeometryType(buffer);\n switch (geometryType) {\n case this.draco.TRIANGULAR_MESH:\n dracoGeometry = new this.draco.Mesh();\n dracoStatus = decoder.DecodeBufferToMesh(buffer, dracoGeometry);\n header = {\n type: GEOMETRY_TYPE.TRIANGULAR_MESH,\n faceCount: dracoGeometry.num_faces(),\n attributeCount: dracoGeometry.num_attributes(),\n vertexCount: dracoGeometry.num_points()\n };\n break;\n\n case this.draco.POINT_CLOUD:\n dracoGeometry = new this.draco.PointCloud();\n dracoStatus = decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n header = {\n type: GEOMETRY_TYPE.POINT_CLOUD,\n attributeCount: dracoGeometry.num_attributes(),\n vertexCount: dracoGeometry.num_points()\n };\n break;\n\n default:\n throw new Error('Unknown DRACO geometry type.');\n }\n\n // @ts-ignore .ptr\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n throw new Error(message);\n }\n\n data.loaderData = {header};\n\n this._extractDRACOGeometry(decoder, dracoGeometry, geometryType, data, options);\n const metadata = this._getGeometryMetadata(decoder, dracoGeometry);\n\n data.header = {\n vertexCount: header.vertexCount,\n boundingBox: getMeshBoundingBox(data.attributes),\n metadata\n };\n } finally {\n this.draco.destroy(decoder);\n this.draco.destroy(buffer);\n this.draco.destroy(dracoGeometry);\n this.draco.destroy(this.metadataQuerier);\n }\n\n return data;\n }\n\n /**\n * @param {Decoder} decoder\n * @param {*} dracoGeometry\n * @param {*} geometryType\n * @param {*} geometry\n * @param {object} options\n */\n _extractDRACOGeometry(decoder, dracoGeometry, geometryType, geometry, options) {\n const attributes = this._getAttributes(decoder, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO decompressor: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (geometryType === this.draco.TRIANGULAR_MESH) {\n attributes.indices =\n this.drawMode === 'TRIANGLE_STRIP'\n ? /**\n *\n * @param {*} decoder\n * @param {*} dracoGeometry\n */\n this._getMeshStripIndices(decoder, dracoGeometry)\n : this._getMeshFaceIndices(decoder, dracoGeometry);\n geometry.mode =\n this.drawMode === 'TRIANGLE_STRIP'\n ? 5 // GL.TRIANGLE_STRIP\n : 4; // GL.TRIANGLES\n } else {\n geometry.mode = 0; // GL.POINTS\n }\n\n if (attributes.indices) {\n geometry.indices = {value: attributes.indices, size: 1};\n delete attributes.indices;\n }\n geometry.attributes = attributes;\n\n return geometry;\n }\n\n getPositionAttributeMetadata(positionAttribute) {\n this.metadata = this.metadata || {};\n this.metadata.attributes = this.metadata.attributes || {};\n\n const posTransform = new this.draco.AttributeQuantizationTransform();\n if (posTransform.InitFromAttribute(positionAttribute)) {\n // Quantized attribute. Store the quantization parameters into the attribute\n this.metadata.attributes.position.isQuantized = true;\n this.metadata.attributes.position.maxRange = posTransform.range();\n this.metadata.attributes.position.numQuantizationBits = posTransform.quantization_bits();\n this.metadata.attributes.position.minValues = new Float32Array(3);\n for (let i = 0; i < 3; ++i) {\n this.metadata.attributes.position.minValues[i] = posTransform.min_value(i);\n }\n }\n this.draco.destroy(posTransform);\n }\n\n _getAttributes(decoder, dracoGeometry, options) {\n const attributes = {};\n const numPoints = dracoGeometry.num_points();\n // const attributeUniqueIdMap = {};\n\n // Note: Draco docs do not seem clear on `GetAttribute` accepting a zero-based index,\n // but it seems to work this way\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeMetadata = this._getAttributeMetadata(decoder, dracoGeometry, attributeId);\n const attributeData = {\n uniqueId: dracoAttribute.unique_id(),\n attributeType: dracoAttribute.attribute_type(),\n dataType: DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[dracoAttribute.data_type()],\n size: dracoAttribute.size(),\n numComponents: dracoAttribute.num_components(),\n byteOffset: dracoAttribute.byte_offset(),\n byteStride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n metadata: attributeMetadata\n };\n\n // DRACO does not store attribute names - We need to deduce an attribute name\n const attributeName = this._deduceAttributeName(attributeData, options);\n\n const {typedArray} = this._getAttributeTypedArray(\n decoder,\n dracoGeometry,\n dracoAttribute,\n attributeName\n );\n attributes[attributeName] = {\n value: typedArray,\n size: typedArray.length / numPoints,\n metadata: attributeMetadata\n };\n }\n\n return attributes;\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param {Decoder} decoder\n * @param {*} dracoGeometry\n */\n _getMeshFaceIndices(decoder, dracoGeometry) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n\n const numIndices = numFaces * 3;\n const indices = new Uint32Array(numIndices);\n const dracoArray = new this.draco.DracoInt32Array();\n for (let i = 0; i < numFaces; ++i) {\n decoder.GetFaceFromMesh(dracoGeometry, i, dracoArray);\n const index = i * 3;\n indices[index] = dracoArray.GetValue(0);\n indices[index + 1] = dracoArray.GetValue(1);\n indices[index + 2] = dracoArray.GetValue(2);\n }\n\n this.draco.destroy(dracoArray);\n return indices;\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param {Decoder} decoder\n * @param {*} dracoGeometry\n */\n _getMeshStripIndices(decoder, dracoGeometry) {\n const dracoArray = new this.draco.DracoInt32Array();\n /* const numStrips = */ decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n const indices = new Uint32Array(dracoArray.size());\n for (let i = 0; i < dracoArray.size(); ++i) {\n indices[i] = dracoArray.GetValue(i);\n }\n this.draco.destroy(dracoArray);\n return indices;\n }\n\n /**\n *\n * @param {Decoder} decoder\n * @param {*} dracoGeometry\n * @param {*} dracoAttribute\n * @param {*} attributeName\n */\n _getAttributeTypedArray(decoder, dracoGeometry, dracoAttribute, attributeName) {\n if (dracoAttribute.ptr === 0) {\n const message = `DRACO decode bad attribute ${attributeName}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const attributeType = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[dracoAttribute.data_type()];\n const numComponents = dracoAttribute.num_components();\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n let dracoArray;\n let typedArray;\n\n switch (attributeType) {\n case Float32Array:\n dracoArray = new this.draco.DracoFloat32Array();\n decoder.GetAttributeFloatForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Float32Array(numValues);\n break;\n\n case Int8Array:\n dracoArray = new this.draco.DracoInt8Array();\n decoder.GetAttributeInt8ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Int8Array(numValues);\n break;\n\n case Int16Array:\n dracoArray = new this.draco.DracoInt16Array();\n decoder.GetAttributeInt16ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Int16Array(numValues);\n break;\n\n case Int32Array:\n dracoArray = new this.draco.DracoInt32Array();\n decoder.GetAttributeInt32ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Int32Array(numValues);\n break;\n\n case Uint8Array:\n dracoArray = new this.draco.DracoUInt8Array();\n decoder.GetAttributeUInt8ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Uint8Array(numValues);\n break;\n\n case Uint16Array:\n dracoArray = new this.draco.DracoUInt16Array();\n decoder.GetAttributeUInt16ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Uint16Array(numValues);\n break;\n\n case Uint32Array:\n dracoArray = new this.draco.DracoUInt32Array();\n decoder.GetAttributeUInt32ForAllPoints(dracoGeometry, dracoAttribute, dracoArray);\n typedArray = new Uint32Array(numValues);\n break;\n\n default:\n const errorMsg = 'DRACO decoder: unexpected attribute type.';\n // console.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n // Copy data from decoder.\n for (let i = 0; i < numValues; i++) {\n typedArray[i] = dracoArray.GetValue(i);\n }\n\n this.draco.destroy(dracoArray);\n\n return {typedArray, components: numComponents};\n }\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param {object} attributeData\n */\n _deduceAttributeName(attributeData, options) {\n const {extraAttributes = {}} = options;\n if (extraAttributes && typeof extraAttributes === 'object') {\n for (const [attributeName, attributeUniqueId] of Object.entries(extraAttributes)) {\n if (attributeUniqueId === attributeData.uniqueId) {\n return attributeName;\n }\n }\n }\n\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeData.attributeType === attributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n if (attributeData.metadata) {\n const entryName = options.attributeNameEntry || 'name';\n if (attributeData.metadata[entryName]) {\n return attributeData.metadata[entryName].string;\n }\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${attributeData.uniqueId}`;\n }\n\n _getGeometryMetadata(decoder, dracoGeometry) {\n const dracoMetadata = decoder.GetMetadata(dracoGeometry);\n return this._queryDracoMetadata(dracoMetadata);\n }\n\n _getAttributeMetadata(decoder, dracoGeometry, attributeId) {\n const dracoMetadata = decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._queryDracoMetadata(dracoMetadata);\n }\n\n // The not so wonderful world of undocumented Draco APIs :(\n _queryDracoMetadata(dracoMetadata) {\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray: this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName)\n };\n }\n return result;\n }\n\n // DEPRECATED\n\n decode(arrayBuffer, options) {\n return this.parseSync(arrayBuffer, options);\n }\n}\n","/** @typedef {import('@loaders.gl/loader-utils').LoaderObject} LoaderObject */\n/** @typedef {import('@loaders.gl/loader-utils').WorkerLoaderObject} WorkerLoaderObject */\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport DracoParser from './lib/draco-parser';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** @type {WorkerLoaderObject} */\nexport const DracoWorkerLoader = {\n id: 'draco',\n name: 'Draco',\n version: VERSION,\n extensions: ['drc'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['DRACO'],\n options: {\n draco: {\n decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js', // 'js' for IE11\n libraryPath: `libs/`,\n workerUrl: `https://unpkg.com/@loaders.gl/draco@${VERSION}/dist/draco-loader.worker.js`,\n localWorkerUrl: `modules/draco/dist/draco-loader.worker.dev.js`,\n extraAttributes: {}\n }\n }\n};\n\n/** @type {LoaderObject} */\nexport const DracoLoader = {\n ...DracoWorkerLoader,\n parse\n};\n\nasync function parse(arrayBuffer, options, context, loader) {\n const {draco} = await loadDracoDecoderModule(options);\n const dracoParser = new DracoParser(draco);\n try {\n // TODO passing in options causes CI failures...\n // @ts-ignore\n return dracoParser.parseSync(arrayBuffer, {\n extraAttributes: (options.draco && options.draco.extraAttributes) || null,\n ...(options.parseOptions || {})\n });\n } finally {\n dracoParser.destroy();\n }\n}\n","import assert from '../utils/assert';\n\nconst TYPES = ['SCALAR', 'VEC2', 'VEC3', 'VEC4'];\n\n// @ts-ignore\nconst ARRAY_TO_COMPONENT_TYPE = new Map([\n [Int8Array, 5120],\n [Uint8Array, 5121],\n [Int16Array, 5122],\n [Uint16Array, 5123],\n [Uint32Array, 5125],\n [Float32Array, 5126]\n]);\n\nexport const ATTRIBUTE_TYPE_TO_COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nexport const ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE = {\n 5120: 1,\n 5121: 1,\n 5122: 2,\n 5123: 2,\n 5125: 4,\n 5126: 4\n};\n\nexport const ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nexport function getAccessorTypeFromSize(size) {\n const type = TYPES[size - 1];\n return type || TYPES[0];\n}\n\nexport function getComponentTypeFromArray(typedArray) {\n const componentType = ARRAY_TO_COMPONENT_TYPE.get(typedArray.constructor);\n if (!componentType) {\n throw new Error('Illegal typed array');\n }\n return componentType;\n}\n\nexport function getAccessorArrayTypeAndLength(accessor, bufferView) {\n const ArrayType = ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY[accessor.componentType];\n const components = ATTRIBUTE_TYPE_TO_COMPONENTS[accessor.type];\n const bytesPerComponent = ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[accessor.componentType];\n const length = accessor.count * components;\n const byteLength = accessor.count * components * bytesPerComponent;\n assert(byteLength >= 0 && byteLength <= bufferView.byteLength);\n return {ArrayType, length, byteLength};\n}\n","import {getBinaryImageMIMEType} from '@loaders.gl/images';\nimport {padTo4Bytes, copyToArray} from '@loaders.gl/loader-utils';\nimport assert from './utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from './gltf-utils/gltf-utils';\n\n// Class for structured access to GLTF data\nexport default class GLTFScenegraph {\n // eslint-disable-next-line consistent-return\n constructor(gltf) {\n // Signature: new GLTFScenegraph(data : GLTFScenegraph)\n // Allow creation of a `GLTFScenegraph` object from gltf data without checking if already a `GLTFScenegraph`\n if (gltf instanceof GLTFScenegraph) {\n return gltf;\n }\n\n if (!gltf) {\n gltf = {\n json: {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n },\n buffers: []\n };\n }\n\n this.byteLength = 0;\n // TODO - this is too sloppy, define inputs more clearly\n this.gltf = gltf;\n assert(this.gltf.json);\n }\n\n // Accessors\n\n get json() {\n return this.gltf.json;\n }\n\n getApplicationData(key) {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key) {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension(extensionName) {\n const isExtension = this.getUsedExtensions().find(name => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension(extensionName) {\n const isRequired = this.getRequiredExtensions().find(name => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions() {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions() {\n return this.json.extensionsUsed || [];\n }\n\n getObjectExtension(object, extensionName) {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index) {\n return this.getObject('scenes', index);\n }\n\n getNode(index) {\n return this.getObject('nodes', index);\n }\n\n getSkin(index) {\n return this.getObject('skins', index);\n }\n\n getMesh(index) {\n return this.getObject('meshes', index);\n }\n\n getMaterial(index) {\n return this.getObject('materials', index);\n }\n\n getAccessor(index) {\n return this.getObject('accessors', index);\n }\n\n getCamera(index) {\n return null; // TODO: fix this\n }\n\n getTexture(index) {\n return this.getObject('textures', index);\n }\n\n getSampler(index) {\n return this.getObject('samplers', index);\n }\n\n getImage(index) {\n return this.getObject('images', index);\n }\n\n getBufferView(index) {\n return this.getObject('bufferViews', index);\n }\n\n getBuffer(index) {\n return this.getObject('buffers', index);\n }\n\n getObject(array, index) {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && this.json[array][index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n // accepts buffer view index or buffer view object\n // returns a `Uint8Array`\n getTypedArrayForBufferView(bufferView) {\n bufferView = this.getBufferView(bufferView);\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // accepts accessor index or accessor object\n // returns a typed array with type that matches the types\n getTypedArrayForAccessor(accessor) {\n accessor = this.getAccessor(accessor);\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n // accepts accessor index or accessor object\n // returns a `Uint8Array`\n getTypedArrayForImageData(image) {\n image = this.getAccessor(image);\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n // Add an extra application-defined key to the top-level data structure\n addApplicationData(key, data) {\n this.json[key] = data;\n return this;\n }\n\n // `extras` - Standard GLTF field for storing application specific data\n addExtraData(key, data) {\n this.json.extras = this.json.extras || {};\n this.json.extras[key] = data;\n return this;\n }\n\n addObjectExtension(object, extensionName, data) {\n assert(data);\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object, extensionName, data) {\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object, extensionName) {\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n // Add to standard GLTF top level extension object, mark as used\n addExtension(extensionName, extensionData = {}) {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n this.json.extensions[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n // Standard GLTF top level extension object, mark as used and required\n addRequiredExtension(extensionName, extensionData = {}) {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n // Add extensionName to list of used extensions\n registerUsedExtension(extensionName) {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find(ext => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n // Add extensionName to list of required extensions\n registerRequiredExtension(extensionName) {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find(ext => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n // Removes an extension from the top-level list\n removeExtension(extensionName) {\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n }\n\n addMesh(attributes, indices, mode = 4) {\n // @ts-ignore\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n indices,\n mode\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes) {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n // Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n // Buffer will be copied into BIN chunk during \"pack\"\n // Currently encodes as glTF image\n addImage(imageData, mimeType) {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n mimeType = mimeType || getBinaryImageMIMEType(imageData);\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n // Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n addBufferView(buffer) {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padTo4Bytes(byteLength);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n // Adds an accessor to a bufferView\n addAccessor(bufferViewIndex, accessor) {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n type: getAccessorTypeFromSize(accessor.size),\n componentType: accessor.componentType,\n count: accessor.count\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n // Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n // Buffer will be copied into BIN chunk during \"pack\"\n // Currently encodes buffers as glTF accessors, but this could be optimized\n addBinaryBuffer(sourceBuffer, accessor = {size: 3}) {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n\n const accessorDefaults = {\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n count: Math.round(sourceBuffer.length / accessor.size)\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n // Pack the binary chunk\n createBinaryChunk() {\n // Already packed\n if (this.arrayBuffer) {\n return;\n }\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (let i = 0; i < this.sourceBuffers.length; i++) {\n const sourceBuffer = this.sourceBuffers[i];\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n this.json.buffers[0].byteLength = totalByteLength;\n\n // Save generated arrayBuffer\n this.arrayBuffer = arrayBuffer;\n\n // Clear out sourceBuffers\n this.sourceBuffers = [];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n}\n","import {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Supported image types are PNG, JPEG, GIF and BMP.\nexport function isBinaryImage(arrayBuffer, mimeType) {\n const metadata = getBinaryImageMetadata(arrayBuffer);\n if (mimeType) {\n return Boolean(metadata && metadata.mimeType === mimeType);\n }\n // return true if any known type\n return Boolean(metadata);\n}\n\n// Sniffs the contents of a file to attempt to deduce the image type\nexport function getBinaryImageMIMEType(arrayBuffer) {\n const metadata = getBinaryImageMetadata(arrayBuffer);\n return metadata ? metadata.mimeType : null;\n}\n\nexport function getBinaryImageSize(arrayBuffer, mimeType = null) {\n const metadata = getBinaryImageMetadata(arrayBuffer);\n\n if (metadata) {\n return {\n width: metadata.width,\n height: metadata.height\n };\n }\n\n mimeType = mimeType || 'unknown';\n throw new Error(`invalid image data for type: ${mimeType}`);\n}\n","// GLTF 1.0 extensions\nexport const KHR_BINARY_GLTF = 'KHR_binary_glTF';\n\n// GLTF 2.0 extensions\nexport const KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\nexport const KHR_LIGHTS_PUNCTUAL = 'KHR_lights_punctual';\nexport const KHR_MATERIALS_UNLIT = 'KHR_materials_unlit';\nexport const KHR_TECHNIQUES_WEBGL = 'KHR_techniques_webgl';\n\n// Ideally we should just use KHR_draco_mesh_compression, but it does not support point clouds\nexport const UBER_POINT_CLOUD_EXTENSION = 'UBER_draco_point_cloud_compression';\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\n// ENUM LOOKUP\n\nexport function getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nexport function getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nexport function getGLEnumFromSamplerParameter(parameter) {\n const GL_TEXTURE_MAG_FILTER = 0x2800;\n const GL_TEXTURE_MIN_FILTER = 0x2801;\n const GL_TEXTURE_WRAP_S = 0x2802;\n const GL_TEXTURE_WRAP_T = 0x2803;\n\n const PARAMETER_MAP = {\n magFilter: GL_TEXTURE_MAG_FILTER,\n minFilter: GL_TEXTURE_MIN_FILTER,\n wrapS: GL_TEXTURE_WRAP_S,\n wrapT: GL_TEXTURE_WRAP_T\n };\n\n return PARAMETER_MAP[parameter];\n}\n","// TODO - remove\nimport {getAccessorTypeFromSize, getComponentTypeFromArray} from './gltf-utils';\n\n// Returns a fresh attributes object with glTF-standardized attributes names\n// Attributes that cannot be identified will not be included\n// Removes `indices` if present, as it should be stored separately from the attributes\nexport function getGLTFAccessors(attributes, jsonAccessors = {}) {\n const accessors = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n if (name !== 'indices') {\n const glTFAccessor = getGLTFAccessor(attribute, jsonAccessors[name] || {});\n accessors[name] = glTFAccessor;\n }\n }\n return accessors;\n}\n\n// Fix up a single accessor.\n// Input: typed array or a partial accessor object\n// Return: accessor object\nexport function getGLTFAccessor(attribute, jsonAccessor = {}) {\n const {buffer, size, count} = getAccessorData(attribute);\n\n const glTFAccessor = {\n ...jsonAccessor,\n // TODO: Deprecate `value` in favor of bufferView?\n value: buffer,\n size, // Decoded `type` (e.g. SCALAR)\n\n // glTF Accessor values\n // TODO: Instead of a bufferView index we could have an actual buffer (typed array)\n bufferView: null,\n byteOffset: 0,\n count,\n type: getAccessorTypeFromSize(size),\n componentType: getComponentTypeFromArray(buffer)\n };\n\n return glTFAccessor;\n}\n\nexport function getGLTFAttribute(data, gltfAttributeName) {\n return data.attributes[data.glTFAttributeMap[gltfAttributeName]];\n}\n\nfunction getAccessorData(attribute) {\n let buffer = attribute;\n let size = 1;\n let count = 0;\n\n if (attribute && attribute.value) {\n buffer = attribute.value;\n size = attribute.size || 1;\n }\n\n if (buffer) {\n if (!ArrayBuffer.isView(buffer)) {\n buffer = toTypedArray(buffer, Float32Array);\n }\n count = buffer.length / size;\n }\n\n return {buffer, size, count};\n}\n\n// Convert non-typed arrays to arrays of specified format\nfunction toTypedArray(array, ArrayType, convertTypedArrays = false) {\n if (!array) {\n return null;\n }\n if (Array.isArray(array)) {\n return new ArrayType(array);\n }\n if (convertTypedArrays && !(array instanceof ArrayType)) {\n return new ArrayType(array);\n }\n return array;\n}\n","// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\n\n/* eslint-disable camelcase */\n\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {getZeroOffsetArrayBuffer} from '@loaders.gl/loader-utils';\nimport GLTFScenegraph from '../gltf-scenegraph';\nimport {KHR_DRACO_MESH_COMPRESSION} from '../gltf-constants';\nimport {getGLTFAccessors, getGLTFAccessor} from '../gltf-utils/gltf-attribute-utils';\n\n// Note: We have a \"soft dependency\" on Draco to avoid bundling it when not needed\nexport async function decode(gltfData, options, context) {\n if (!options.gltf.decompressMeshes) {\n return;\n }\n\n const scenegraph = new GLTFScenegraph(gltfData);\n const promises = [];\n for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n promises.push(decompressPrimitive(primitive, scenegraph, options, context));\n }\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extensions\n scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\n\nexport function encode(gltfData, options = {}) {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n for (const mesh of scenegraph.json.meshes || []) {\n // eslint-disable-next-line camelcase\n compressMesh(mesh, options);\n // NOTE: Only add the extension if something was actually compressed\n scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);\n }\n}\n\n// DECODE\n\n// Unpacks one mesh primitive and removes the extension from the primitive\n// DracoDecoder needs to be imported and registered by app\n// Returns: Promise that resolves when all pending draco decoder jobs for this mesh complete\n\n// TODO - Implement fallback behavior per KHR_DRACO_MESH_COMPRESSION spec\n\nasync function decompressPrimitive(primitive, scenegraph, options, context) {\n const compressedPrimitive = scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);\n\n const buffer = scenegraph.getTypedArrayForBufferView(compressedPrimitive.bufferView);\n // TODO - parse does not yet deal well with byte offsets embedded in typed arrays. Copy buffer\n // TODO - remove when `parse` is fixed to handle `byteOffset`s\n const bufferCopy = getZeroOffsetArrayBuffer(buffer.buffer, buffer.byteOffset); // , buffer.byteLength);\n\n // this will generate an exception if DracoLoader is not installed\n const {parse} = context;\n const dracoOptions = {...options};\n // The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n const decodedData = await parse(bufferCopy, DracoLoader, dracoOptions, context);\n\n const originalAccessors = {};\n for (const [name, index] of [\n ...Object.entries(primitive.attributes),\n ['indices', primitive.indices]\n ]) {\n originalAccessors[name] = scenegraph.getAccessor(index);\n }\n\n primitive.attributes = getGLTFAccessors(decodedData.attributes, originalAccessors);\n\n if (decodedData.indices) {\n primitive.indices = getGLTFAccessor(decodedData.indices, originalAccessors.indices || {});\n }\n\n // Extension has been processed, delete it\n // delete primitive.extensions[KHR_DRACO_MESH_COMPRESSION];\n\n checkPrimitive(primitive);\n}\n\n// ENCODE\n\n// eslint-disable-next-line max-len\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\nfunction compressMesh(attributes, indices, mode = 4, options, context) {\n if (!options.DracoWriter || !options.DracoLoader) {\n throw new Error('DracoWriter/DracoLoader not available');\n }\n\n // TODO - use DracoWriter using encode w/ registered DracoWriter...\n const compressedData = options.DracoWriter.encodeSync({attributes});\n\n // Draco compression may change the order and number of vertices in a mesh.\n // To satisfy the requirement that accessors properties be correct for both\n // compressed and uncompressed data, generators should create uncompressed\n // attributes and indices using data that has been decompressed from the Draco buffer,\n // rather than the original source data.\n const {parseSync} = context;\n const decodedData = parseSync({attributes});\n const fauxAccessors = options._addFauxAttributes(decodedData.attributes);\n\n const bufferViewIndex = options.addBufferView(compressedData);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: fauxAccessors, // TODO - verify with spec\n mode, // GL.POINTS\n extensions: {\n [KHR_DRACO_MESH_COMPRESSION]: {\n bufferView: bufferViewIndex,\n attributes: fauxAccessors // TODO - verify with spec\n }\n }\n }\n ]\n };\n\n return glTFMesh;\n}\n\n// UTILS\n\nfunction checkPrimitive(primitive) {\n if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {\n throw new Error('Empty glTF primitive detected: Draco decompression failure?');\n }\n}\n\nfunction* makeMeshPrimitiveIterator(scenegraph) {\n for (const mesh of scenegraph.json.meshes || []) {\n for (const primitive of mesh.primitives) {\n yield primitive;\n }\n }\n}\n","// GLTF EXTENSION: KHR_lights_punctual\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n\nimport assert from '../utils/assert';\nimport GLTFScenegraph from '../gltf-scenegraph';\nimport {KHR_LIGHTS_PUNCTUAL} from '../gltf-constants';\n\nexport function decode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Move the light array out of the extension and remove the extension\n const extension = gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);\n if (extension) {\n // @ts-ignore\n gltfScenegraph.json.lights = extension.lights;\n gltfScenegraph.removeExtension(KHR_LIGHTS_PUNCTUAL);\n }\n\n // Any nodes that have the extension, add lights field pointing to light object\n // and remove the extension\n for (const node of json.nodes || []) {\n const nodeExtension = gltfScenegraph.getObjectExtension(node, KHR_LIGHTS_PUNCTUAL);\n if (nodeExtension) {\n // @ts-ignore\n node.light = nodeExtension.light;\n }\n gltfScenegraph.removeObjectExtension(node, KHR_LIGHTS_PUNCTUAL);\n }\n}\n\n// Move the light ar ray out of the extension and remove the extension\nexport function encode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n if (json.lights) {\n const extension = gltfScenegraph.addExtension(KHR_LIGHTS_PUNCTUAL);\n // @ts-ignore\n assert(!extension.lights);\n // @ts-ignore\n extension.lights = json.lights;\n delete json.lights;\n }\n\n // Any nodes that have lights field pointing to light object\n // add the extension\n if (gltfScenegraph.json.lights) {\n for (const light of gltfScenegraph.json.lights) {\n const node = light.node;\n gltfScenegraph.addObjectExtension(node, KHR_LIGHTS_PUNCTUAL, light);\n }\n delete gltfScenegraph.json.lights;\n }\n}\n","// GLTF EXTENSION: KHR_materials_unlit\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n\nimport GLTFScenegraph from '../gltf-scenegraph';\nimport {KHR_MATERIALS_UNLIT} from '../gltf-constants';\n\nexport function decode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Remove the top-level extension\n gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);\n\n // Any nodes that have the extension, add lights field pointing to light object\n // and remove the extension\n for (const material of json.materials || []) {\n const extension = material.extensions && material.extensions.KHR_materials_unlit;\n if (extension) {\n material.unlit = true;\n }\n gltfScenegraph.removeObjectExtension(material, KHR_MATERIALS_UNLIT);\n }\n}\n\nexport function encode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Any nodes that have lights field pointing to light object\n // add the extension\n // @ts-ignore\n if (gltfScenegraph.materials) {\n for (const material of json.materials) {\n if (material.unlit) {\n delete material.unlit;\n gltfScenegraph.addObjectExtension(material, KHR_MATERIALS_UNLIT, {});\n gltfScenegraph.addExtension(KHR_MATERIALS_UNLIT);\n }\n }\n }\n}\n","// GLTF EXTENSION: KHR_techniques_webgl\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_techniques_webgl\n/* global TextDecoder */\nimport GLTFScenegraph from '../gltf-scenegraph';\nimport {KHR_TECHNIQUES_WEBGL} from '../gltf-constants';\n\nexport function decode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n const extension = gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);\n if (extension) {\n const techniques = resolveTechniques(extension, gltfScenegraph);\n\n for (const material of json.materials || []) {\n const materialExtension = gltfScenegraph.getObjectExtension(material, KHR_TECHNIQUES_WEBGL);\n if (materialExtension) {\n material.technique = Object.assign(\n {},\n materialExtension,\n // @ts-ignore\n techniques[materialExtension.technique]\n );\n material.technique.values = resolveValues(material.technique, gltfScenegraph);\n }\n gltfScenegraph.removeObjectExtension(material, KHR_TECHNIQUES_WEBGL);\n }\n\n gltfScenegraph.removeExtension(KHR_TECHNIQUES_WEBGL);\n }\n}\n\nexport function encode(gltfData, options) {\n // TODO\n}\n\nfunction resolveTechniques({programs = [], shaders = [], techniques = []}, gltfScenegraph) {\n const textDecoder = new TextDecoder();\n\n shaders.forEach(shader => {\n if (Number.isFinite(shader.bufferView)) {\n shader.code = textDecoder.decode(\n gltfScenegraph.getTypedArrayForBufferView(shader.bufferView)\n );\n } else {\n // TODO: handle URI shader\n throw new Error('KHR_techniques_webgl: no shader code');\n }\n });\n\n programs.forEach(program => {\n program.fragmentShader = shaders[program.fragmentShader];\n program.vertexShader = shaders[program.vertexShader];\n });\n\n techniques.forEach(technique => {\n technique.program = programs[technique.program];\n });\n\n return techniques;\n}\n\nfunction resolveValues(technique, gltfScenegraph) {\n const values = Object.assign({}, technique.values);\n\n // merge values from uniforms\n Object.keys(technique.uniforms || {}).forEach(uniform => {\n if (technique.uniforms[uniform].value && !(uniform in values)) {\n values[uniform] = technique.uniforms[uniform].value;\n }\n });\n\n // resolve textures\n Object.keys(values).forEach(uniform => {\n if (typeof values[uniform] === 'object' && values[uniform].index !== undefined) {\n // Assume this is a texture\n // TODO: find if there are any other types that can be referenced\n values[uniform].texture = gltfScenegraph.getTexture(values[uniform].index);\n }\n });\n\n return values;\n}\n","/* eslint-disable camelcase */\n\n// GLTF 1.0 extensions (read only)\n// Note: KHR_binary_gltf needs to be processed before other loading starts\n// import * as KHR_binary_gltf from './KHR_draco_mesh_compression';\n\n// GLTF 2.0 extensions (read/write)\nimport * as KHR_draco_mesh_compression from './KHR_draco_mesh_compression';\nimport * as KHR_lights_punctual from './KHR_lights_punctual';\nimport * as KHR_materials_unlit from './KHR_materials_unlit';\nimport * as KHR_techniques_webgl from './KHR_techniques_webgl';\n\n// other extensions\n// import UBER_POINT_CLOUD_COMPRESSION from './KHR_draco_mesh_compression';\n\nexport const EXTENSIONS = {\n // 1.0\n // KHR_binary_gltf,\n\n // 2.0\n KHR_draco_mesh_compression,\n KHR_lights_punctual,\n KHR_materials_unlit,\n KHR_techniques_webgl\n};\n\nexport async function decodeExtensions(gltf, options = {}, context) {\n options.gltf = options.gltf || {};\n for (const extensionName in EXTENSIONS) {\n const excludes = options.gltf.excludeExtensions || {};\n const exclude = extensionName in excludes && !excludes[extensionName];\n if (!exclude) {\n const extension = EXTENSIONS[extensionName];\n // Note: We decode async extensions sequentially, this might not be necessary\n // Currently we only have Draco, but when we add Basis we may revisit\n await extension.decode(gltf, options, context);\n }\n }\n}\n","/* eslint-disable camelcase, max-statements */\n/* global TextDecoder */\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\nimport {padTo4Bytes, assert} from '@loaders.gl/loader-utils';\n\nconst MAGIC_glTF = 0x676c5446; // glTF in Big-Endian ASCII\n\nconst GLB_FILE_HEADER_SIZE = 12;\nconst GLB_CHUNK_HEADER_SIZE = 8;\n\nconst GLB_CHUNK_TYPE_JSON = 0x4e4f534a;\nconst GLB_CHUNK_TYPE_BIN = 0x004e4942;\nconst GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED = 0; // DEPRECATED - Backward compatibility for old xviz files\nconst GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED = 1; // DEPRECATED - Backward compatibility for old xviz files\n\nconst GLB_V1_CONTENT_FORMAT_JSON = 0x0;\n\nconst LE = true; // Binary GLTF is little endian.\n\nfunction getMagicString(dataView, byteOffset = 0) {\n return `\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 0))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 1))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 2))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 3))}`;\n}\n\n// Check if a data view is a GLB\nexport function isGLB(arrayBuffer, byteOffset = 0, options = {}) {\n const dataView = new DataView(arrayBuffer);\n // Check that GLB Header starts with the magic number\n const {magic = MAGIC_glTF} = options;\n const magic1 = dataView.getUint32(byteOffset, false);\n return magic1 === magic || magic1 === MAGIC_glTF;\n}\n\nexport default function parseGLBSync(glb, arrayBuffer, byteOffset = 0, options = {}) {\n // Check that GLB Header starts with the magic number\n const dataView = new DataView(arrayBuffer);\n\n // Compare format with GLBLoader documentation\n glb.type = getMagicString(dataView, byteOffset + 0);\n glb.version = dataView.getUint32(byteOffset + 4, LE); // Version 2 of binary glTF container format\n const byteLength = dataView.getUint32(byteOffset + 8, LE); // Total byte length of binary file\n\n // Put less important stuff in a header, to avoid clutter\n glb.header = {\n byteOffset, // Byte offset into the initial arrayBuffer\n byteLength\n };\n\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n glb.json = {};\n glb.binChunks = [];\n\n byteOffset += GLB_FILE_HEADER_SIZE;\n\n switch (glb.version) {\n case 1:\n // eslint-disable-next-line\n return parseGLBV1(glb, dataView, byteOffset, (options = {}));\n case 2:\n return parseGLBV2(glb, dataView, byteOffset, (options = {}));\n default:\n throw new Error(`Invalid GLB version ${glb.version}. Only supports v1 and v2.`);\n }\n}\n\nfunction parseGLBV1(glb, dataView, byteOffset, options) {\n // Sanity: ensure file is big enough to hold at least the headers\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n // Explanation of GLB structure:\n // https://cloud.githubusercontent.com/assets/3479527/22600725/36b87122-ea55-11e6-9d40-6fd42819fcab.png\n const contentLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const contentFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // GLB v1 only supports a single chunk type\n assert(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);\n\n parseJSONChunk(glb, dataView, byteOffset, contentLength, options);\n // No need to call the function padTo4Bytes() from parseJSONChunk()\n byteOffset += contentLength;\n byteOffset += parseBINChunk(glb, dataView, byteOffset, glb.header.byteLength, options);\n\n return byteOffset;\n}\n\nfunction parseGLBV2(glb, dataView, byteOffset, options) {\n // Sanity: ensure file is big enough to hold at least the first chunk header\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n parseGLBChunksSync(glb, dataView, byteOffset, options);\n\n return byteOffset + glb.header.byteLength;\n}\n\nfunction parseGLBChunksSync(glb, dataView, byteOffset, options) {\n // Iterate as long as there is space left for another chunk header\n while (byteOffset + 8 <= glb.header.byteLength) {\n const chunkLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const chunkFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n switch (chunkFormat) {\n case GLB_CHUNK_TYPE_JSON:\n parseJSONChunk(glb, dataView, byteOffset, chunkLength, options);\n break;\n case GLB_CHUNK_TYPE_BIN:\n parseBINChunk(glb, dataView, byteOffset, chunkLength, options);\n break;\n\n // Backward compatibility for very old xviz files\n case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:\n if (!options.glb.strict) {\n parseJSONChunk(glb, dataView, byteOffset, chunkLength, options);\n }\n break;\n case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:\n if (!options.glb.strict) {\n parseBINChunk(glb, dataView, byteOffset, chunkLength, options);\n }\n break;\n\n default:\n // Ignore, per spec\n // console.warn(`Unknown GLB chunk type`); // eslint-disable-line\n break;\n }\n\n byteOffset += padTo4Bytes(chunkLength);\n }\n\n return byteOffset;\n}\n\n// Parse a GLB JSON chunk\nfunction parseJSONChunk(glb, dataView, byteOffset, chunkLength, options) {\n // 1. Create a \"view\" of the binary encoded JSON data inside the GLB\n const jsonChunk = new Uint8Array(dataView.buffer, byteOffset, chunkLength);\n\n // 2. Decode the JSON binary array into clear text\n const textDecoder = new TextDecoder('utf8');\n const jsonText = textDecoder.decode(jsonChunk);\n\n // 3. Parse the JSON text into a JavaScript data structure\n glb.json = JSON.parse(jsonText);\n\n return padTo4Bytes(chunkLength);\n}\n\n// Parse a GLB BIN chunk\nfunction parseBINChunk(glb, dataView, byteOffset, chunkLength, options) {\n // Note: BIN chunk can be optional\n glb.header.hasBinChunk = true;\n glb.binChunks.push({\n byteOffset,\n byteLength: chunkLength,\n arrayBuffer: dataView.buffer\n // TODO - copy, or create typed array view?\n });\n\n return padTo4Bytes(chunkLength);\n}\n","/* eslint-disable camelcase */\nimport * as KHR_binary_glTF from './extensions/KHR_binary_gltf';\n\n// Binary format changes (mainly implemented by GLBLoader)\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\n// JSON format changes:\n// https://github.com/khronosgroup/gltf/issues/605\n\n// - [x] Top-level JSON objects are arrays now\n// - [ ] Removed indirection from animation: sampler now refers directly to accessors, #712\n// - [ ] material.parameter.value and technique.parameter.value must be an array, #690\n// - [ ] Node can have only one mesh #821\n// - [ ] Added reqs on JSON encoding\n// - [ ] Added reqs on binary data alignment #802 (comment)\n\n// Additions:\n// - [ ] Added accessor.normalized, #691, #706\n// - [ ] Added glExtensionsUsed property and 5125 (UNSIGNED_INT) accessor.componentType value, #619\n// - [ ] Added extensionsRequired property, #720, #721\n// - [ ] Added \"STEP\" as valid animation.sampler.interpolation value, #712\n\n// Removals:\n// - [x] Removed buffer.type, #786, #629\n// - [ ] Removed revision number from profile.version, #709\n// - [ ] Removed technique.functions.scissor and removed 3089 (SCISSOR_TEST) as a valid value for technique.states.enable, #681\n// - [ ] Techniques, programs, and shaders were moved out to KHR_technique_webgl extension.\n\n// Other edits:\n// - [x] asset is now required, #642\n// - [ ] buffer.byteLength and bufferView.byteLength are now required, #560.\n// - [ ] accessor.min and accessor.max are now required, #593, and clarified that the JSON value and binary data must be the same, #628.\n// - [ ] Clarified animation.sampler and animation.channel restrictions, #712\n// - [ ] skin.inverseBindMatrices is now optional, #461.\n// - [ ] Attribute parameters can't have a value defined in the technique or parameter, #563 (comment).\n// - [ ] Only TEXCOORD and COLOR attribute semantics can be written in the form [semantic]_[set_index], #563 (comment).\n// - [ ] TEXCOORD and COLOR attribute semantics must be written in the form [semantic]_[set_index], e.g., just TEXCOORD should be TEXCOORD_0, and just COLOR should be COLOR_0, #649\n// - [ ] camera.perspective.aspectRatio and camera.perspective.yfov must now be > 0, not >= 0, #563 (comment).\n// - [ ] Application-specific parameter semantics must start with an underscore, e.g., _TEMPERATURE and _SIMULATION_TIME, #563 (comment).\n// - [ ] Properties in technique.parameters must be defined in technique.uniforms or technique.attributes,\n\n// #563 (comment).\n// - [ ] technique.parameter.count can only be defined when the semantic is JOINTMATRIX or an application-specific semantic is used. It can never be defined for attribute parameters; only uniforms, d2f6945\n// - [ ] technique.parameter.semantic is required when the parameter is an attribute, 28e113d\n// - [ ] Mesh-only models are allowed, e.g., without materials, #642\n// - [ ] Skeleton hierarchies (nodes containing jointName) must be separated from non-skeleton hierarchies., #647\n// - [ ] technique.states.functions.blendColor and technique.states.functions.depthRange parameters now must match WebGL function min/max, #707\n\nconst GLTF_ARRAYS = {\n accessors: 'accessor',\n animations: 'animation',\n buffers: 'buffer',\n bufferViews: 'bufferView',\n images: 'image',\n materials: 'material',\n meshes: 'mesh',\n nodes: 'node',\n samplers: 'sampler',\n scenes: 'scene',\n skins: 'skin',\n textures: 'texture'\n};\n\nconst GLTF_KEYS = {\n accessor: 'accessors',\n animations: 'animation',\n buffer: 'buffers',\n bufferView: 'bufferViews',\n image: 'images',\n material: 'materials',\n mesh: 'meshes',\n node: 'nodes',\n sampler: 'samplers',\n scene: 'scenes',\n skin: 'skins',\n texture: 'textures'\n};\n\n/**\n * Converts (normalizes) glTF v1 to v2\n */\nclass GLTFV1Normalizer {\n constructor(gltf) {\n this.idToIndexMap = {\n animations: {},\n accessors: {},\n buffers: {},\n bufferViews: {},\n images: {},\n materials: {},\n meshes: {},\n nodes: {},\n samplers: {},\n scenes: {},\n skins: {},\n textures: {}\n };\n }\n\n /**\n * Convert (normalize) glTF < 2.0 to glTF 2.0\n * @param {*} gltf - object with json and binChunks\n * @param {object} options\n * @param {boolean} [options.normalize] Whether to actually normalize\n */\n normalize(gltf, options) {\n this.json = gltf.json;\n const json = gltf.json;\n\n // Check version\n switch (json.asset && json.asset.version) {\n // We are converting to v2 format. Return if there is nothing to do\n case '2.0':\n return;\n\n // This class is written to convert 1.0\n case undefined:\n case '1.0':\n break;\n\n default:\n // eslint-disable-next-line no-undef, no-console\n console.warn(`glTF: Unknown version ${json.asset.version}`);\n return;\n }\n\n if (!options.normalize) {\n // We are still missing a few conversion tricks, remove once addressed\n throw new Error('glTF v1 is not supported.');\n }\n\n // eslint-disable-next-line no-undef, no-console\n console.warn('Converting glTF v1 to glTF v2 format. This is experimental and may fail.');\n\n this._addAsset(json);\n\n // In glTF2 top-level fields are Arrays not Object maps\n this._convertTopLevelObjectsToArrays(json);\n\n // Extract bufferView indices for images\n // (this extension needs to be invoked early in the normalization process)\n KHR_binary_glTF.decode(gltf, options);\n\n // Convert object references from ids to indices\n this._convertObjectIdsToArrayIndices(json);\n\n this._updateObjects(json);\n }\n\n // asset is now required, #642 https://github.com/KhronosGroup/glTF/issues/639\n _addAsset(json) {\n json.asset = json.asset || {};\n // We are normalizing to glTF v2, so change version to \"2.0\"\n json.asset.version = '2.0';\n json.asset.generator = json.asset.generator || 'Normalized to glTF 2.0 by loaders.gl';\n }\n\n _convertTopLevelObjectsToArrays(json) {\n // TODO check that all arrays are covered\n for (const arrayName in GLTF_ARRAYS) {\n this._convertTopLevelObjectToArray(json, arrayName);\n }\n }\n\n /** Convert one top level object to array */\n _convertTopLevelObjectToArray(json, mapName) {\n const objectMap = json[mapName];\n if (!objectMap || Array.isArray(objectMap)) {\n return;\n }\n\n // Rewrite the top-level field as an array\n json[mapName] = [];\n // Copy the map key into object.id\n for (const id in objectMap) {\n const object = objectMap[id];\n object.id = object.id || id; // Mutates the loaded object\n const index = json[mapName].length;\n json[mapName].push(object);\n this.idToIndexMap[mapName][id] = index;\n }\n }\n\n /** Go through all objects in all top-level arrays and replace ids with indices */\n _convertObjectIdsToArrayIndices(json) {\n for (const arrayName in GLTF_ARRAYS) {\n this._convertIdsToIndices(json, arrayName);\n }\n if ('scene' in json) {\n json.scene = this._convertIdToIndex(json.scene, 'scene');\n }\n\n // Convert any index references that are not using array names\n\n // texture.source (image)\n for (const texture of json.textures) {\n this._convertTextureIds(texture);\n }\n for (const mesh of json.meshes) {\n this._convertMeshIds(mesh);\n }\n for (const node of json.nodes) {\n this._convertNodeIds(node);\n }\n for (const node of json.scenes) {\n this._convertSceneIds(node);\n }\n }\n\n _convertTextureIds(texture) {\n if (texture.source) {\n texture.source = this._convertIdToIndex(texture.source, 'image');\n }\n }\n\n _convertMeshIds(mesh) {\n for (const primitive of mesh.primitives) {\n const {attributes, indices, material} = primitive;\n for (const attributeName in attributes) {\n attributes[attributeName] = this._convertIdToIndex(attributes[attributeName], 'accessor');\n }\n if (indices) {\n primitive.indices = this._convertIdToIndex(indices, 'accessor');\n }\n if (material) {\n primitive.material = this._convertIdToIndex(material, 'material');\n }\n }\n }\n\n _convertNodeIds(node) {\n if (node.children) {\n node.children = node.children.map(child => this._convertIdToIndex(child, 'node'));\n }\n }\n\n _convertSceneIds(scene) {\n if (scene.nodes) {\n scene.nodes = scene.nodes.map(node => this._convertIdToIndex(node, 'node'));\n }\n }\n\n /** Go through all objects in a top-level array and replace ids with indices */\n _convertIdsToIndices(json, topLevelArrayName) {\n for (const object of json[topLevelArrayName]) {\n for (const key in object) {\n const id = object[key];\n const index = this._convertIdToIndex(id, key);\n object[key] = index;\n }\n }\n }\n\n _convertIdToIndex(id, key) {\n const arrayName = GLTF_KEYS[key];\n if (arrayName in this.idToIndexMap) {\n const index = this.idToIndexMap[arrayName][id];\n if (!Number.isFinite(index)) {\n throw new Error(`gltf v1: failed to resolve ${key} with id ${id}`);\n }\n return index;\n }\n return id;\n }\n\n /**\n *\n * @param {*} json\n */\n _updateObjects(json) {\n for (const buffer of this.json.buffers) {\n // - [x] Removed buffer.type, #786, #629\n delete buffer.type;\n }\n }\n}\n\nexport default function normalizeGLTFV1(gltf, options = {}) {\n return new GLTFV1Normalizer().normalize(gltf, options);\n}\n","// GLTF 1.0 EXTENSION: KHR_binary_glTF\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\nimport GLTFScenegraph from '../gltf-scenegraph';\nimport {KHR_BINARY_GLTF} from '../gltf-constants';\n\nexport function decode(gltfData, options) {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Note: json.buffers.binary_glTF also needs to be replaced\n // This is currently done during gltf normalization\n\n // Image and shader nodes can have the extension\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/image.KHR_binary_glTF.schema.json\n for (const node of json.images || []) {\n const extension = gltfScenegraph.removeObjectExtension(node, KHR_BINARY_GLTF);\n // The data in the extension is valid as glTF 2.0 data inside the object, so just copy it in\n if (extension) {\n Object.assign(node, extension);\n }\n }\n\n // TODO shaders\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/shader.KHR_binary_glTF.schema.json\n\n // glTF v1 one files have a partially formed URI field that is not expected in (and causes problems in) 2.0\n if (json.buffers && json.buffers[0]) {\n delete json.buffers[0].uri;\n }\n\n // Remove the top-level extension as it has now been removed from all nodes\n gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n\n// KHR_binary_gltf is a 1.0 extension that is supported natively by 2.0\nexport function encode(gltfData, options) {\n throw new Error(KHR_BINARY_GLTF);\n}\n","import assert from './utils/assert';\nimport {getAccessorArrayTypeAndLength} from './gltf-utils/gltf-utils';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_]: GL_SAMPLER.REPEAT\n};\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n postProcess(gltf, options = {}) {\n const {json, buffers = [], images = [], baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.json = json;\n this.buffers = buffers;\n this.images = images;\n\n this._resolveTree(this.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity\n _resolveTree(json, options = {}) {\n if (json.bufferViews) {\n json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (json.images) {\n json.images = json.images.map((image, i) => this._resolveImage(image, i));\n }\n if (json.samplers) {\n json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (json.textures) {\n json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (json.accessors) {\n json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (json.materials) {\n json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (json.meshes) {\n json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (json.nodes) {\n json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));\n }\n if (json.skins) {\n json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (json.scenes) {\n json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (json.scene !== undefined) {\n json.scene = json.scenes[this.json.scene];\n }\n }\n\n getScene(index) {\n return this._get('scenes', index);\n }\n\n getNode(index) {\n return this._get('nodes', index);\n }\n\n getSkin(index) {\n return this._get('skins', index);\n }\n\n getMesh(index) {\n return this._get('meshes', index);\n }\n\n getMaterial(index) {\n return this._get('materials', index);\n }\n\n getAccessor(index) {\n return this._get('accessors', index);\n }\n\n getCamera(index) {\n return null; // TODO: fix this\n }\n\n getTexture(index) {\n return this._get('textures', index);\n }\n\n getSampler(index) {\n return this._get('samplers', index);\n }\n\n getImage(index) {\n return this._get('images', index);\n }\n\n getBufferView(index) {\n return this._get('bufferViews', index);\n }\n\n getBuffer(index) {\n return this._get('buffers', index);\n }\n\n _get(array, index) {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && this.json[array][index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene, index) {\n // scene = {...scene};\n scene.id = scene.id || `scene-${index}`;\n scene.nodes = (scene.nodes || []).map(node => this.getNode(node));\n return scene;\n }\n\n _resolveNode(node, index) {\n // node = {...node};\n node.id = node.id || `node-${index}`;\n if (node.children) {\n node.children = node.children.map(child => this.getNode(child));\n }\n if (node.mesh !== undefined) {\n node.mesh = this.getMesh(node.mesh);\n }\n if (node.camera !== undefined) {\n node.camera = this.getCamera(node.camera);\n }\n if (node.skin !== undefined) {\n node.skin = this.getSkin(node.skin);\n }\n return node;\n }\n\n _resolveSkin(skin, index) {\n // skin = {...skin};\n skin.id = skin.id || `skin-${index}`;\n skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);\n return skin;\n }\n\n _resolveMesh(mesh, index) {\n // mesh = {...mesh};\n mesh.id = mesh.id || `mesh-${index}`;\n if (mesh.primitives) {\n mesh.primitives = mesh.primitives.map(primitive => {\n primitive = {...primitive};\n const attributes = primitive.attributes;\n primitive.attributes = {};\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (primitive.indices !== undefined) {\n primitive.indices = this.getAccessor(primitive.indices);\n }\n if (primitive.material !== undefined) {\n primitive.material = this.getMaterial(primitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(material, index) {\n // material = {...material};\n material.id = material.id || `material-${index}`;\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlustionTexture = {...material.occlustionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emmisiveTexture = {...material.emmisiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(accessor, index) {\n // accessor = {...accessor};\n accessor.id = accessor.id || `accessor-${index}`;\n if (accessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(accessor.bufferView);\n }\n\n // Look up enums\n accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);\n accessor.components = getSizeFromAccessorType(accessor.type);\n accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n accessor.value = new ArrayType(buffer.arrayBuffer, byteOffset, length);\n }\n\n return accessor;\n }\n\n _resolveTexture(texture, index) {\n // texture = {...texture};\n texture.id = texture.id || `texture-${index}`;\n texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;\n texture.source = this.getImage(texture.source);\n return texture;\n }\n\n _resolveSampler(sampler, index) {\n // sampler = {...sampler};\n sampler.id = sampler.id || `sampler-${index}`;\n // Map textual parameters to GL parameter values\n sampler.parameters = {};\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key) {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(image, index) {\n // image = {...image};\n image.id = image.id || `image-${index}`;\n if (image.bufferView !== undefined) {\n image.bufferView = this.getBufferView(image.bufferView);\n }\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(bufferView, index) {\n // bufferView = {...bufferView};\n bufferView.id = bufferView.id || `bufferView-${index}`;\n const bufferIndex = bufferView.buffer;\n bufferView.buffer = this.buffers[bufferIndex];\n\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n bufferView.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return bufferView;\n }\n\n _resolveCamera(camera, index) {\n camera.id = camera.id || `camera-${index}`;\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport default function postProcessGLTF(gltf, options) {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n","/* eslint-disable camelcase, max-statements, no-restricted-globals */\n/* global TextDecoder */\nimport {ImageLoader} from '@loaders.gl/images';\nimport {parseJSON, getZeroOffsetArrayBuffer} from '@loaders.gl/loader-utils';\nimport assert from './utils/assert';\nimport {resolveUrl} from './gltf-utils/resolve-url';\nimport {getTypedArrayForBufferView} from './gltf-utils/get-typed-array';\nimport {decodeExtensions} from './extensions/gltf-extensions';\nimport parseGLBSync, {isGLB} from './parse-glb';\nimport normalizeGLTFV1 from './normalize-gltf-v1';\nimport postProcessGLTF from './post-process-gltf';\n\nexport function isGLTF(arrayBuffer, options = {}) {\n const dataView = new DataView(arrayBuffer);\n const byteOffset = 0;\n return isGLB(dataView, byteOffset);\n}\n\nexport async function parseGLTF(gltf, arrayBufferOrString, byteOffset = 0, options, context) {\n parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n\n normalizeGLTFV1(gltf, {normalize: options.gltf.normalize});\n\n /** @type {Promise[]} */\n const promises = [];\n\n // Load linked buffers asynchronously and decodes base64 buffers in parallel\n if (options.gltf.loadBuffers && gltf.json.buffers) {\n await loadBuffers(gltf, options, context);\n }\n\n if (options.gltf.loadImages) {\n const promise = loadImages(gltf, options, context);\n promises.push(promise);\n }\n\n const promise = decodeExtensions(gltf, options, context);\n promises.push(promise);\n\n // Parallelize image loading and buffer loading/extension decoding\n await Promise.all(promises);\n\n // Post processing resolves indices to objects, buffers\n return options.gltf.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\n\n// `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n // Initialize gltf container\n if (options.uri) {\n gltf.baseUri = options.uri;\n }\n\n // If data is binary and starting with magic bytes, assume binary JSON text, convert to string\n if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(data);\n }\n\n if (typeof data === 'string') {\n // If string, try to parse as JSON\n gltf.json = parseJSON(data);\n } else if (data instanceof ArrayBuffer) {\n // If still ArrayBuffer, parse as GLB container\n const glb = {};\n byteOffset = parseGLBSync(glb, data, byteOffset, options);\n\n assert(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);\n\n gltf._glb = glb;\n gltf.json = glb.json;\n } else {\n assert(false, `GLTF: must be ArrayBuffer or string`);\n }\n\n // Populate buffers\n // Create an external buffers array to hold binary data\n const buffers = gltf.json.buffers || [];\n gltf.buffers = new Array(buffers.length).fill(null);\n\n // Populates JSON and some bin chunk info\n if (gltf._glb && gltf._glb.header.hasBinChunk) {\n const {binChunks} = gltf._glb;\n gltf.buffers[0] = {\n arrayBuffer: binChunks[0].arrayBuffer,\n byteOffset: binChunks[0].byteOffset,\n byteLength: binChunks[0].byteLength\n };\n\n // TODO - this modifies JSON and is a post processing thing\n // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;\n // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;\n }\n\n // Populate images\n const images = gltf.json.images || [];\n gltf.images = new Array(images.length).fill({});\n}\n\n// Asynchronously fetch and parse buffers, store in buffers array outside of json\nasync function loadBuffers(gltf, options, context) {\n for (let i = 0; i < gltf.json.buffers.length; ++i) {\n const buffer = gltf.json.buffers[i];\n if (buffer.uri) {\n const {fetch} = context;\n assert(fetch);\n\n const uri = resolveUrl(buffer.uri, options);\n const response = await fetch(uri);\n const arrayBuffer = await response.arrayBuffer();\n\n gltf.buffers[i] = {\n arrayBuffer,\n byteOffset: 0,\n byteLength: arrayBuffer.byteLength\n };\n\n delete buffer.uri;\n }\n }\n}\n\nasync function loadImages(gltf, options, context) {\n const images = gltf.json.images || [];\n\n const promises = [];\n for (let i = 0; i < images.length; ++i) {\n promises.push(loadImage(gltf, images[i], i, options, context));\n }\n\n return await Promise.all(promises);\n}\n\n// Asynchronously fetches and parses one image, store in images array outside of json\nasync function loadImage(gltf, image, i, options, context) {\n const {fetch, parse} = context;\n\n let arrayBuffer;\n\n if (image.uri) {\n const uri = resolveUrl(image.uri, options);\n const response = await fetch(uri);\n arrayBuffer = await response.arrayBuffer();\n }\n\n if (Number.isFinite(image.bufferView)) {\n const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n arrayBuffer = getZeroOffsetArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n }\n\n assert(arrayBuffer, 'glTF image has no data');\n\n // Call `parse`\n const parsedImage = await parse(arrayBuffer, ImageLoader, {}, context);\n // TODO making sure ImageLoader is overridable by using array of loaders\n // const parsedImage = await parse(arrayBuffer, [ImageLoader]);\n\n gltf.images[i] = parsedImage;\n}\n","import {parseGLTF} from './lib/parse-gltf';\n/** @typedef {import('@loaders.gl/loader-utils').LoaderObject} LoaderObject */\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** @type {LoaderObject} */\nconst GLTFLoader = {\n id: 'gltf',\n name: 'glTF',\n version: VERSION,\n extensions: ['gltf', 'glb'],\n mimeTypes: ['model/gltf+json', 'model/gltf-binary'],\n\n text: true,\n binary: true,\n tests: ['glTF'],\n parse,\n\n options: {\n gltf: {\n normalize: false, // Normalize glTF v1 to glTF v2 format (not yet stable)\n loadBuffers: true, // Fetch any linked .BIN buffers, decode base64\n loadImages: true, // Create image objects\n decompressMeshes: true, // Decompress Draco encoded meshes\n postProcess: true // Postprocess glTF and return json structure directly\n },\n baseUri: '',\n log: console // eslint-disable-line\n },\n deprecatedOptions: {\n fetchImages: 'gltf.loadImages',\n createImages: 'gltf.loadImages',\n decompress: 'gltf.decompressMeshes',\n postProcess: 'gltf.postProcess',\n gltf: {\n decompress: 'gltf.decompressMeshes'\n }\n }\n};\n\nexport default GLTFLoader;\n\nexport async function parse(arrayBuffer, options = {}, context) {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GLTFLoader.options, ...options};\n // @ts-ignore\n options.gltf = {...GLTFLoader.options.gltf, ...options.gltf};\n addDeprecatedGLTFOptions(options);\n\n const {byteOffset = 0} = options;\n const gltf = {};\n return await parseGLTF(gltf, arrayBuffer, byteOffset, options, context);\n}\n\n// DEPRECATED\n\nfunction addDeprecatedGLTFOptions(options) {\n if ('fetchImages' in options) {\n options.gltf.loadImages = options.fetchImages;\n }\n if ('createImages' in options) {\n options.gltf.loadImages = options.createImages;\n }\n if ('fetchLinkedResources' in options) {\n options.gltf.fetchBuffers = options.fetchLinkedResources;\n }\n if ('decompress' in options) {\n options.gltf.decompressMeshes = options.decompress;\n }\n if ('decompress' in options.gltf) {\n options.gltf.decompressMeshes = options.gltf.decompress;\n }\n if ('postProcess' in options) {\n options.gltf.postProcess = options.postProcess;\n }\n}\n","import assert from '../env-utils/assert';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';\n\n// Returns `true` if the two versions are compatible\nexport function validateLoaderVersion(loader, coreVersion = VERSION) {\n assert(loader, 'no loader provided');\n\n let loaderVersion = loader.version;\n if (!coreVersion || !loaderVersion) {\n return;\n }\n\n coreVersion = parseVersion(coreVersion);\n loaderVersion = parseVersion(loaderVersion);\n\n // TODO enable when fix the __version__ injection\n // assert(\n // coreVersion.major === loaderVersion.major && coreVersion.minor <= loaderVersion.minor,\n // `loader: ${loader.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n}\n\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","import {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader) {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n\n const loaderOptions = loader.options && loader.options[loader.id];\n hasParser = hasParser || (loaderOptions && loaderOptions.workerUrl);\n\n return hasParser;\n}\n\nexport function normalizeLoader(loader) {\n // This error is fairly easy to trigger by mixing up import statments etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE LOADER.EXTENSIONS\n\n // Remove `extension`` prop, replace with `extensions``\n if (loader.extension) {\n loader.extensions = loader.extensions || loader.extension;\n delete loader.extension;\n }\n\n // Ensure loader.extensions is an array\n if (!Array.isArray(loader.extensions)) {\n loader.extensions = [loader.extensions];\n }\n\n assert(loader.extensions && loader.extensions.length > 0 && loader.extensions[0]);\n\n // NORMALIZE text and binary flags\n\n // Ensure at least one of text/binary flags are properly set\n if (loader.parseTextSync || loader.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n","/* global File, Blob, Response, ReadableStream */\n\nconst isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\n\nexport const isObject = x => x !== null && typeof x === 'object';\nexport const isPureObject = x => isObject(x) && x.constructor === {}.constructor;\nexport const isPromise = x => isObject(x) && isFunction(x.then);\n\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator = x => x && isFunction(x.next);\n\nexport const isResponse = x =>\n (typeof Response !== 'undefined' && x instanceof Response) ||\n (x && x.arrayBuffer && x.text && x.json);\n\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\n\nexport const isWritableDOMStream = x =>\n isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n\nexport const isReadableDOMStream = x =>\n (typeof ReadableStream !== 'undefined' && x instanceof ReadableStream) ||\n (isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader));\n// Not implemented in Firefox: && isFunction(x.pipeTo)\n\n// Check for Node.js `Buffer` without triggering bundler to include polyfill\nexport const isBuffer = x => x && typeof x === 'object' && x.isBuffer;\n\nexport const isWritableNodeStream = x =>\n isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream = x =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n","// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\nexport function getPathPrefix() {\n return pathPrefix;\n}\n\n// Note: addAliases are an experimental export,\nexport function addAliases(aliases) {\n Object.assign(fileAliases, aliases);\n}\n\nexport function resolvePath(filename) {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n","// TODO - build/integrate proper MIME type parsing\n// https://mimesniff.spec.whatwg.org/\n\nconst DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\n\nexport function parseMIMEType(mimeString) {\n if (typeof mimeString !== 'string') {\n return '';\n }\n\n // If resource is a data url, extract any embedded mime type\n const matches = mimeString.match(MIME_TYPE_PATTERN);\n if (matches) {\n return matches[1];\n }\n\n return mimeString;\n}\n\nexport function parseMIMETypeFromURL(dataUrl) {\n if (typeof dataUrl !== 'string') {\n return '';\n }\n\n // If resource is a data URL, extract any embedded mime type\n const matches = dataUrl.match(DATA_URL_PATTERN);\n if (matches) {\n return matches[1];\n }\n\n return '';\n}\n","import {isResponse, isBlob} from '../../javascript-utils/is-type';\nimport {parseMIMEType, parseMIMETypeFromURL} from './mime-type-utils';\n\nconst QUERY_STRING_PATTERN = /\\?.*/;\n\nexport function getResourceUrlAndType(resource) {\n // If resource is a response, it contains the information directly\n if (isResponse(resource)) {\n const contentType = parseMIMEType(resource.headers.get('content-type'));\n const urlType = parseMIMETypeFromURL(resource.url);\n return {\n url: stripQueryString(resource.url || ''),\n type: contentType || urlType || null\n };\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n return {\n // File objects have a \"name\" property. Blob objects don't have any\n // url (name) information\n url: stripQueryString(resource.name || ''),\n type: resource.type || ''\n };\n }\n\n if (typeof resource === 'string') {\n return {\n // TODO this could mess up data URL but it doesn't matter as it is just used for inference\n url: stripQueryString(resource),\n // If a data url\n type: parseMIMETypeFromURL(resource)\n };\n }\n\n // Unknown\n return {\n url: '',\n type: ''\n };\n}\n\nexport function getResourceContentLength(resource) {\n if (isResponse(resource)) {\n return resource.headers['content-length'] || -1;\n }\n if (isBlob(resource)) {\n return resource.size;\n }\n if (typeof resource === 'string') {\n // TODO - handle data URL?\n return resource.length;\n }\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n return -1;\n}\n\nfunction stripQueryString(url) {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n","/* global Response, TextEncoder, Blob, FileReader, btoa */\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrlAndType} from './resource-utils';\n\nexport async function makeResponse(resource) {\n if (isResponse(resource)) {\n return resource;\n }\n\n // Add content-length header if possible\n /** @type {Record} */\n const headers = {};\n\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n // `new Response(File)` does not preserve content-type and URL\n // so we add them here\n const {url, type} = getResourceUrlAndType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n\n // Add a custom header with initial bytes if available\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n // TODO - is this the best way of handling strings?\n // Maybe package as data URL instead?\n if (typeof resource === 'string') {\n // Convert to ArrayBuffer to avoid Response treating it as a URL\n resource = new TextEncoder().encode(resource);\n }\n\n // Attempt to create a Response from the resource, adding headers and setting url\n const response = new Response(resource, {headers});\n // We can't control `Response.url` via constructor, use a property override to record URL.\n Object.defineProperty(response, 'url', {value: url});\n return response;\n}\n\nexport async function checkResponse(response) {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\n\nexport function checkResponseSync(response) {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n throw new Error(message);\n }\n}\n\n// HELPERS\n\nasync function getResponseError(response) {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n message += text;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n } catch (error) {\n // eslint forbids return in a finally statement, so we just catch here\n }\n return message;\n}\n\nasync function getInitialDataUrl(resource) {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = event => resolve(event.target && event.target.result);\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\n\n// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n","export function getErrorMessageFromResponseSync(response) {\n return `Failed to fetch resource ${response.url}(${response.status}): ${response.statusText} `;\n}\n\nexport async function getErrorMessageFromResponse(response) {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n if (contentType.includes('application/json')) {\n message += await response.text();\n } else {\n message += response.statusText;\n }\n } catch (error) {\n // eslint forbids return in finally statement\n return message;\n }\n return message;\n}\n","/* global fetch */\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {makeResponse} from '../utils/response-utils';\nimport {getErrorMessageFromResponse} from './fetch-error-message';\n\n// As fetch but respects pathPrefix and file aliases\n// Reads file data from:\n// * data urls\n// * http/http urls\n// * File/Blob objects\nexport async function fetchFile(url, options = {}) {\n if (typeof url !== 'string') {\n return await makeResponse(url);\n }\n\n url = resolvePath(url);\n\n const response = await fetch(url, options);\n if (!response.ok && options.throws) {\n throw new Error(await getErrorMessageFromResponse(response));\n }\n\n return response;\n}\n","// probe.gl Log compatible loggers\n\n// Logs nothing\nexport class NullLog {\n log() {\n return _ => {};\n }\n info() {\n return _ => {};\n }\n warn() {\n return _ => {};\n }\n error() {\n return _ => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","import {global} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {NullLog, ConsoleLog} from './loggers';\n\nconst DEFAULT_LOADER_OPTIONS = {\n baseUri: '',\n fetch: null,\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: [],\n reuseWorkers: true // By default reuse workers\n};\n\nconst DEPRECATED_LOADER_OPTIONS = {\n dataType: '(no longer used)',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n\n// Helper to reliably get global loader state\n// Wraps initialization of global variable in function to defeat overly agressive tree-shakers\nexport const getGlobalLoaderState = () => {\n // @ts-ignore\n global.loaders = global.loaders || {};\n // @ts-ignore\n const {loaders} = global;\n\n // Add _state object to keep separate from modules added to global.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n};\n\n// Store global loader options on the global object to increase chances of cross loaders-version interoperability\n// NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n// Set global loader options\nexport function setGlobalOptions(options) {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n// Merges options with global opts and loader defaults, also injects baseUri\n// Merges options with global opts and loader defaults, also injects baseUri\nexport function normalizeOptions(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\nexport function getFetchFunction(options, context) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetch = options.fetch || globalOptions.fetch;\n\n // options.fetch can be a function\n if (typeof fetch === 'function') {\n return fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetch)) {\n return url => fetchFile(url, fetch);\n }\n\n // else refer to context (from parent loader) if available\n if (context && context.fetch) {\n return context.fetch;\n }\n\n // else return the default fetch function\n\n // TODO DEPRECATED, support for root level fetch options will be removed in 3.0\n return url => fetchFile(url, options);\n\n // return fetchFile;\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param {object} options\n * @param {*} loaders\n * @param {*} log\n */\nfunction validateOptions(\n options,\n loaders,\n // eslint-disable-next-line\n log = console\n) {\n // Check top level options\n validateOptionsObject(\n options,\n null,\n log,\n DEFAULT_LOADER_OPTIONS,\n DEPRECATED_LOADER_OPTIONS,\n loaders\n );\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions = (loader.defaultOptions && loader.defaultOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, log, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params\nfunction validateOptionsObject(options, id, log, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n if (!(key in defaultOptions)) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n log.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' deprecated, use \\'${\n deprecatedOptions[key]\n }\\'`\n );\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n log.warn(`${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`);\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n addUrlOptions(mergedOptions, url);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url) {\n if (url && !options.baseUri) {\n options.baseUri = url;\n }\n}\n","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];\n if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];\n }\n\n if (method == null) method = iterable[\"@@asyncIterator\"];\n if (method == null) method = iterable[\"@@iterator\"];\n if (method == null) throw new TypeError(\"Object is not async iterable\");\n return method.call(iterable);\n}","import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\nimport assert from '../env-utils/assert';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * Supports strings and ArrayBuffers\n *\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\nexport async function concatenateChunksAsync(asyncIterator) {\n /** @type {ArrayBuffer[]} */\n const arrayBuffers = [];\n /** @type {string[]} */\n const strings = [];\n for await (const chunk of asyncIterator) {\n if (typeof chunk === 'string') {\n strings.push(chunk);\n } else {\n arrayBuffers.push(chunk);\n }\n }\n\n if (strings.length > 0) {\n assert(arrayBuffers.length === 0);\n return strings.join('');\n }\n\n return concatenateArrayBuffers(...arrayBuffers);\n}\n","/* global TextEncoder */\n\n/**\n * Returns an iterator that breaks a big string into chunks and yields them one-by-one\n */\nexport function* makeStringIterator(string, options = {}) {\n const {chunkSize = 256 * 1024} = options;\n\n let offset = 0;\n const textEncoder = new TextEncoder();\n while (offset < string.length) {\n // Create a chunk of the right size\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n\n // yield an ArrayBuffer chunk\n yield textEncoder.encode(chunk);\n }\n}\n","export function* makeArrayBufferIterator(arrayBuffer, options = {}) {\n const {chunkSize = 256 * 1024} = options;\n\n let byteOffset = 0;\n\n while (byteOffset < arrayBuffer.byteLength) {\n // Create a chunk of the right size\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n\n // Copy data from the big chunk\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n\n // yield the chunk\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function _awaitAsyncGenerator(value) {\n return new AwaitValue(value);\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nAsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator.js\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","/* global FileReader */\n\nconst DEFAULT_CHUNK_SIZE = 1024 * 1024; // 1MB — biggest value that keeps UI responsive\n\nexport async function* makeBlobIterator(file, options = {}) {\n const chunkSize = options.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n while (offset < file.size) {\n const end = offset + chunkSize;\n\n const chunk = await readFileSlice(file, offset, end);\n\n offset = end;\n yield chunk;\n }\n}\n\nexport async function readFileSlice(file, offset, end) {\n return await new Promise((resolve, reject) => {\n // The trick when reading File objects is to read successive \"slices\" of the File\n // Per spec https://w3c.github.io/FileAPI/, slicing a File should only update the start and end fields\n // Actually reading from file should happen in `readAsArrayBuffer` (and as far we can tell it does)\n const slice = file.slice(offset, end);\n\n const fileReader = new FileReader();\n fileReader.onload = event => resolve(event.target && event.target.result);\n fileReader.onerror = error => reject(error);\n fileReader.readAsArrayBuffer(slice);\n });\n}\n","import {isBrowser, nodeVersion, toArrayBuffer} from '@loaders.gl/loader-utils';\n\nexport function makeStreamIterator(stream) {\n // Hacky test for node version to ensure we don't call bad polyfills\n if (isBrowser || nodeVersion >= 10) {\n // NODE 10+: stream is an asyncIterator\n if (typeof stream[Symbol.asyncIterator] === 'function') {\n return makeToArrayBufferIterator(stream);\n }\n\n // WhatWG: stream is supposed to have a `getIterator` method\n if (typeof stream.getIterator === 'function') {\n return stream.getIterator();\n }\n }\n\n return isBrowser ? makeBrowserStreamIterator(stream) : makeNodeStreamIterator(stream);\n}\n\n/** Coerce each chunk to ArrayBuffer */\nasync function* makeToArrayBufferIterator(asyncIterator) {\n for await (const chunk of asyncIterator) {\n yield toArrayBuffer(chunk);\n }\n}\n\n// BROWSER IMPLEMENTATION\n// See https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate\n\nasync function* makeBrowserStreamIterator(stream) {\n // In the brower, we first need to get a lock on the stream\n const reader = stream.getReader();\n\n try {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // Read from the stream\n // value is a Uint8Array\n const {done, value} = await reader.read();\n // Exit if we're done\n if (done) {\n return;\n }\n // Else yield the chunk\n yield toArrayBuffer(value);\n }\n } catch (error) {\n // TODO - examples makes it look like this should always be called,\n // but that generates exceptions so only call it if we do not reach the end\n reader.releaseLock();\n }\n}\n\n// NODE <10 IMPLEMENTATION\n// See https://github.com/bustle/streaming-iterables, MIT license\n\nasync function* makeNodeStreamIterator(stream) {\n // Node createStream will return promises to handle http requests\n stream = await stream;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const data = stream.read();\n if (data !== null) {\n yield toArrayBuffer(data);\n // eslint-disable-next-line no-continue\n continue;\n }\n if (stream._readableState.ended) {\n return;\n }\n await onceReadable(stream);\n }\n}\n\nasync function onceReadable(stream) {\n return new Promise(resolve => {\n stream.once('readable', resolve);\n });\n}\n","import {makeStringIterator} from './string-iterator';\nimport {makeArrayBufferIterator} from './array-buffer-iterator';\nimport {makeBlobIterator} from './blob-iterator';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {makeStreamIterator} from './stream-iterator';\nimport {isBlob, isReadableStream, isResponse} from '../../javascript-utils/is-type';\n\n/**\n * Returns an iterator that breaks its input into chunks and yields them one-by-one.\n *\n * @param data a big `ArrayBuffer`, `Blob` or string, or a stream.\n * @param {object} options\n * @param {number} [options.chunkSize] max number of bytes per chunk. chunkSize is ignored for streams.\n * @returns iterator or async iterator that yields chunks of specified size.\n *\n * This function can e.g. be used to enable data sources that can only be read atomically\n * (such as `Blob` and `File` via `FileReader`) to still be parsed in batches.\n */\nexport function makeIterator(data, options = {}) {\n if (typeof data === 'string') {\n // Note: Converts string chunks to binary\n return makeStringIterator(data, options);\n }\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n if (isBlob(data)) {\n return makeBlobIterator(data, options);\n }\n if (isReadableStream(data)) {\n return makeStreamIterator(data);\n }\n if (isResponse(data)) {\n return makeStreamIterator(data.body);\n }\n return assert(false);\n}\n","/* global TextDecoder */\nimport {concatenateChunksAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterator-utils/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(data, loader) {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data) || isBuffer(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(data, loader) {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data, loader);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n data = makeIterator(data);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateChunksAsync(data);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIteratorFromData(data) {\n if (isIterator(data)) {\n return data;\n }\n\n if (isResponse(data)) {\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(data);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n return makeIterator(data.body);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIteratorFromData(data);\n}\n\nfunction getIteratorFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getReadableStream(data) {\n if (isReadableStream(data)) {\n return data;\n }\n if (isResponse(data)) {\n return data.body;\n }\n const response = await makeResponse(data);\n return response.body;\n}\n","import {getFetchFunction} from './option-utils';\n\nexport function getLoaderContext(context, options, previousContext = null) {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n\n context = {\n fetch: getFetchFunction(options || {}, context),\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(context.loaders)) {\n context.loaders = null;\n }\n\n return context;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoaders(loaders, context) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","/* global URL, Blob */\nimport assert from '../env-utils/assert';\n\nconst workerURLCache = new Map();\n\n// Creates a URL from worker source that can be used to create `Worker` instances\n// Packages (and then caches) the result of `webworkify` as an \"Object URL\"\nexport function getWorkerURL(workerSource, workerName = 'Worker') {\n assert(typeof workerSource === 'string', 'worker source');\n\n // CASE: url(./worker.js)\n // This pattern is used to differentiate worker urls from worker source code\n // Load from url is needed for testing, when using Webpack & webworker target\n if (workerSource.startsWith('url(') && workerSource.endsWith(')')) {\n const workerUrl = workerSource.match(/^url\\((.*)\\)$/)[1];\n\n // A local script url, we can use it to initialize a Worker directly\n if (workerUrl && !workerUrl.startsWith('http')) {\n return workerUrl;\n }\n\n // Per spec, worker cannot be initialized with a script from a different origin\n // However a local worker script can still import scripts from other origins,\n // so we simply build a wrapper script\n workerSource = buildScript(workerUrl);\n }\n\n let workerURL = workerURLCache.get(workerSource);\n\n if (!workerURL) {\n // NOTE: webworkify was previously used\n // const blob = webworkify(workerSource, {bare: true});\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n workerURL = URL.createObjectURL(blob);\n workerURLCache.set(workerSource, workerURL);\n }\n\n return workerURL;\n}\n\n// Only use trusted sources!\nfunction buildScript(workerUrl) {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n}`;\n}\n","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/* global MessagePort, ImageBitmap, OffscreenCanvas */\n\n// Returns an array of Transferrable objects that can be used with postMessage\n// https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\nexport function getTransferList(object, recursive = true, transfers) {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n","/* global Worker */\nimport {getWorkerURL} from './get-worker-url';\nimport {getTransferList} from './get-transfer-list';\n\nlet count = 0;\n\n// By default resolves to the first message the worker sends back\nfunction defaultOnMessage({data, resolve}) {\n resolve(data);\n}\n\nexport default class WorkerThread {\n constructor({source, name = `web-worker-${count++}`, onMessage}) {\n const url = getWorkerURL(source, name);\n this.worker = new Worker(url, {name});\n this.name = name;\n this.onMessage = onMessage || defaultOnMessage;\n }\n\n /**\n * Process binary data in a worker\n */\n async process(data) {\n return new Promise((resolve, reject) => {\n this.worker.onmessage = event => {\n this.onMessage({worker: this.worker, data: event.data, resolve, reject});\n };\n this.worker.onerror = error => {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = `${this.name}: WorkerThread.process() failed`;\n if (error.message) {\n message += ` ${error.message} ${error.filename}:${error.lineno}:${error.colno}`;\n }\n const betterError = new Error(message);\n console.error(error); // eslint-disable-line\n reject(betterError);\n };\n const transferList = getTransferList(data);\n this.worker.postMessage(data, transferList);\n });\n }\n\n destroy() {\n this.worker.terminate();\n // @ts-ignore\n this.worker = null;\n }\n}\n","import WorkerThread from './worker-thread';\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n constructor({\n source,\n name = 'unnamed',\n maxConcurrency = 1,\n onMessage,\n onDebug = () => {},\n reuseWorkers = true\n }) {\n this.source = source;\n this.name = name;\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n\n this.jobQueue = [];\n this.idleQueue = [];\n this.count = 0;\n this.isDestroyed = false;\n this.reuseWorkers = reuseWorkers;\n }\n\n destroy() {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach(worker => worker.destroy());\n this.isDestroyed = true;\n }\n\n /**\n * Process binary data in a worker\n */\n process(data, jobName) {\n return new Promise((resolve, reject) => {\n this.jobQueue.push({data, jobName, resolve, reject});\n this._startQueuedJob();\n });\n }\n\n // PRIVATE\n\n async _startQueuedJob() {\n if (!this.jobQueue.length) {\n return;\n }\n const worker = this._getAvailableWorker();\n if (!worker) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const job = this.jobQueue.shift();\n\n // @ts-ignore\n this.onDebug({\n message: 'processing',\n worker: worker.name,\n job: job.jobName,\n backlog: this.jobQueue.length\n });\n\n try {\n job.resolve(await worker.process(job.data));\n } catch (error) {\n job.reject(error);\n } finally {\n this._onWorkerDone(worker);\n }\n }\n\n _onWorkerDone(worker) {\n if (this.isDestroyed) {\n worker.destroy();\n return;\n }\n\n if (this.reuseWorkers) {\n this.idleQueue.push(worker);\n } else {\n worker.destroy();\n this.count--;\n }\n\n this._startQueuedJob();\n }\n\n _getAvailableWorker() {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift();\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this.maxConcurrency) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({source: this.source, onMessage: this.onMessage, name});\n }\n\n // No worker available, have to wait\n return null;\n }\n}\n","import WorkerPool from './worker-pool';\n\nconst DEFAULT_MAX_CONCURRENCY = 5;\n\n/**\n * Process multiple data messages with a \"farm\" of different workers (in worker pools)\n */\nexport default class WorkerFarm {\n static isSupported() {\n return typeof Worker !== 'undefined';\n }\n\n constructor({\n maxConcurrency = DEFAULT_MAX_CONCURRENCY,\n onMessage = null,\n onDebug = () => {},\n reuseWorkers = true\n }) {\n this.maxConcurrency = maxConcurrency;\n this.onMessage = onMessage;\n this.onDebug = onDebug;\n this.workerPools = new Map();\n this.reuseWorkers = reuseWorkers;\n }\n\n setProps(props) {\n if ('maxConcurrency' in props) {\n this.maxConcurrency = props.maxConcurrency;\n }\n\n if ('onDebug' in props) {\n this.onDebug = props.onDebug;\n }\n\n if ('reuseWorkers' in props) {\n this.reuseWorkers = props.reuseWorkers;\n }\n }\n\n destroy() {\n this.workerPools.forEach(workerPool => workerPool.destroy());\n }\n\n /**\n * Process binary data in a worker\n * @param {any} data - data (containing binary typed arrays) to be transferred to worker\n * @returns a Promise with data containing typed arrays transferred back from work\n */\n async process(workerSource, workerName, data) {\n const workerPool = this._getWorkerPool(workerSource, workerName);\n return workerPool.process(data);\n }\n\n // PRIVATE\n\n _getWorkerPool(workerSource, workerName) {\n let workerPool = this.workerPools.get(workerName);\n if (!workerPool) {\n workerPool = new WorkerPool({\n source: workerSource,\n name: workerName,\n onMessage: onWorkerMessage.bind(null, this.onMessage),\n maxConcurrency: this.maxConcurrency,\n onDebug: this.onDebug,\n reuseWorkers: this.reuseWorkers\n });\n this.workerPools.set(workerName, workerPool);\n }\n return workerPool;\n }\n}\n\nfunction onWorkerMessage(onMessage, {worker, data, resolve, reject}) {\n if (onMessage) {\n onMessage({worker, data, resolve, reject});\n return;\n }\n\n switch (data.type) {\n case 'done':\n resolve(data.result);\n break;\n\n case 'error':\n reject(data.message);\n break;\n\n default:\n }\n}\n","import {_WorkerFarm as WorkerFarm, toArrayBuffer, getTransferList} from '@loaders.gl/loader-utils';\nimport {parse} from '../api/parse';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport function canParseWithWorker(loader, data, options, context) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n const loaderOptions = options && options[loader.id];\n if (\n (options.worker === 'local' && loaderOptions && loaderOptions.localWorkerUrl) ||\n (options.worker && loaderOptions && loaderOptions.workerUrl)\n ) {\n return loader.useWorker ? loader.useWorker(options) : true;\n }\n return false;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createWorker in @loaders.gl/loader-utils.\n */\nexport default function parseWithWorker(loader, data, options, context) {\n const {worker} = options || {};\n const loaderOptions = (options && options[loader.id]) || {};\n const workerUrl = worker === 'local' ? loaderOptions.localWorkerUrl : loaderOptions.workerUrl;\n\n // Mark as URL\n const workerSource = `url(${workerUrl})`;\n const workerName = loader.name;\n\n const workerFarm = getWorkerFarm(options);\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const warning = loader.version !== VERSION ? `(core version ${VERSION})` : '';\n\n return workerFarm.process(workerSource, `${workerName}-worker@${loader.version}${warning}`, {\n arraybuffer: toArrayBuffer(data),\n options,\n source: `loaders.gl@${VERSION}`, // Lets worker ignore unrelated messages\n type: 'parse' // For future extension\n });\n}\n\nlet _workerFarm = null;\n\n// Create a single instance of a worker farm\nfunction getWorkerFarm(options = {}) {\n const props = {};\n if (options.maxConcurrency) {\n props.maxConcurrency = options.maxConcurrency;\n }\n if (options.onDebug) {\n props.onDebug = options.onDebug;\n }\n\n if ('reuseWorkers' in options) {\n // @ts-ignore\n props.reuseWorkers = options.reuseWorkers;\n }\n\n if (!_workerFarm) {\n _workerFarm = new WorkerFarm({onMessage: onWorkerMessage});\n }\n _workerFarm.setProps(props);\n\n return _workerFarm;\n}\n\nasync function onWorkerMessage({worker, data, resolve, reject}) {\n switch (data.type) {\n case 'done':\n resolve(data.result);\n break;\n\n case 'parse':\n try {\n const result = await parse(data.arraybuffer, data.options, data.url);\n worker.postMessage({type: 'parse-done', id: data.id, result}, getTransferList(result));\n } catch (error) {\n worker.postMessage({type: 'parse-error', id: data.id, message: error.message});\n }\n break;\n\n case 'error':\n reject(data.message);\n break;\n\n default:\n // TODO - is this not an error case? Log a warning?\n }\n}\n","import {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getGlobalLoaderState} from '../loader-utils/option-utils';\n\n// Store global registered loaders on the global object to increase chances of cross loaders-version interoperability\n// This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n\nexport function registerLoaders(loaders) {\n const loaderRegistry = getGlobalLoaderRegistry();\n\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find(registeredLoader => normalizedLoader === registeredLoader)) {\n // add to the beginning of the loaderRegistry, so the last registeredLoader get picked\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders() {\n return getGlobalLoaderRegistry();\n}\n\n// For testing\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n","import {compareArrayBuffers} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {getRegisteredLoaders} from './register-loaders';\nimport {readFileSlice} from '../../iterator-utils/make-iterator/blob-iterator';\nimport {isBlob} from '../../javascript-utils/is-type';\nconst EXT_PATTERN = /\\.([^.]+)$/;\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\nexport async function selectLoader(data, loaders = [], options = {}, context = {}) {\n // First make a sync attempt, disabling exceptions\n let loader = selectLoaderSync(data, loaders, {...options, nothrow: true}, context);\n if (loader) {\n return loader;\n }\n\n // For Blobs and Files, try to asynchronously read a small initial slice and test again with that\n // to see if we can detect by initial content\n if (isBlob(data)) {\n data = await readFileSlice(data, 0, 10);\n loader = selectLoaderSync(data, loaders, options, context);\n }\n\n // no loader available\n if (!loader && !options.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n// eslint-disable-next-line complexity\nexport function selectLoaderSync(data, loaders = [], options = {}, context = {}) {\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behaviour be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n return normalizeLoader(loaders);\n }\n\n // Add registered loaders\n loaders = [...(loaders || []), ...getRegisteredLoaders()];\n normalizeLoaders(loaders);\n\n const {url, type} = getResourceUrlAndType(data);\n\n let loader = findLoaderByUrl(loaders, url || context.url);\n loader = loader || findLoaderByContentType(loaders, type);\n // NOTE: Initial data is not always available (e.g. Response, stream, async iterator)\n loader = loader || findLoaderByExamingInitialData(loaders, data);\n\n // no loader available\n if (!loader && !options.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\nfunction getNoValidLoaderMessage(data) {\n const {url, type} = getResourceUrlAndType(data);\n\n let message = 'No valid loader found';\n if (data) {\n message += ` data: \"${getFirstCharacters(data)}\", contentType: \"${type}\"`;\n }\n if (url) {\n message += ` url: ${url}`;\n }\n return message;\n}\n\nfunction normalizeLoaders(loaders) {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders, url) {\n // Get extension\n const match = url && url.match(EXT_PATTERN);\n const extension = match && match[1];\n return extension && findLoaderByExtension(loaders, extension);\n}\n\nfunction findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\nfunction findLoaderByContentType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n\n // Support referring to loaders using the \"unregistered tree\"\n // https://en.wikipedia.org/wiki/Media_type#Unregistered_tree\n if (mimeType === `application/x.${loader.id}`) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByExamingInitialData(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n return loader.testText && loader.testText(data);\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some(test => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n\n case 'string':\n // Magic bytes check: If `test` is a string, check if binary data starts with that strings\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import {assert, validateLoaderVersion} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaders, getLoaderContext} from '../loader-utils/context-utils';\nimport parseWithWorker, {canParseWithWorker} from '../loader-utils/parse-with-worker';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\nexport async function parse(data, loaders, options, context) {\n assert(!context || typeof context !== 'string', 'parse no longer accepts final url');\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = options;\n options = loaders;\n loaders = null;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const {url} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const candidateLoaders = getLoaders(loaders, context);\n const loader = await selectLoader(data, candidateLoaders, options);\n // Note: if nothrow option was set, it is possible that no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateLoaderVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, data, options, context)) {\n return await parseWithWorker(loader, data, options, context);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n return assert(false);\n}\n","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport merge from './merge';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n}\n\nfunction css(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var output = styleFunction(props);\n\n if (props.css) {\n return _extends({}, merge(output, styleFunction(_extends({\n theme: props.theme\n }, props.css))), omit(props.css, [styleFunction.filterProps]));\n }\n\n return output;\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n css: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['css'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default css;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport merge from './merge';\n\nfunction compose() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n\n var fn = function fn(props) {\n return styles.reduce(function (acc, style) {\n var output = style(props);\n\n if (output) {\n return merge(acc, output);\n }\n\n return acc;\n }, {});\n }; // Alternative approach that doesn't yield any performance gain.\n // const handlers = styles.reduce((acc, style) => {\n // style.filterProps.forEach(prop => {\n // acc[prop] = style;\n // });\n // return acc;\n // }, {});\n // const fn = props => {\n // return Object.keys(props).reduce((acc, prop) => {\n // if (handlers[prop]) {\n // return merge(acc, handlers[prop](props));\n // }\n // return acc;\n // }, {});\n // };\n\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {\n return _extends(acc, style.propTypes);\n }, {}) : {};\n fn.filterProps = styles.reduce(function (acc, style) {\n return acc.concat(style.filterProps);\n }, []);\n return fn;\n}\n\nexport default compose;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce(function (acc, item) {\n return acc && acc[item] ? acc[item] : null;\n }, obj);\n}\n\nfunction style(options) {\n var prop = options.prop,\n _options$cssProperty = options.cssProperty,\n cssProperty = _options$cssProperty === void 0 ? options.prop : _options$cssProperty,\n themeKey = options.themeKey,\n transform = options.transform;\n\n var fn = function fn(props) {\n if (props[prop] == null) {\n return null;\n }\n\n var propValue = props[prop];\n var theme = props.theme;\n var themeMapping = getPath(theme, themeKey) || {};\n\n var styleFromPropValue = function styleFromPropValue(propValueFinal) {\n var value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || propValueFinal;\n } else {\n value = getPath(themeMapping, propValueFinal) || propValueFinal;\n\n if (transform) {\n value = transform(value);\n }\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return _defineProperty({}, cssProperty, value);\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? _defineProperty({}, prop, responsivePropType) : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","import style from './style';\nimport compose from './compose';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return \"\".concat(value, \"px solid\");\n}\n\nexport var border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n themeKey: 'shape'\n});\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport var displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: function transform(value) {\n return {\n '@media print': {\n display: value\n }\n };\n }\n});\nexport var displayRaw = style({\n prop: 'display'\n});\nexport var overflow = style({\n prop: 'overflow'\n});\nexport var textOverflow = style({\n prop: 'textOverflow'\n});\nexport var visibility = style({\n prop: 'visibility'\n});\nexport var whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport var flexBasis = style({\n prop: 'flexBasis'\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var order = style({\n prop: 'order'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var flexGrow = style({\n prop: 'flexGrow'\n});\nexport var flexShrink = style({\n prop: 'flexShrink'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nvar flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nexport var gridGap = style({\n prop: 'gridGap'\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap'\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap'\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n});\nvar grid = compose(gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport var top = style({\n prop: 'top'\n});\nexport var right = style({\n prop: 'right'\n});\nexport var bottom = style({\n prop: 'bottom'\n});\nexport var left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport var color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport var bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nvar palette = compose(color, bgcolor);\nexport default palette;","import style from './style';\nvar boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\n\nfunction transform(value) {\n return value <= 1 ? \"\".concat(value * 100, \"%\") : value;\n}\n\nexport var width = style({\n prop: 'width',\n transform: transform\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n transform: transform\n});\nexport var minWidth = style({\n prop: 'minWidth',\n transform: transform\n});\nexport var height = style({\n prop: 'height',\n transform: transform\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n transform: transform\n});\nexport var minHeight = style({\n prop: 'minHeight',\n transform: transform\n});\nexport var sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: transform\n});\nexport var sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: transform\n});\nexport var boxSizing = style({\n prop: 'boxSizing'\n});\nvar sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport var fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport var fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport var fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport var lineHeight = style({\n prop: 'lineHeight'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nvar typography = compose(fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport makeStyles from '../makeStyles';\n\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n} // styled-components's API removes the mapping between components and styles.\n// Using components as a low-level styling construct can be simpler.\n\n\nexport default function styled(Component) {\n var componentCreator = function componentCreator(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"name\"]);\n\n if (process.env.NODE_ENV !== 'production' && Component === undefined) {\n throw new Error(['You are calling styled(Component)(style) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var stylesOrCreator = typeof style === 'function' ? function (theme) {\n return {\n root: function root(props) {\n return style(_extends({\n theme: theme\n }, props));\n }\n };\n } : {\n root: style\n };\n var useStyles = makeStyles(stylesOrCreator, _extends({\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var filterProps;\n var propTypes = {};\n\n if (style.filterProps) {\n filterProps = style.filterProps;\n delete style.filterProps;\n }\n /* eslint-disable react/forbid-foreign-prop-types */\n\n\n if (style.propTypes) {\n propTypes = style.propTypes;\n delete style.propTypes;\n }\n /* eslint-enable react/forbid-foreign-prop-types */\n\n\n var StyledComponent = /*#__PURE__*/React.forwardRef(function StyledComponent(props, ref) {\n var children = props.children,\n classNameProp = props.className,\n clone = props.clone,\n ComponentProp = props.component,\n other = _objectWithoutProperties(props, [\"children\", \"className\", \"clone\", \"component\"]);\n\n var classes = useStyles(props);\n var className = clsx(classes.root, classNameProp);\n var spread = other;\n\n if (filterProps) {\n spread = omit(spread, filterProps);\n }\n\n if (clone) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n className: clsx(children.props.className, className)\n }, spread));\n }\n\n if (typeof children === 'function') {\n return children(_extends({\n className: className\n }, spread));\n }\n\n var FinalComponent = ComponentProp || Component;\n return /*#__PURE__*/React.createElement(FinalComponent, _extends({\n ref: ref,\n className: className\n }, spread), children);\n });\n process.env.NODE_ENV !== \"production\" ? StyledComponent.propTypes = _extends({\n /**\n * A render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component will recycle it's children HTML element.\n * It's using `React.cloneElement` internally.\n *\n * This prop will be deprecated and removed in v5\n */\n clone: chainPropTypes(PropTypes.bool, function (props) {\n if (props.clone && props.component) {\n return new Error('You can not use the clone and component prop at the same time.');\n }\n\n return null;\n }),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType\n }, propTypes) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = \"Styled(\".concat(classNamePrefix, \")\");\n }\n\n hoistNonReactStatics(StyledComponent, Component);\n return StyledComponent;\n };\n\n return componentCreator;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { styled as styledWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nvar styled = function styled(Component) {\n var componentCreator = styledWithoutDefault(Component);\n return function (style, options) {\n return componentCreator(style, _extends({\n defaultTheme: defaultTheme\n }, options));\n };\n};\n\nexport default styled;","import { borders, compose, display, flexbox, grid, palette, positions, shadows, sizing, spacing, typography, css } from '@material-ui/system';\nimport styled from '../styles/styled';\nexport var styleFunction = css(compose(borders, display, flexbox, grid, positions, palette, shadows, sizing, spacing, typography));\n/**\n * @ignore - do not document.\n */\n\nvar Box = styled('div')(styleFunction, {\n name: 'MuiBox'\n});\nexport default Box;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport { refType } from '@material-ui/utils';\nimport Menu from '../Menu/Menu';\nimport { isFilled } from '../InputBase/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\n\nfunction areEqualValues(a, b) {\n if (_typeof(b) === 'object' && b !== null) {\n return a === b;\n }\n\n return String(a) === String(b);\n}\n\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n/**\n * @ignore - internal component.\n */\n\n\nvar SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n var ariaLabel = props['aria-label'],\n autoFocus = props.autoFocus,\n autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n className = props.className,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n inputRefProp = props.inputRef,\n labelId = props.labelId,\n _props$MenuProps = props.MenuProps,\n MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n multiple = props.multiple,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClose = props.onClose,\n onFocus = props.onFocus,\n onOpen = props.onOpen,\n openProp = props.open,\n readOnly = props.readOnly,\n renderValue = props.renderValue,\n _props$SelectDisplayP = props.SelectDisplayProps,\n SelectDisplayProps = _props$SelectDisplayP === void 0 ? {} : _props$SelectDisplayP,\n tabIndexProp = props.tabIndex,\n type = props.type,\n valueProp = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"]);\n\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n\n var inputRef = React.useRef(null);\n\n var _React$useState = React.useState(null),\n displayNode = _React$useState[0],\n setDisplayNode = _React$useState[1];\n\n var _React$useRef = React.useRef(openProp != null),\n isOpenControlled = _React$useRef.current;\n\n var _React$useState2 = React.useState(),\n menuMinWidthState = _React$useState2[0],\n setMenuMinWidthState = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n openState = _React$useState3[0],\n setOpenState = _React$useState3[1];\n\n var handleRef = useForkRef(ref, inputRefProp);\n React.useImperativeHandle(handleRef, function () {\n return {\n focus: function focus() {\n displayNode.focus();\n },\n node: inputRef.current,\n value: value\n };\n }, [displayNode, value]);\n React.useEffect(function () {\n if (autoFocus && displayNode) {\n displayNode.focus();\n }\n }, [autoFocus, displayNode]);\n React.useEffect(function () {\n if (displayNode) {\n var label = ownerDocument(displayNode).getElementById(labelId);\n\n if (label) {\n var handler = function handler() {\n if (getSelection().isCollapsed) {\n displayNode.focus();\n }\n };\n\n label.addEventListener('click', handler);\n return function () {\n label.removeEventListener('click', handler);\n };\n }\n }\n\n return undefined;\n }, [labelId, displayNode]);\n\n var update = function update(open, event) {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n\n var handleMouseDown = function handleMouseDown(event) {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n\n event.preventDefault();\n displayNode.focus();\n update(true, event);\n };\n\n var handleClose = function handleClose(event) {\n update(false, event);\n };\n\n var childrenArray = React.Children.toArray(children); // Support autofill.\n\n var handleChange = function handleChange(event) {\n var index = childrenArray.map(function (child) {\n return child.props.value;\n }).indexOf(event.target.value);\n\n if (index === -1) {\n return;\n }\n\n var child = childrenArray[index];\n setValue(child.props.value);\n\n if (onChange) {\n onChange(event, child);\n }\n };\n\n var handleItemClick = function handleItemClick(child) {\n return function (event) {\n if (!multiple) {\n update(false, event);\n }\n\n var newValue;\n\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n var itemIndex = value.indexOf(child.props.value);\n\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n\n if (value === newValue) {\n return;\n }\n\n setValue(newValue);\n\n if (onChange) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: newValue,\n name: name\n }\n });\n onChange(event, child);\n }\n };\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (!readOnly) {\n var validKeys = [' ', 'ArrowUp', 'ArrowDown', // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n\n var open = displayNode !== null && (isOpenControlled ? openProp : openState);\n\n var handleBlur = function handleBlur(event) {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: value,\n name: name\n }\n });\n onBlur(event);\n }\n };\n\n delete other['aria-invalid'];\n var display;\n var displaySingle;\n var displayMultiple = [];\n var computeDisplay = false;\n var foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value: value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n\n var items = childrenArray.map(function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var selected;\n\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The `value` prop must be an array when using the `Select` component with `multiple`.\" : _formatMuiErrorMessage(2));\n }\n\n selected = value.some(function (v) {\n return areEqualValues(v, child.props.value);\n });\n\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n\n if (selected) {\n foundMatch = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : undefined,\n onClick: handleItemClick(child),\n onKeyUp: function onKeyUp(event) {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native