From d27044fd5f98481ed8d47f28301e5773d0425ce1 Mon Sep 17 00:00:00 2001 From: Raaj Gopal Date: Wed, 27 Mar 2024 20:36:03 +0530 Subject: [PATCH] TP-61357: Introducing ReactNative | Insurance - Quote page experiments (#10199) Co-authored-by: Shivam Goyal --- .github/workflows/android_build.yml | 10 +- .github/workflows/android_checkstyle.yml | 10 +- .github/workflows/generate_build.yml | 6 + .github/workflows/metrics_logger.yml | 6 + .../workflows/security_api_diff_monitor.yml | 2 +- .github/workflows/semgrep.yml | 1 - .github/workflows/validate_release_pr.yml | 34 +- .gitignore | 5 + App.tsx | 57 + App/Container/Navi-Insurance/Styles/index.ts | 28 + App/Container/Navi-Insurance/index.ts | 9 + .../Navi-Insurance/network/QuotePageApi.ts | 13 + .../screen/InsuranceLandingPageScreen.tsx | 147 + .../Navi-Insurance/screen/IntroScreen.tsx | 22 + .../screen/MemberDetailsScreen.tsx | 274 + .../QuoteApologyScreen.tsx | 78 + .../QuoteApologyScreenStyle.ts | 55 + .../quote-offer-screen/QuoteOfferScreen.tsx | 268 + .../QuoteOfferScreenStyle.ts | 21 + .../error-screen/QuoteOfferErrorScreen.tsx | 52 + .../QuoteOfferErrorScreenStyle.ts | 48 + .../QuoteOfferShimmerScreen.tsx | 87 + .../QuoteOfferShimmerScreenStyle.ts | 108 + App/common/actions/GenericAction.ts | 37 + .../constants/AnalyticsEventsConstant.ts | 4 + App/common/constants/CtaConstants.ts | 25 + App/common/constants/EventNameConstants.ts | 3 + App/common/constants/ModalNameConstants.ts | 3 + .../constants/NavigationHandlerConstants.ts | 1 + App/common/constants/NumericalConstants.ts | 2 + App/common/constants/ScreenNameConstants.ts | 9 + App/common/constants/StringConstant.ts | 29 + App/common/constants/WidgetNameConstants.ts | 15 + App/common/hooks/useAnalyticsEvent.ts | 70 + App/common/hooks/useBottomSheet.tsx | 39 + App/common/hooks/useGradient.tsx | 55 + App/common/hooks/useModal.ts | 21 + App/common/hooks/useSentryLogging.ts | 5 + App/common/interface/BaseScreenProps.ts | 12 + App/common/interface/MemberDetailsResponse.ts | 181 + .../interface/analytics/AppDowntimeData.ts | 12 + .../interface/analytics/GlobalErrorData.ts | 13 + App/common/interface/components/PillData.ts | 9 + App/common/interface/components/PillInfo.ts | 7 + App/common/interface/index.ts | 32 + App/common/interface/modals/ModalView.ts | 10 + App/common/interface/widgets/Widget.ts | 24 + .../PremiumDetailsBottomSheetData.ts | 23 + .../TitleWithFeedbackPillBottomSheetData.ts | 22 + .../TitleWithStepsBottomSheetData.ts | 31 + .../widgets/screenData/ErrorMetaData.ts | 10 + .../widgets/screenData/ScreenData.ts | 20 + .../widgets/screenData/ScreenMetaData.ts | 6 + .../widgetData/ComparisonWidgetData.ts | 10 + .../widgets/widgetData/FabWidgetData.ts | 15 + .../widgetData/FooterWithCardWidgetData.ts | 40 + .../widgetData/GridWithCardWidgetData.ts | 21 + .../HeaderLottieAnimationWidgetData.ts | 11 + .../widgetData/HeaderWithAssetsWidgetData.ts | 16 + .../widgets/widgetData/SliderWidgetData.ts | 13 + .../widgetData/SumInsuredWidgetData.ts | 27 + .../TitleSubtitleWithAssetWidgetData.ts | 16 + .../widgets/widgetData/TitleWidgetData.ts | 49 + .../widgetData/TitleWithAssetsWidgetData.ts | 16 + .../widgetData/TitleWithListWidgetData.ts | 17 + App/common/modals/modalViewResolver.tsx | 58 + App/common/native-module/NativeModules.ts | 11 + App/common/navigator/NavigationRouter.ts | 71 + App/common/navigator/RnAppCreator.tsx | 64 + App/common/redux/index.ts | 1 + App/common/redux/rootReducer.js | 8 + .../action-interfaces/UpdateCtaPayload.ts | 7 + .../redux/screens/screenActionCreators.ts | 10 + App/common/redux/screens/screenReducer.ts | 26 + .../redux/screens/screenReducerActionTypes.ts | 1 + App/common/redux/store.js | 28 + App/common/screen/BaseScreen.tsx | 174 + App/common/screen/ScreenActionHandler.tsx | 109 + App/common/screen/ScreenActionTypes.ts | 6 + .../screen/screen-mappers/GIScreenMapper.tsx | 79 + .../screen/screen-mappers/ScreenMapper.tsx | 37 + .../styles/BaseBottomSheetComponentStyles.ts | 29 + App/common/utilities/AlfredUtils.ts | 6 + App/common/utilities/CacheUtils.ts | 94 + App/common/utilities/CtaParamsUtils.ts | 13 + App/common/utilities/MiscUtils.ts | 54 + App/common/utilities/MockApiUtil.ts | 16 + App/common/utilities/RecordUtils.ts | 7 + App/common/utilities/SerializerUtil.ts | 43 + App/common/utilities/SharedPreferenceUtils.ts | 41 + App/common/utilities/SizeUtils.ts | 15 + App/common/utilities/ValidateColors.ts | 15 + .../widget-actions/WidgetActionHandler.ts | 226 + .../widget-actions/WidgetActionTypes.ts | 9 + App/common/widgets/widgetResolver.tsx | 205 + CODEOWNERS | 3 +- Dockerfile | 19 +- android/README.md => README.md | 0 android/.gitignore | 25 + android/app/build.gradle | 12 + android/app/src/debug/AndroidManifest.xml | 10 +- android/app/src/main/AndroidManifest.xml | 15 +- .../app/src/main/assets/fonts/tt_medium.ttf | Bin 0 -> 140240 bytes .../app/src/main/assets/fonts/tt_regular.ttf | Bin 0 -> 139772 bytes .../src/main/assets/fonts/tt_semi_bold.otf | Bin 0 -> 170788 bytes .../naviapp/analytics/utils/NaviAnalytics.kt | 1 + .../java/com/naviapp/app/NaviApplication.kt | 61 +- .../common/navigator/NaviDeepLinkNavigator.kt | 10 + .../common/tab/InsuranceTabFragment.kt | 6 +- .../ui/TrialInsuranceDashboardFragment.kt | 6 +- .../com/naviapp/react_native/ReactActivity.kt | 115 + .../native_bridge/NativePackage.kt | 32 + .../connectors/AlfredModuleConnector.kt | 40 + .../native_bridge/connectors/ApiConnector.kt | 22 + .../connectors/NativeAnalyticsConnector.kt | 89 + .../connectors/NativeNavigatorConnector.kt | 62 + .../connectors/NetworkModuleConnector.kt | 51 + .../connectors/PreferenceManagerConnector.kt | 92 + .../src/main/java/com/naviapp/utils/Ext.kt | 27 + android/app/src/main/res/values/strings.xml | 1 + android/build.gradle | 15 + android/gradle.properties | 1 + android/link-assets-manifest.json | 17 + android/navi-base/build.gradle | 3 + .../network/retrofit/NaviChatHttpClient.kt | 4 +- .../java/com/navi/common/CommonLibManager.kt | 14 + .../callback/RequestToCallbackHandler.kt | 12 + .../com/navi/common/network/BaseHttpClient.kt | 27 +- .../network/retrofit/CommonHttpClient.kt | 11 + .../navi/common/utils/CommonNaviAnalytics.kt | 4 + .../java/com/navi/common/utils/Constants.kt | 3 + .../common/fragment/BaseBottomSheet.kt | 6 +- .../fragment/TitleIconDescBottomSheet.kt | 6 +- .../ui/MemberNameDobFragment.kt | 4 +- .../NaviInsuranceDeeplinkNavigator.kt | 8 +- .../autopayoption/ui/PaymentReviewFragment.kt | 9 +- .../journey/ui/PreQuoteJourneyFragment.kt | 4 +- .../insurance/quoteredesign/QuoteActivity.kt | 8 +- .../fragments/PolicyAddonFragment.kt | 3 +- .../insurance/util/ActionButtonHandler.kt | 4 - android/navi_hl_dynamic/build.gradle | 3 + android/navi_pl_dynamic/build.gradle | 3 + android/sentry.properties | 6 + android/settings.gradle | 5 + assets/colors/colors.ts | 15 + assets/fonts/tt_medium.ttf | Bin 0 -> 140240 bytes assets/fonts/tt_regular.ttf | Bin 0 -> 139772 bytes assets/fonts/tt_semi_bold.otf | Bin 0 -> 170788 bytes assets/ic_rn_calendar.png | Bin 0 -> 272 bytes assets/images/cross.webp | Bin 0 -> 426 bytes assets/images/help.webp | Bin 0 -> 544 bytes assets/images/quote_apology_icon.webp | Bin 0 -> 2710 bytes assets/images/sww.webp | Bin 0 -> 3156 bytes babel.config.js | 6 + components/AppImage.tsx | 27 + components/StyledImage.tsx | 29 + components/StyledLottie.tsx | 50 + components/ThemeContext.js | 45 + .../bottomsheet/BaseBottomSheetComponent.tsx | 91 + .../TitleWithFeedBackBottomSheet.tsx | 110 + .../TitleWithFeedBackBottomSheetStyle.ts | 29 + .../TitleWithListBottomSheet.tsx | 107 + .../TitleWithListBottomSheetStyle.ts | 59 + .../TitleWithStepsBottomSheet.tsx | 174 + .../TitleWithStepsBottomSheetStyle.ts | 73 + components/reusable/cta-button/CtaButton.tsx | 39 + .../reusable/cta-button/CtaButtonStyle.ts | 17 + .../dashed-separator/DashedSeparator.tsx | 10 + .../dashed-separator/DashedSeparatorStyle.ts | 22 + .../reusable/static-header/StaticHeader.tsx | 37 + .../static-header/StaticHeaderStyle.ts | 20 + components/widgets/BaseWidget.tsx | 70 + components/widgets/ButtonTestWidget.tsx | 64 + components/widgets/ComparisonWidget.tsx | 95 + .../widgets/HeaderLottieAnimationWidget.tsx | 70 + components/widgets/HeaderWithAssetsWidget.tsx | 94 + components/widgets/SliderWidget.tsx | 45 + components/widgets/TitleWidget.tsx | 30 + components/widgets/TitleWithAssetsWidget.tsx | 63 + components/widgets/fab/FAB.tsx | 118 + components/widgets/fab/FABStyle.ts | 28 + .../FooterWithCardWidget.tsx | 118 + .../FooterWithCardWidgetStyle.ts | 52 + .../GridWithCardWidget.tsx | 105 + .../GridWithCardWidgetStyle.ts | 40 + .../widgets/styled-lottie/StyledLottie.tsx | 39 + .../StyledLottieComponentStyle.ts | 14 + components/widgets/styled-text/StyledText.tsx | 84 + .../styled-text/StyledTextComponentStyle.ts | 16 + .../SumInsuredWidget.tsx | 131 + .../SumInsuredWidgetStyles.ts | 142 + .../component/CarouselItem.tsx | 113 + .../component/CarouselItemStyles.ts | 129 + .../TitleSubtitleWithAssetWidget.tsx | 71 + .../TitleSubtitleWithAssetWidgetStyle.ts | 25 + .../widgets/title-widget/TitleWidget.tsx | 56 + .../TitleWithListWidget.tsx | 57 + .../TitleWithListWidgetStyle.ts | 24 + index.android.js | 9 + index.ios.js | 9 + metro.config.js | 19 + network/ApiClient.ts | 51 + network/NetworkConstant.ts | 4 + network/NetworkService.ts | 76 + network/NetworkUtils.ts | 11 + .../request/FillApplicationRequest.ts | 24 + network/payloads/request/QuoteOfferRequest.ts | 36 + .../response/FillApplicationResponse.ts | 33 + network/payloads/response/GenericResponse.ts | 4 + network/repo/BuildConfigDetails.ts | 7 + network/repo/GiApplicationRepo.ts | 39 + package-lock.json | 11779 ++++++++++++++++ package.json | 47 + react-native.config.js | 3 + tsconfig.json | 29 + yarn.lock | 5986 ++++++++ 216 files changed, 25611 insertions(+), 72 deletions(-) create mode 100644 App.tsx create mode 100644 App/Container/Navi-Insurance/Styles/index.ts create mode 100644 App/Container/Navi-Insurance/index.ts create mode 100644 App/Container/Navi-Insurance/network/QuotePageApi.ts create mode 100644 App/Container/Navi-Insurance/screen/InsuranceLandingPageScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/IntroScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/MemberDetailsScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreenStyle.ts create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreenStyle.ts create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreenStyle.ts create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreen.tsx create mode 100644 App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreenStyle.ts create mode 100644 App/common/actions/GenericAction.ts create mode 100644 App/common/constants/AnalyticsEventsConstant.ts create mode 100644 App/common/constants/CtaConstants.ts create mode 100644 App/common/constants/EventNameConstants.ts create mode 100644 App/common/constants/ModalNameConstants.ts create mode 100644 App/common/constants/NavigationHandlerConstants.ts create mode 100644 App/common/constants/NumericalConstants.ts create mode 100644 App/common/constants/ScreenNameConstants.ts create mode 100644 App/common/constants/StringConstant.ts create mode 100644 App/common/constants/WidgetNameConstants.ts create mode 100644 App/common/hooks/useAnalyticsEvent.ts create mode 100644 App/common/hooks/useBottomSheet.tsx create mode 100644 App/common/hooks/useGradient.tsx create mode 100644 App/common/hooks/useModal.ts create mode 100644 App/common/hooks/useSentryLogging.ts create mode 100644 App/common/interface/BaseScreenProps.ts create mode 100644 App/common/interface/MemberDetailsResponse.ts create mode 100644 App/common/interface/analytics/AppDowntimeData.ts create mode 100644 App/common/interface/analytics/GlobalErrorData.ts create mode 100644 App/common/interface/components/PillData.ts create mode 100644 App/common/interface/components/PillInfo.ts create mode 100644 App/common/interface/index.ts create mode 100644 App/common/interface/modals/ModalView.ts create mode 100644 App/common/interface/widgets/Widget.ts create mode 100644 App/common/interface/widgets/modalData/PremiumDetailsBottomSheetData.ts create mode 100644 App/common/interface/widgets/modalData/TitleWithFeedbackPillBottomSheetData.ts create mode 100644 App/common/interface/widgets/modalData/TitleWithStepsBottomSheetData.ts create mode 100644 App/common/interface/widgets/screenData/ErrorMetaData.ts create mode 100644 App/common/interface/widgets/screenData/ScreenData.ts create mode 100644 App/common/interface/widgets/screenData/ScreenMetaData.ts create mode 100644 App/common/interface/widgets/widgetData/ComparisonWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/FabWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/FooterWithCardWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/GridWithCardWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/HeaderLottieAnimationWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/HeaderWithAssetsWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/SliderWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/SumInsuredWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/TitleSubtitleWithAssetWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/TitleWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/TitleWithAssetsWidgetData.ts create mode 100644 App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts create mode 100644 App/common/modals/modalViewResolver.tsx create mode 100644 App/common/native-module/NativeModules.ts create mode 100644 App/common/navigator/NavigationRouter.ts create mode 100644 App/common/navigator/RnAppCreator.tsx create mode 100644 App/common/redux/index.ts create mode 100644 App/common/redux/rootReducer.js create mode 100644 App/common/redux/screens/action-interfaces/UpdateCtaPayload.ts create mode 100644 App/common/redux/screens/screenActionCreators.ts create mode 100644 App/common/redux/screens/screenReducer.ts create mode 100644 App/common/redux/screens/screenReducerActionTypes.ts create mode 100644 App/common/redux/store.js create mode 100644 App/common/screen/BaseScreen.tsx create mode 100644 App/common/screen/ScreenActionHandler.tsx create mode 100644 App/common/screen/ScreenActionTypes.ts create mode 100644 App/common/screen/screen-mappers/GIScreenMapper.tsx create mode 100644 App/common/screen/screen-mappers/ScreenMapper.tsx create mode 100644 App/common/styles/BaseBottomSheetComponentStyles.ts create mode 100644 App/common/utilities/AlfredUtils.ts create mode 100644 App/common/utilities/CacheUtils.ts create mode 100644 App/common/utilities/CtaParamsUtils.ts create mode 100644 App/common/utilities/MiscUtils.ts create mode 100644 App/common/utilities/MockApiUtil.ts create mode 100644 App/common/utilities/RecordUtils.ts create mode 100644 App/common/utilities/SerializerUtil.ts create mode 100644 App/common/utilities/SharedPreferenceUtils.ts create mode 100644 App/common/utilities/SizeUtils.ts create mode 100644 App/common/utilities/ValidateColors.ts create mode 100644 App/common/widgets/widget-actions/WidgetActionHandler.ts create mode 100644 App/common/widgets/widget-actions/WidgetActionTypes.ts create mode 100644 App/common/widgets/widgetResolver.tsx rename android/README.md => README.md (100%) create mode 100644 android/.gitignore create mode 100644 android/app/src/main/assets/fonts/tt_medium.ttf create mode 100644 android/app/src/main/assets/fonts/tt_regular.ttf create mode 100644 android/app/src/main/assets/fonts/tt_semi_bold.otf create mode 100644 android/app/src/main/java/com/naviapp/react_native/ReactActivity.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/NativePackage.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/ApiConnector.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeNavigatorConnector.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NetworkModuleConnector.kt create mode 100644 android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/PreferenceManagerConnector.kt create mode 100644 android/link-assets-manifest.json create mode 100644 android/navi-common/src/main/java/com/navi/common/callback/RequestToCallbackHandler.kt create mode 100644 android/sentry.properties create mode 100644 assets/colors/colors.ts create mode 100644 assets/fonts/tt_medium.ttf create mode 100644 assets/fonts/tt_regular.ttf create mode 100644 assets/fonts/tt_semi_bold.otf create mode 100644 assets/ic_rn_calendar.png create mode 100644 assets/images/cross.webp create mode 100644 assets/images/help.webp create mode 100644 assets/images/quote_apology_icon.webp create mode 100644 assets/images/sww.webp create mode 100644 babel.config.js create mode 100644 components/AppImage.tsx create mode 100644 components/StyledImage.tsx create mode 100644 components/StyledLottie.tsx create mode 100644 components/ThemeContext.js create mode 100644 components/bottomsheet/BaseBottomSheetComponent.tsx create mode 100644 components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet.tsx create mode 100644 components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheetStyle.ts create mode 100644 components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet.tsx create mode 100644 components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheetStyle.ts create mode 100644 components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet.tsx create mode 100644 components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheetStyle.ts create mode 100644 components/reusable/cta-button/CtaButton.tsx create mode 100644 components/reusable/cta-button/CtaButtonStyle.ts create mode 100644 components/reusable/dashed-separator/DashedSeparator.tsx create mode 100644 components/reusable/dashed-separator/DashedSeparatorStyle.ts create mode 100644 components/reusable/static-header/StaticHeader.tsx create mode 100644 components/reusable/static-header/StaticHeaderStyle.ts create mode 100644 components/widgets/BaseWidget.tsx create mode 100644 components/widgets/ButtonTestWidget.tsx create mode 100644 components/widgets/ComparisonWidget.tsx create mode 100644 components/widgets/HeaderLottieAnimationWidget.tsx create mode 100644 components/widgets/HeaderWithAssetsWidget.tsx create mode 100644 components/widgets/SliderWidget.tsx create mode 100644 components/widgets/TitleWidget.tsx create mode 100644 components/widgets/TitleWithAssetsWidget.tsx create mode 100644 components/widgets/fab/FAB.tsx create mode 100644 components/widgets/fab/FABStyle.ts create mode 100644 components/widgets/footer-with-card-widget/FooterWithCardWidget.tsx create mode 100644 components/widgets/footer-with-card-widget/FooterWithCardWidgetStyle.ts create mode 100644 components/widgets/grid-with-card-widget/GridWithCardWidget.tsx create mode 100644 components/widgets/grid-with-card-widget/GridWithCardWidgetStyle.ts create mode 100644 components/widgets/styled-lottie/StyledLottie.tsx create mode 100644 components/widgets/styled-lottie/StyledLottieComponentStyle.ts create mode 100644 components/widgets/styled-text/StyledText.tsx create mode 100644 components/widgets/styled-text/StyledTextComponentStyle.ts create mode 100644 components/widgets/sum-insured-carousel-widget/SumInsuredWidget.tsx create mode 100644 components/widgets/sum-insured-carousel-widget/SumInsuredWidgetStyles.ts create mode 100644 components/widgets/sum-insured-carousel-widget/component/CarouselItem.tsx create mode 100644 components/widgets/sum-insured-carousel-widget/component/CarouselItemStyles.ts create mode 100644 components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidget.tsx create mode 100644 components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidgetStyle.ts create mode 100644 components/widgets/title-widget/TitleWidget.tsx create mode 100644 components/widgets/title-with-list-widget/TitleWithListWidget.tsx create mode 100644 components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts create mode 100644 index.android.js create mode 100644 index.ios.js create mode 100644 metro.config.js create mode 100644 network/ApiClient.ts create mode 100644 network/NetworkConstant.ts create mode 100644 network/NetworkService.ts create mode 100644 network/NetworkUtils.ts create mode 100644 network/payloads/request/FillApplicationRequest.ts create mode 100644 network/payloads/request/QuoteOfferRequest.ts create mode 100644 network/payloads/response/FillApplicationResponse.ts create mode 100644 network/payloads/response/GenericResponse.ts create mode 100644 network/repo/BuildConfigDetails.ts create mode 100644 network/repo/GiApplicationRepo.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 react-native.config.js create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml index 790d690ebd..1b90917d92 100644 --- a/.github/workflows/android_build.yml +++ b/.github/workflows/android_build.yml @@ -2,9 +2,9 @@ name: Android Build CI on: push: - branches: [ master, release-*, development ] + branches: [ master, release-* ] pull_request: - branches: [ master, release-*, development ] + branches: [ master, release-* ] merge_group: concurrency: @@ -20,7 +20,7 @@ jobs: output: APK build-qa-release: - if: github.event_name == 'push' && (github.ref_name == 'master' || startsWith(github.ref_name, 'release-')) + if: github.event_name == 'push' && startsWith(github.ref_name, 'release-') uses: ./.github/workflows/generate_build.yml with: environment: qa @@ -28,7 +28,7 @@ jobs: output: APK generate-apk-diff: - if: github.event_name == 'pull_request' && github.base_ref == 'development' + if: github.event_name == 'pull_request' && github.base_ref == 'master' uses: ./.github/workflows/generate_apk_diff.yml needs: build-qa-debug secrets: @@ -36,7 +36,7 @@ jobs: AWS_SECRET_KEY_GITHUB_CACHE: ${{ secrets.AWS_SECRET_KEY_GITHUB_CACHE }} upload-apk-to-s3: - if: github.event_name == 'push' && github.ref_name == 'development' + if: github.event_name == 'push' && github.ref_name == 'master' uses: ./.github/workflows/upload_file.yml needs: build-qa-debug secrets: diff --git a/.github/workflows/android_checkstyle.yml b/.github/workflows/android_checkstyle.yml index 3a4c210d08..2a4963b29f 100644 --- a/.github/workflows/android_checkstyle.yml +++ b/.github/workflows/android_checkstyle.yml @@ -2,7 +2,7 @@ name: Android Checkstyle CI on: pull_request: - branches: [ master, release-*, development ] + branches: [ master, release-* ] merge_group: concurrency: @@ -18,8 +18,12 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - - name: Fetch origin/development - run: git fetch origin development + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18.18.0 + - name: Install Node Modules + run: npm install - name: Set up JDK 17 uses: actions/setup-java@v4 with: diff --git a/.github/workflows/generate_build.yml b/.github/workflows/generate_build.yml index 7cbdc199fa..aa84433f04 100644 --- a/.github/workflows/generate_build.yml +++ b/.github/workflows/generate_build.yml @@ -74,6 +74,12 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18.18.0 + - name: Install Node Modules + run: npm install - name: Override Version Code if: github.event_name == 'workflow_dispatch' && inputs.version_code != '' run: sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = ${{ inputs.version_code }}/g' app/build.gradle diff --git a/.github/workflows/metrics_logger.yml b/.github/workflows/metrics_logger.yml index a224546c09..078b00b28e 100644 --- a/.github/workflows/metrics_logger.yml +++ b/.github/workflows/metrics_logger.yml @@ -25,6 +25,12 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18.18.0 + - name: Install Node Modules + run: npm install - name: Log Build Metadata run: | echo "Commit SHA: ${{ github.sha }}" diff --git a/.github/workflows/security_api_diff_monitor.yml b/.github/workflows/security_api_diff_monitor.yml index ac41fb3158..5d5a0591ec 100644 --- a/.github/workflows/security_api_diff_monitor.yml +++ b/.github/workflows/security_api_diff_monitor.yml @@ -3,7 +3,7 @@ name: Security API Diff Monitor on: pull_request: branches: - - development + - master types: [ opened, edited, synchronize, reopened ] merge_group: diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 8a5b34f294..95f89d02d4 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -6,7 +6,6 @@ on: branches: - master - main - - development - release-* schedule: - cron: '30 4 * * MON' diff --git a/.github/workflows/validate_release_pr.yml b/.github/workflows/validate_release_pr.yml index 206266da1f..b3bca8a6c2 100644 --- a/.github/workflows/validate_release_pr.yml +++ b/.github/workflows/validate_release_pr.yml @@ -23,7 +23,7 @@ jobs: run: | echo "ORIGINAL_PR_NUMBER=$(echo "${{ github.event.pull_request.body }}" | grep -o "https://github.com/${{ github.repository }}/pull/[0-9]*" | grep -o "[0-9]*")" >> $GITHUB_ENV echo "CURRENT_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV - - name: Verification Step 1 - Link to development PR is added in release PR Body + - name: Verification Step 1 - Link to master PR is added in release PR Body if: always() run: | ORIGINAL_PR_URL="https://github.com/${{ github.repository }}/pull/$ORIGINAL_PR_NUMBER" @@ -33,10 +33,10 @@ jobs: echo "Pull request body: ${{ github.event.pull_request.body }}" if [[ "${{ github.event.pull_request.body }}" != *"$ORIGINAL_PR_URL"* ]]; then - echo "Link to original PR raised against development branch not found in current PR body" + echo "Link to original PR raised against master branch not found in current PR body" exit 1 fi - - name: Verification Step 2 - release PR Title matches development PR Title + - name: Verification Step 2 - release PR Title matches master PR Title if: always() run: | ORIGINAL_PR_TITLE=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$ORIGINAL_PR_NUMBER" | jq -r .title) @@ -46,53 +46,53 @@ jobs: echo "Current PR title extracted: ${{ github.event.pull_request.title }}" if [[ "${{ github.event.pull_request.title }}" != "$ORIGINAL_PR_TITLE" ]]; then - echo "Current PR title does not match original PR title raised against development branch" + echo "Current PR title does not match original PR title raised against master branch" exit 1 fi - - name: Verification Step 3 - development PR is Merged + - name: Verification Step 3 - master PR is Merged if: always() run: | ORIGINAL_PR_IS_MERGED=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$ORIGINAL_PR_NUMBER" | jq -r '.merged') BASE_REF_BRANCH=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$ORIGINAL_PR_NUMBER" | jq -r '.base.ref') - if [[ "$ORIGINAL_PR_IS_MERGED" == "true" && "$BASE_REF_BRANCH" == "development" ]]; then - echo "Original PR is merged into development branch" + if [[ "$ORIGINAL_PR_IS_MERGED" == "true" && "$BASE_REF_BRANCH" == "master" ]]; then + echo "Original PR is merged into master branch" else echo "Original PR number: $ORIGINAL_PR_NUMBER" echo "Original PR merge status: $ORIGINAL_PR_IS_MERGED" echo "Base branch: $BASE_REF_BRANCH" - echo "Status: Fail. Original PR is not merged in development branch." + echo "Status: Fail. Original PR is not merged in master branch." exit 1 fi - - name: Verification Step 4 - release PR is exactly same as development PR + - name: Verification Step 4 - release PR is exactly same as master PR if: always() run: | # Get the JSON response for the first pull request - response_pr_development=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$ORIGINAL_PR_NUMBER/files") - files_pr_development=$(echo "$response_pr_development" | jq -r '.[].filename') + response_pr_master=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$ORIGINAL_PR_NUMBER/files") + files_pr_master=$(echo "$response_pr_master" | jq -r '.[].filename') # Get the JSON response for the second pull request response_pr_release=$(curl -L -H "Authorization: Bearer ${{ secrets.GH_PAT_RO }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$CURRENT_PR_NUMBER/files") files_pr_release=$(echo "$response_pr_release" | jq -r '.[].filename') # Compare the lists of changed files - if [ "$files_pr_development" != "$files_pr_release" ]; then + if [ "$files_pr_master" != "$files_pr_release" ]; then echo "Pull requests have different sets of changed files." exit 1 fi # Loop through each file and compare added and deleted lines - for file in $details_pr_development; do - details_pr_development=($(echo "$response_pr_development" | jq -r --arg file "$file" '.[] | select(.filename == $file) | .additions, .deletions')) + for file in $details_pr_master; do + details_pr_master=($(echo "$response_pr_master" | jq -r --arg file "$file" '.[] | select(.filename == $file) | .additions, .deletions')) details_pr_release=($(echo "$response_pr_release" | jq -r --arg file "$file" '.[] | select(.filename == $file) | .additions, .deletions')) - added_lines_pr_development="${details_pr_development[0]}" - deleted_lines_pr_development="${details_pr_development[1]}" + added_lines_pr_master="${details_pr_master[0]}" + deleted_lines_pr_master="${details_pr_master[1]}" added_lines_pr_release="${details_pr_release[0]}" deleted_lines_pr_release="${details_pr_release[1]}" - if [ "$added_lines_pr_development" != "$added_lines_pr_release" ] || [ "$deleted_lines_pr_development" != "$deleted_lines_pr_release" ]; then + if [ "$added_lines_pr_master" != "$added_lines_pr_release" ] || [ "$deleted_lines_pr_master" != "$deleted_lines_pr_release" ]; then echo "File $file has different added or deleted lines in the two pull requests." exit 1 fi diff --git a/.gitignore b/.gitignore index 4cf9d9ebc4..4106a19bcc 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,8 @@ local.env # Local build cache build-cache api-credentials.json +node_modules/*/android/build/* +node_modules +config.js +android/navi-base/.cxx/* +android/npci-upi-cl/build/* \ No newline at end of file diff --git a/App.tsx b/App.tsx new file mode 100644 index 0000000000..c6b2f98247 --- /dev/null +++ b/App.tsx @@ -0,0 +1,57 @@ +import { Component } from "react"; +import codePush from "react-native-code-push"; +import { CtaData } from "./App/common/interface"; +import RnApp from "./App/common/navigator/RnAppCreator"; +import { getBuildConfigDetails, setBuildConfigDetails } from "./App/common/utilities/CacheUtils"; +import { logToSentry } from "./App/common/hooks/useSentryLogging"; + +export default class App extends Component<{}> { + checkForUpdates = () => { + let flavor: string | undefined + getBuildConfigDetails().then((res) => { + flavor = res?.baseUrl + }) + codePush.sync({ + updateDialog: flavor && flavor === "QA" ? {appendReleaseDescription: true} : {appendReleaseDescription: false}, + installMode: codePush.InstallMode.IMMEDIATE, + mandatoryInstallMode: codePush.InstallMode.IMMEDIATE, + }); + }; + + getInitialCta = (): CtaData | undefined => { + const { CtaData } = this.props as any; + + if (!CtaData) { + logToSentry( + `CtaData is missing or invalid: ${CtaData} | MethodName: getInitialCta` + ); + return; + } + + try { + const cta = JSON.parse(CtaData) as CtaData; + return cta; + } catch (error) { + logToSentry( + `Error parsing CtaData: ${CtaData} | Error: ${error} | MethodName: getInitialCta` + ); + return; + } + }; + + + override componentDidMount(): void { + setBuildConfigDetails() + this.checkForUpdates(); + } + + override render() { + const cta = this.getInitialCta(); + if (!!cta) { + return RnApp.create(cta); + } else { + // return error screen + } + } +} +//return RnNavigator.navigate(screenBundle); \ No newline at end of file diff --git a/App/Container/Navi-Insurance/Styles/index.ts b/App/Container/Navi-Insurance/Styles/index.ts new file mode 100644 index 0000000000..ad837bc2ea --- /dev/null +++ b/App/Container/Navi-Insurance/Styles/index.ts @@ -0,0 +1,28 @@ +import { StyleSheet } from "react-native"; + +export const commonStyles = StyleSheet.create({ + container: { + backgroundColor: "red", + }, + fullscreencenter: { + justifyContent: "center", + alignItems: "center", + flex: 1, + }, + flex_1: { + flex: 1, + }, + verticalSpacer32: { + height: 32, + }, + selfAlignCenter: { + alignSelf: "center", + }, + contentAlignLeft: { + flexDirection: "column", + alignItems: "flex-start", + }, + height54: { + height: 54, + }, +}); diff --git a/App/Container/Navi-Insurance/index.ts b/App/Container/Navi-Insurance/index.ts new file mode 100644 index 0000000000..c24465403c --- /dev/null +++ b/App/Container/Navi-Insurance/index.ts @@ -0,0 +1,9 @@ +import IntroScreen from "./screen/IntroScreen"; +import InsuranceLandingPageScreen from "./screen/InsuranceLandingPageScreen"; +import QuoteOfferScreen from "./screen/quote-offer-screen/QuoteOfferScreen"; + +export { + IntroScreen, + InsuranceLandingPageScreen, + QuoteOfferScreen, +}; diff --git a/App/Container/Navi-Insurance/network/QuotePageApi.ts b/App/Container/Navi-Insurance/network/QuotePageApi.ts new file mode 100644 index 0000000000..9bd24b3f84 --- /dev/null +++ b/App/Container/Navi-Insurance/network/QuotePageApi.ts @@ -0,0 +1,13 @@ +import { getXTargetHeaderInfo } from "../../../../network/ApiClient"; +import { get, post, patch } from "../../../../network/NetworkService"; +import { GI } from "../../../common/constants/NavigationHandlerConstants"; +import { ScreenData } from "../../../common/interface/widgets/screenData/ScreenData"; + +export interface SumInsuredRequestData { + sumInsured: string; +} + +export const updateSumInsuredData = async (data: SumInsuredRequestData, quoteId: string) => { + const url = `v3/quotes/${quoteId}`; + return patch>(url, data, getXTargetHeaderInfo(GI.toLocaleUpperCase())); +}; diff --git a/App/Container/Navi-Insurance/screen/InsuranceLandingPageScreen.tsx b/App/Container/Navi-Insurance/screen/InsuranceLandingPageScreen.tsx new file mode 100644 index 0000000000..134bc32db6 --- /dev/null +++ b/App/Container/Navi-Insurance/screen/InsuranceLandingPageScreen.tsx @@ -0,0 +1,147 @@ +import React, { useEffect, useState } from "react"; +import { + Animated, + NativeScrollEvent, + NativeSyntheticEvent, + ScrollView, + View, + StyleSheet +} from "react-native"; +import { + BaseActionTypes, + GenericActionPayload, +} from "../../../common/actions/GenericAction"; +import { CtaData, CtaType } from "../../../common/interface"; +import { Widget } from "../../../common/interface/widgets/Widget"; +import { ScreenData } from "../../../common/interface/widgets/screenData/ScreenData"; +import { NativeDeeplinkNavigatorModule } from "../../../common/native-module/NativeModules"; +import Colors from "../../../../assets/colors/colors"; +import BaseWidget from "../../../../components/widgets/BaseWidget"; +import { ScreenActionTypes } from "../../../common/screen/ScreenActionTypes"; + +const InsuranceLandingPageScreen = ({ + ctaData, + screenData, + handleActions, +}: { + ctaData: CtaData; + screenData: ScreenData | null; + handleActions: (screenPayload?: GenericActionPayload) => void; +}) => { + const [scrollY, setScrollY] = useState(0); + + const handleScroll = (event: NativeSyntheticEvent) => { + setScrollY(event.nativeEvent.contentOffset.y); + }; + + const headerBackgroundColor = + scrollY > 84 ? Colors.aliceBlue : Colors.transparent; + + const handleClick = (cta?: CtaData) => { + if (!cta) return; // Handle case when cta is undefined or null + + try { + switch (cta.type) { + case CtaType.DEEP_LINK: + case CtaType.USE_ROOT_DEEPLINK_NAVIGATOR: + NativeDeeplinkNavigatorModule.navigateToNaviInsuranceDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + default: + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + } + } catch (error) { + // #TODO: Handle the error gracefully using Sentry. + console.error("Error while navigating to deep link:", error); + } + }; + + useEffect(() => { + handleActions({ + baseActionType: BaseActionTypes.SCREEN_ACTION, + metaData: [ + { + actionType: ScreenActionTypes.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND, + }, + ], + }); + }, []); + + return ( + + + {getWidgetViews( + screenData?.screenWidgets?.headerWidgets, + handleActions, + handleClick + )} + + + {getWidgetViews( + screenData?.screenWidgets?.contentWidgets, + handleActions, + handleClick + )} + + + {getWidgetViews( + screenData?.screenWidgets?.footerWidgets, + handleActions, + handleClick + )} + + + ); +}; + +function getWidgetViews( + widgetList: Widget[] | undefined, + handleActions: (screenActionPayload?: GenericActionPayload) => void, + handleClick?: (ctaData: CtaData) => void +): React.JSX.Element { + return ( + + {widgetList?.map((widget, index) => { + return ( + + ); + })} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + flexDirection: "column", + }, + header: { + alignItems: "stretch", + position: "absolute", + zIndex: 1, + }, + content: { + flexGrow: 1 + }, + footer: { + alignItems: "stretch" + }, +}); + +export default InsuranceLandingPageScreen; diff --git a/App/Container/Navi-Insurance/screen/IntroScreen.tsx b/App/Container/Navi-Insurance/screen/IntroScreen.tsx new file mode 100644 index 0000000000..1850d47bdc --- /dev/null +++ b/App/Container/Navi-Insurance/screen/IntroScreen.tsx @@ -0,0 +1,22 @@ +import React, { useEffect } from "react"; +import { Text, View } from "react-native"; +import { getApplicationId } from "../../../../network/repo/GiApplicationRepo"; +import { CtaData } from "../../../common/interface"; + +const IntroScreen: React.FC<{ ctaData: CtaData }> = ({ ctaData }) => { + useEffect(() => { + getApplicationId().then( + (result) => + // console.log("klogs",result.data) + result.data + ); + }, []); + + return ( + + hello + + ); +}; + +export default IntroScreen; diff --git a/App/Container/Navi-Insurance/screen/MemberDetailsScreen.tsx b/App/Container/Navi-Insurance/screen/MemberDetailsScreen.tsx new file mode 100644 index 0000000000..45a036432f --- /dev/null +++ b/App/Container/Navi-Insurance/screen/MemberDetailsScreen.tsx @@ -0,0 +1,274 @@ +import React, { useEffect, useState } from "react"; +import { + View, + Text, + StyleSheet, + Dimensions, + ScrollView, + Pressable, + ToastAndroid, +} from "react-native"; +import { CtaData } from "../../../common/interface"; +import { + fillApplication, + getApplicationId, +} from "../../../../network/repo/GiApplicationRepo"; +import { GetWidgetView } from "../../../common/widgets/widgetResolver"; +import { CtaNavigator } from "../../../common/navigator/NavigationRouter"; +import { MemberDetailsRootObject } from "../../../common/interface/MemberDetailsResponse"; + +const { width } = Dimensions.get("window"); + +const MemberDetailScreen: React.FC<{ ctaData: CtaData }> = ({ ctaData }) => { + const [screenData, setScreenData] = useState< + MemberDetailsRootObject | undefined + >(); + const [dataFromChild, setDataFromChild] = useState([]); + const [isDataValid, setIsDataValid] = useState(true); + + useEffect(() => { + getApplicationId().then((result) => { + setScreenData(result.data); + }); + }, []); + + const sendDataToBackend = () => { + const widgetList = + screenData?.currentScreenDefinition?.screenData?.screenStructure?.content + ?.widgets; + if ( + isDataValid === true && + widgetList && + dataFromChild.length == (widgetList.length - 1) * 2 + ) { + fillApplication( + screenData?.applicationResponse?.applicationId || "", + dataFromChild + ).then((fillApplicationResponse) => { + const cta: CtaData = { + url: "react/member_selection", + }; + CtaNavigator.navigate(cta); + }); + } else { + ToastAndroid.show("Please fill all data", ToastAndroid.SHORT); + } + }; + + const checkValidity = (updatedData: any[]) => { + let isValid = true; + updatedData.map((item) => { + if ( + item.value === undefined || + item.value === null || + item.value === "" + ) { + isValid = false; + } + }); + setIsDataValid(isValid); + }; + + // Callback function to receive data from the child component + const handleDataFromChild = (index: number, data: any) => { + let updatedData: any[] = [...dataFromChild]; + let isPresent = false; + updatedData.map((oldData) => { + // if the key is present replace existing. + if (oldData.key === data.key) { + isPresent = true; + oldData.value = data.value; + if ( + oldData.value === undefined || + oldData.value === null || + oldData.value === "" + ) { + setIsDataValid(false); + } else { + checkValidity(updatedData); + } + } + }); + + if (!isPresent) { + updatedData = [...updatedData, data]; + } + + console.log(updatedData); + + // updatedData[index] = data; + setDataFromChild(updatedData); + console.log(); + }; + + useEffect(() => { + console.log("HLOGS", screenData); + }, [screenData]); + + const getScreenContent = () => { + return ( + + + {/* Content */} + + {screenData?.currentScreenDefinition?.screenData?.screenStructure?.content?.widgets.map( + (widget: Widget, index: number) => { + //setDataFromChild((prevData) => [...prevData, {}]) + return GetWidgetView.getWidget( + widget, + handleDataFromChild, + index - 1 + ); + } + )} + + + {/* Footer */} + {/* Green Tag */} + + + { + screenData?.currentScreenDefinition?.screenData?.screenStructure + ?.footer?.widgetData?.banner?.text + } + + + + + + { + screenData?.currentScreenDefinition?.screenData?.screenStructure + ?.footer?.widgetData?.leftTopUnstrikedText?.text + }{" "} + + { + screenData?.currentScreenDefinition?.screenData + ?.screenStructure?.footer?.widgetData?.leftTopStrikedText + ?.text + } + + + + + { + screenData?.currentScreenDefinition?.screenData?.screenStructure + ?.footer?.widgetData?.leftBottomText?.text + }{" "} + > + + + sendDataToBackend()} + > + + { + screenData?.currentScreenDefinition?.screenData?.screenStructure + ?.footer?.widgetData?.rightCta?.title?.text + } + + + + + ); + }; + + return {getScreenContent()}; +}; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: "#FAFAFA", + }, + content: { + flex: 1, + paddingVertical: 20, + }, + footer: { + elevation: 10, + backgroundColor: "#FFFFFF", + paddingHorizontal: 16, + paddingBottom: 32, + paddingTop: 20, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + }, + infoContainer: { + flexDirection: "column", + justifyContent: "center", + alignItems: "center", + }, + infoTopText: { + fontSize: 18, + fontWeight: "500", + color: "#191919", + alignSelf: "flex-start", + }, + strikeOffText: { + fontSize: 14, + fontWeight: "500", + color: "#6B6B6B", + alignSelf: "flex-start", + textDecorationLine: "line-through", + }, + strikeOffSubText: { + fontSize: 14, + fontWeight: "500", + color: "#6B6B6B", + alignSelf: "flex-start", + textDecorationLine: "line-through", + }, + infoBottomText: { + fontSize: 12, + fontWeight: "bold", + color: "#1f002a", + marginTop: 4, + }, + buttonContainer: { + backgroundColor: "#1F002A", + height: 48, + width: 148, + borderRadius: 4, + justifyContent: "center", + alignItems: "center", + }, + buttonText: { + color: "white", + fontWeight: "bold", + }, + greenTag: { + elevation: 10, + backgroundColor: "#E7F8EE", + width: width, + height: 32, + justifyContent: "center", + paddingLeft: 16, + borderTopLeftRadius: 16, + borderTopRightRadius: 16, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, + }, + greenTagText: { + fontSize: 12, + color: "#22A940", + textAlign: "center", + fontWeight: "bold", + }, +}); + +export default MemberDetailScreen; diff --git a/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreen.tsx b/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreen.tsx new file mode 100644 index 0000000000..63e9c1389b --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreen.tsx @@ -0,0 +1,78 @@ +import { TouchableOpacity, View, Text } from "react-native"; +import { GenericActionPayload } from "../../../../common/actions/GenericAction"; +import { CtaData, CtaType } from "../../../../common/interface"; +import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; +import { AppImage } from "../../../../../components/AppImage"; +import { + ImageName, + QUOTE_APOLOGY_BUTTON, + QUOTE_APOLOGY_SUBTITLE, + QUOTE_APOLOGY_TITLE, +} from "../../../../common/constants/StringConstant"; +import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; +import { styles } from "./QuoteApologyScreenStyle"; +import { StaticHeader } from "../../../../../components/reusable/static-header/StaticHeader"; +import { ConstantCta } from "../../../../common/constants/CtaConstants"; + +const QuoteApologyScreen = ({ + ctaData, + screenData, + handleActions, +}: { + ctaData: CtaData; + screenData: ScreenData | null; + handleActions: (screenPayload?: GenericActionPayload) => void; +}) => { + const handleClick = (cta?: CtaData) => { + if (!cta) return; // Handle case when cta is undefined or null + + try { + switch (cta.type) { + case CtaType.DEEP_LINK: + case CtaType.USE_ROOT_DEEPLINK_NAVIGATOR: + NativeDeeplinkNavigatorModule.navigateToNaviInsuranceDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + default: + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + } + } catch (error) { + // #TODO: Handle the error gracefully using Sentry. + console.error("Error while navigating to deep link:", error); + } + }; + const onPress = () => { + handleClick && handleClick(ConstantCta.QUOTE_APOLOGY_FOOTER_BUTTON); + }; + + return ( + + + + + + + {AppImage(ImageName.QUOTE_APOLOGY_ICON, styles.centerIcon)} + {QUOTE_APOLOGY_TITLE} + {QUOTE_APOLOGY_SUBTITLE} + + + {QUOTE_APOLOGY_BUTTON} + + + ); +}; + +export default QuoteApologyScreen; diff --git a/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreenStyle.ts b/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreenStyle.ts new file mode 100644 index 0000000000..502c9e410c --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreenStyle.ts @@ -0,0 +1,55 @@ +import { StyleSheet } from "react-native"; + +export const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "space-between", + backgroundColor: "white", + }, + centerContent: { + justifyContent: "center", + alignItems: "center" + }, + headerBorder: { + width: "100%", + height: 1, + backgroundColor: "#F0F0F0" + }, + centerIcon: { + width: 225, + height: 225 + }, + title: { + fontSize: 16, + lineHeight: 22, + fontFamily: "tt_medium", + color: "#191919", + textAlign: "center", + marginTop: 16, + marginHorizontal: 20 + }, + subtitle: { + fontSize: 14, + lineHeight: 22, + fontFamily: "tt_regular", + color: "#4D4D4D", + textAlign: "center", + marginTop: 16, + marginHorizontal: 20 + }, + footerButton: { + padding: 16, + marginHorizontal: 16, + marginVertical: 16, + backgroundColor: "#1F002A", + borderRadius: 4, + justifyContent: "center", + alignItems: "center", + }, + buttonText: { + color: "white", + fontSize: 14, + lineHeight: 22, + fontFamily: "tt_medium", + }, +}); diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx new file mode 100644 index 0000000000..fbe5863249 --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx @@ -0,0 +1,268 @@ +import React, { useEffect } from "react"; +import { + NativeEventEmitter, + NativeScrollEvent, + NativeSyntheticEvent, + StatusBar, + View, +} from "react-native"; +import Animated, { + useAnimatedStyle, + useSharedValue, +} from "react-native-reanimated"; +import Colors from "../../../../../assets/colors/colors"; +import BaseWidget from "../../../../../components/widgets/BaseWidget"; +import { + BaseActionTypes, + GenericActionPayload, +} from "../../../../common/actions/GenericAction"; +import { + HI_RN_QUOTE_PAGE_ERROR_VIEW, + HI_RN_QUOTE_PAGE_INIT, +} from "../../../../common/constants/AnalyticsEventsConstant"; +import { NativeEventNameConstants } from "../../../../common/constants/EventNameConstants"; +import { + HEADER_LOTTIE_TITLE_HEIGHT, + HEADER_LOTTIE_WIDGET_HEIGHT, +} from "../../../../common/constants/NumericalConstants"; +import { sendAsAnalyticsEvent } from "../../../../common/hooks/useAnalyticsEvent"; +import { AnalyticsEvent, CtaData, CtaType } from "../../../../common/interface"; +import { Widget } from "../../../../common/interface/widgets/Widget"; +import { ScreenData } from "../../../../common/interface/widgets/screenData/ScreenData"; +import { NativeDeeplinkNavigatorModule } from "../../../../common/native-module/NativeModules"; +import { ScreenState } from "../../../../common/screen/BaseScreen"; +import { ScreenActionTypes } from "../../../../common/screen/ScreenActionTypes"; +import styles from "./QuoteOfferScreenStyle"; +import QuoteOfferErrorScreen from "./error-screen/QuoteOfferErrorScreen"; +import QuoteOfferShimmerScreen from "./shimmer-screen/QuoteOfferShimmerScreen"; +import { logToSentry } from "../../../../common/hooks/useSentryLogging"; + +const QuoteOfferScreen = ({ + ctaData, + screenData, + handleActions, +}: { + ctaData: CtaData; + screenData: ScreenData | null; + handleActions: (screenPayload?: GenericActionPayload) => void; +}) => { + const y = useSharedValue(0); + // TODO: check and remove below code if it is working fine in release. + // const onScroll = useAnimatedScrollHandler({ + // onScroll: (event) => { + // y.value = event.contentOffset.y; + // }, + // }); + + const onScroll = (event: NativeSyntheticEvent) => { + y.value = event.nativeEvent.contentOffset.y; + }; + + const headerBgStyle = useAnimatedStyle(() => { + return { + backgroundColor: + y.value > HEADER_LOTTIE_WIDGET_HEIGHT + ? Colors.grey + : y.value > HEADER_LOTTIE_TITLE_HEIGHT + ? Colors.aliceBlue + : Colors.transparent, + }; + }); + + const screenOverlayStyle = + screenData?.screenState === ScreenState.OVERLAY + ? { opacity: 1 } + : { opacity: 1 }; + + let preQuoteId: string | undefined | null = undefined; + let quoteId: string | undefined | null = undefined; + ctaData?.parameters?.forEach((item) => { + if (item.key === "preQuoteId") { + preQuoteId = item.value; + } + if (item.key === "quoteId") { + quoteId = item.value; + } + }); + + const handleClick = (cta?: CtaData) => { + if (!cta) { + logToSentry( + `Navigation cta is missing or invalid: ${cta} | MethodName: handleClick}` + ); + return; + } + + try { + switch (cta.type) { + case CtaType.DEEP_LINK: + case CtaType.USE_ROOT_DEEPLINK_NAVIGATOR: + NativeDeeplinkNavigatorModule.navigateToNaviInsuranceDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + default: + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify(cta) + ); + break; + } + } catch (error) { + logToSentry( + `Error while navigating to deep link with CTA: ${cta} | MethodName: handleClick}` + ); + } + }; + + useEffect(() => { + const screenActionType = preQuoteId + ? ScreenActionTypes.FETCH_QUOTE_V3 + : ScreenActionTypes.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND; + const data: QuoteOfferRequest = { + preQuoteId: preQuoteId ? preQuoteId : undefined, + quoteId: quoteId ? quoteId : undefined, + }; + const nativeEventListener = new NativeEventEmitter(); + let reloadPageEventListener = nativeEventListener.addListener( + NativeEventNameConstants.reloadPage, + (event) => { + if (event === true) { + handleActions({ + baseActionType: BaseActionTypes.SCREEN_ACTION, + metaData: [ + { + actionType: screenActionType, + data: data, + }, + ], + }); + } + } + ); + handleActions({ + baseActionType: BaseActionTypes.SCREEN_ACTION, + metaData: [ + { + actionType: screenActionType, + data: data, + }, + ], + }); + return () => { + nativeEventListener.removeAllListeners( + NativeEventNameConstants.reloadPage + ); + }; + }, [ctaData, preQuoteId, quoteId]); + + useEffect(() => { + switch (screenData?.screenState) { + case ScreenState.LOADED: + const initEvent: AnalyticsEvent = { + name: HI_RN_QUOTE_PAGE_INIT, + }; + sendAsAnalyticsEvent(initEvent); + break; + case ScreenState.ERROR: + const errorEvent: AnalyticsEvent = { + name: HI_RN_QUOTE_PAGE_ERROR_VIEW, + }; + sendAsAnalyticsEvent(errorEvent); + break; + default: + break; + } + }, [screenData?.screenState]); + + useEffect(() => { + if ( + screenData?.screenState !== ScreenState.ERROR && + screenData?.screenState !== ScreenState.LOADING + ) { + handleClick(screenData?.screenMetaData?.redirectionCta); + } + }, [screenData?.screenMetaData?.redirectionCta]); + + if (screenData?.screenState === ScreenState.LOADING) { + return ; + } else if (screenData?.screenState === ScreenState.ERROR) { + return ( + + ); + } else { + return ( + + + + {getWidgetViews( + screenData?.screenWidgets?.headerWidgets, + handleActions, + screenData?.screenState, + handleClick + )} + + + {getWidgetViews( + screenData?.screenWidgets?.contentWidgets, + handleActions, + screenData?.screenState, + handleClick + )} + + + {getWidgetViews( + screenData?.screenWidgets?.footerWidgets, + handleActions, + screenData?.screenState, + handleClick + )} + + + ); + } +}; + +function getWidgetViews( + widgetList: Widget[] | undefined, + handleActions: (screenActionPayload?: GenericActionPayload) => void, + screenState?: ScreenState | null, + handleClick?: (ctaData: CtaData) => void +): React.JSX.Element { + return ( + + {widgetList?.map((widget, index) => { + return ( + + ); + })} + + ); +} + +export default QuoteOfferScreen; \ No newline at end of file diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreenStyle.ts b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreenStyle.ts new file mode 100644 index 0000000000..64fd4e4796 --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreenStyle.ts @@ -0,0 +1,21 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + container: { + flex: 1, + flexDirection: "column", + }, + header: { + alignItems: "stretch", + position: "absolute", + zIndex: 1, + }, + content: { + flexGrow: 1, + }, + footer: { + alignItems: "stretch", + }, +}); + +export default styles; diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreen.tsx b/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreen.tsx new file mode 100644 index 0000000000..1b9f230e30 --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreen.tsx @@ -0,0 +1,52 @@ +import { View, Text } from "react-native"; +import { GenericActionPayload } from "../../../../../common/actions/GenericAction"; +import { CtaData } from "../../../../../common/interface"; +import { StaticHeader } from "../../../../../../components/reusable/static-header/StaticHeader"; +import { styles } from "./QuoteOfferErrorScreenStyle"; +import { TouchableOpacity } from "react-native-gesture-handler"; +import { + ERROR_SUBTITLE, + ERROR_TITLE, + RETRY, + ImageName, +} from "../../../../../common/constants/StringConstant"; +import { AppImage } from "../../../../../../components/AppImage"; +import { ConstantCta } from "../../../../../common/constants/CtaConstants"; + +const QuoteOfferErrorScreen = ({ + errorMetaData, + handleActions, + handleClick, +}: { + errorMetaData?: GenericActionPayload; + handleActions?: (screenPayload?: GenericActionPayload) => void; + handleClick?: (cta: CtaData) => void; +}) => { + const onPress = () => { + handleActions && handleActions(errorMetaData); + }; + + return ( + + + + {AppImage(ImageName.SWW, styles.centerIcon)} + {ERROR_TITLE} + {ERROR_SUBTITLE} + + + {RETRY} + + + ); +}; + +export default QuoteOfferErrorScreen; diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreenStyle.ts b/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreenStyle.ts new file mode 100644 index 0000000000..f8bf0b4c0a --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/error-screen/QuoteOfferErrorScreenStyle.ts @@ -0,0 +1,48 @@ +import { StyleSheet } from "react-native"; + +export const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: "space-between", + backgroundColor: "white", + }, + centerContent: { + justifyContent: "center", + alignItems: "center", + }, + centerIcon: { + width: 125, + height: 125, + }, + errorTitle: { + fontSize: 16, + lineHeight: 22, + fontFamily: "tt_semi_bold", + color: "#191919", + textAlign: "center", + marginTop: 32, + }, + errorSubtitle: { + fontSize: 14, + lineHeight: 22, + fontFamily: "tt_regular", + color: "#6B6B6B", + textAlign: "center", + marginTop: 16, + }, + retryButton: { + padding: 16, + marginHorizontal: 16, + marginVertical: 32, + backgroundColor: "#1F002A", + borderRadius: 4, + justifyContent: "center", + alignItems: "center", + }, + buttonText: { + color: "white", + fontSize: 14, + lineHeight: 22, + fontFamily: "tt_semi_bold", + }, +}); diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreen.tsx b/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreen.tsx new file mode 100644 index 0000000000..53697877c4 --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreen.tsx @@ -0,0 +1,87 @@ +import { View } from "react-native"; +import SkeletonPlaceholder from "react-native-skeleton-placeholder"; +import Colors from "../../../../../../assets/colors/colors"; +import styles from "./QuoteOfferShimmerScreenStyle"; +import { StaticHeader } from "../../../../../../components/reusable/static-header/StaticHeader"; +import { CtaData } from "../../../../../common/interface"; +import { ConstantCta } from "../../../../../common/constants/CtaConstants"; + +const QuoteOfferShimmerScreen = ({ + handleClick, +}: { + handleClick?: (ctaData: CtaData) => void; +}) => { + return ( + + + + + + + + ); +}; + +export default QuoteOfferShimmerScreen; + +const HeaderShimmer = () => { + return ( + + + + + + + + ); +}; + +const ContentShimmer = () => { + return ( + + + + + + + + + + + ); +}; + +const FooterShimmer = () => { + return ( + + + + + + + + ); +}; diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreenStyle.ts b/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreenStyle.ts new file mode 100644 index 0000000000..510282fa9a --- /dev/null +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/shimmer-screen/QuoteOfferShimmerScreenStyle.ts @@ -0,0 +1,108 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + shimmerHeader: { + alignItems: "stretch", + position: "absolute", + zIndex: 1, + }, + shimmerContent: {}, + shimmerFooterContainer: { + height: 100, + zIndex: 2, + position: "absolute", + bottom: 0, + }, + container: { + flex: 1, + flexDirection: "column", + justifyContent: "center", + }, + header: { + position: "absolute", + top: 0, + width: "100%", + backgroundColor: "white", + }, + content: { + marginTop: 88, + flexGrow: 1, + marginHorizontal: 16, + }, + footer: { + borderTopStartRadius: 16, + borderTopEndRadius: 16, + shadowColor: "black", + shadowOpacity: 0.26, + shadowOffset: { width: 0, height: 2 }, + shadowRadius: 10, + elevation: 3, + backgroundColor: "white", + }, + shimmerLayout1: { + position: "relative", + marginTop: 12, + + height: 152, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, + shimmerLayout2: { + position: "relative", + marginTop: 24, + + height: 78, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, + shimmerLayout3: { + position: "relative", + marginTop: 24, + + height: 148, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, + shimmerLayout4: { + position: "relative", + + marginTop: 24, + height: 35, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, + + shimmerFooterLayout: { + position: "relative", + marginHorizontal: 16, + marginTop: 16, + marginBottom: 24, + height: 49, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, + + shimmerHeaderLayout: { + position: "relative", + marginHorizontal: 16, + marginTop: 16, + marginBottom: 24, + height: 49, + alignItems: "center", + borderRadius: 4, + flexShrink: 0, + gap: 10.5, + }, +}); + +export default styles; diff --git a/App/common/actions/GenericAction.ts b/App/common/actions/GenericAction.ts new file mode 100644 index 0000000000..a628ee0674 --- /dev/null +++ b/App/common/actions/GenericAction.ts @@ -0,0 +1,37 @@ +import { Dispatch, SetStateAction } from "react"; +import { AnalyticsEvent, CtaData } from "../interface"; +import { ScreenData } from "../interface/widgets/screenData/ScreenData"; +import { ScreenState } from "../screen/BaseScreen"; + +export interface GenericActionPayload { + baseActionType?: string; + type?: string; // type is used for analytics seggregations and also screen level API call or handling seggregation + metaData?: ActionMetaData[]; + ctaData?: CtaData; + setScreenData?: Dispatch>; + setScreenState?: Dispatch>; + setErrorMetaData?: Dispatch>; + screenData?: ScreenData | null; +} + +export interface ActionMetaData { + actionType?: string; + // ActionMetaData has some key attributes required to perform any action e.g. critical widget communications i.e. inter/intra widget, screen level API calls, bottom sheet, modal, etc. + data?: any; + analyticsEventProperties?: AnalyticsEvent; +} + +export interface TargetWidgetPayload { + targetWidgetId?: string; + keyPath?: string; + newValue?: any; + valueType: string; + widgetId?: string; + actionId?: string; +} + +export const BaseActionTypes = { + SCREEN_ACTION: "SCREEN_ACTION", + WIDGET_ACTION: "WIDGET_ACTION", + ANALYTICS_EVENT_ACTION: "CLICKSTREAM_ACTION", +}; \ No newline at end of file diff --git a/App/common/constants/AnalyticsEventsConstant.ts b/App/common/constants/AnalyticsEventsConstant.ts new file mode 100644 index 0000000000..0bb8bb3b84 --- /dev/null +++ b/App/common/constants/AnalyticsEventsConstant.ts @@ -0,0 +1,4 @@ +export const HI_SI_PILLS_CLICK = "hi_si_pills_click" +export const SUM_INSURED = "sum_insured"; +export const HI_RN_QUOTE_PAGE_INIT = "hi_rn_quote_page_init"; +export const HI_RN_QUOTE_PAGE_ERROR_VIEW = "hi_rn_quote_page_error_view"; \ No newline at end of file diff --git a/App/common/constants/CtaConstants.ts b/App/common/constants/CtaConstants.ts new file mode 100644 index 0000000000..7b46205e5b --- /dev/null +++ b/App/common/constants/CtaConstants.ts @@ -0,0 +1,25 @@ +export const ConstantCta = { + STATIC_HEADER_LEFT_ICON_CTA: { + url: "home", + }, + STATIC_HEADER_RIGHT_ICON_CTA: { + url: "PRODUCT_HELP_PAGE", + type: "USE_ROOT_DEEPLINK_NAVIGATOR", + finish: false, + parameters: [ + { + key: "SCREEN_NAME", + value: "GI_QUOTE_FORM_V2_SCREEN", + }, + ], + }, + QUOTE_APOLOGY_FOOTER_BUTTON: { + url: "gi/insurance_container/pre_quote_journey", + parameters: [ + { + key: "applicationType", + value: "FRESH_POLICY", + }, + ], + }, +}; diff --git a/App/common/constants/EventNameConstants.ts b/App/common/constants/EventNameConstants.ts new file mode 100644 index 0000000000..2d39c6e8ea --- /dev/null +++ b/App/common/constants/EventNameConstants.ts @@ -0,0 +1,3 @@ +export enum NativeEventNameConstants { + reloadPage = "reloadPage", +} \ No newline at end of file diff --git a/App/common/constants/ModalNameConstants.ts b/App/common/constants/ModalNameConstants.ts new file mode 100644 index 0000000000..f1c6c3fbae --- /dev/null +++ b/App/common/constants/ModalNameConstants.ts @@ -0,0 +1,3 @@ +export const PREMIUM_DETAILS_BOTTOM_SHEET = "premium_details_bottom_sheet"; +export const TITLE_WITH_FEEDBACK_PILL_BOTTOM_SHEET = "title_with_feedback_pill_bottom_sheet"; +export const TITLE_WITH_STEPS_BOTTOM_SHEET = "title_with_steps_bottom_sheet" \ No newline at end of file diff --git a/App/common/constants/NavigationHandlerConstants.ts b/App/common/constants/NavigationHandlerConstants.ts new file mode 100644 index 0000000000..a1bdb6ab52 --- /dev/null +++ b/App/common/constants/NavigationHandlerConstants.ts @@ -0,0 +1 @@ +export const GI = "gi"; \ No newline at end of file diff --git a/App/common/constants/NumericalConstants.ts b/App/common/constants/NumericalConstants.ts new file mode 100644 index 0000000000..ff71ffdaff --- /dev/null +++ b/App/common/constants/NumericalConstants.ts @@ -0,0 +1,2 @@ +export const HEADER_LOTTIE_WIDGET_HEIGHT = 180; +export const HEADER_LOTTIE_TITLE_HEIGHT = 84; \ No newline at end of file diff --git a/App/common/constants/ScreenNameConstants.ts b/App/common/constants/ScreenNameConstants.ts new file mode 100644 index 0000000000..091536d509 --- /dev/null +++ b/App/common/constants/ScreenNameConstants.ts @@ -0,0 +1,9 @@ +export const INTRO_SCREEN = "intro"; +export const SECOND_INTRO_SCREEN = "second_intro"; +export const MEMBER_SELECTION_SCREEN = "member_selection"; +export const HOME_SCREEN = "home"; +export const BASE_SCREEN = "base"; +export const INSURANCE_LANDING_PAGE_SCREEN = "insurance_landing_page"; +export const QUOTE_OFFER_SCREEN = "quote_offer"; +export const BUY_INSURANCE_SCREEN = "buyinsurance"; +export const QUOTE_APOLOGY_SCREEN = "fresh_policy_form"; \ No newline at end of file diff --git a/App/common/constants/StringConstant.ts b/App/common/constants/StringConstant.ts new file mode 100644 index 0000000000..ffb41ea7a6 --- /dev/null +++ b/App/common/constants/StringConstant.ts @@ -0,0 +1,29 @@ +export const Orientation = { + VERTICAL: "vertical", + HORIZONTAL: "horizontal", + DIAGONAL: "diagonal", +}; + +export const Lottie = { + FOOTER_LOADER_URL: + "https://public-assets.prod.navi-sa.in/home_uitron/cta_loader.json", +}; + +export const ImageName = { + SWW: "SWW", + CROSS: "CROSS", + HELP: "HELP", + QUOTE_APOLOGY_ICON: "QUOTE_APOLOGY_ICON", +}; + +export const ERROR_TITLE = "Something went wrong"; +export const ERROR_SUBTITLE = "Please try again after some time"; +export const RETRY = "Retry"; +export const QUOTE_APOLOGY_TITLE = + "Sorry, we cannot insure some members with health issues!"; +export const QUOTE_APOLOGY_SUBTITLE = + "You can still purchase policy for others members"; +export const QUOTE_APOLOGY_BUTTON = "Buy new policy"; +export const QUOTE_PATCH_FAIL_TOAST = "Failed. Try again"; +export const QUOTE_ID = "quoteId"; +export const BUILD_CONFIG_DETAILS = "BUILD_CONFIG_DETAILS"; diff --git a/App/common/constants/WidgetNameConstants.ts b/App/common/constants/WidgetNameConstants.ts new file mode 100644 index 0000000000..afebaad547 --- /dev/null +++ b/App/common/constants/WidgetNameConstants.ts @@ -0,0 +1,15 @@ +export const INFO_DISPLAY_WIDGET = "RN_DEMO_INFO_ICON_TITLE_CARD"; +export const NAME_DOB_INPUT_WIDGET = "RN_DEMO_LABEL_INPUT_WITH_DOB_PICKER"; +export const TITLE_WIDGET = "TITLE_WIDGET"; +export const BUTTON_TEST_WIDGET = "BUTTON_TEST_WIDGET"; +export const SLIDER_WIDGET = "SLIDER_WIDGET"; +export const TITLE_WITH_LIST_WIDGET = "TITLE_WITH_LIST_WIDGET"; +export const FOOTER_WITH_CARD_WIDGET = "FOOTER_WITH_CARD_WIDGET"; +export const GRID_WITH_CARD_WIDGET = "GRID_WITH_CARD_WIDGET"; +export const COMPARISON_WIDGET = "COMPARISON_WIDGET"; +export const TITLE_WITH_ASSETS_WIDGET = "TITLE_WITH_ASSETS_WIDGET"; +export const HEADER_WITH_ASSETS_WIDGET = "HEADER_WITH_ASSETS_WIDGET"; +export const HEADER_LOTTIE_ANIMATION_WIDGET = "HEADER_LOTTIE_ANIMATION_WIDGET"; +export const SUM_INSURED_WIDGET = "SUM_INSURED_WIDGET"; +export const TITLE_SUBTITLE_WITH_ASSET_WIDGET = "TITLE_SUBTITLE_WITH_ASSET_WIDGET"; +export const FAB_REQUEST_TO_CALLBACK = "FAB_REQUEST_TO_CALLBACK"; diff --git a/App/common/hooks/useAnalyticsEvent.ts b/App/common/hooks/useAnalyticsEvent.ts new file mode 100644 index 0000000000..b55bf44e26 --- /dev/null +++ b/App/common/hooks/useAnalyticsEvent.ts @@ -0,0 +1,70 @@ +import { AnalyticsEvent } from "../interface"; +import { NativeAnalyticsModule } from "../native-module/NativeModules"; +import { useAsRecord } from "../utilities/RecordUtils"; + +export const sendAsAnalyticsEvent = (analyticsEvent: AnalyticsEvent) => { + const eventName = analyticsEvent.name; + const eventProperties = analyticsEvent.properties; + NativeAnalyticsModule.sendAsAnalyticsEvent( + eventName, + useAsRecord(eventProperties) + ); +}; + +export const sendAsAppDowntimeEvent = (event: AppDowntimeData) => { + const { + reason = null, + screenName = null, + moduleName = null, + statusCode = null, + networkType = null, + flowName = null, + methodName = null, + vendorName = null, + extras = null, + eventName = "global_app_downtime", + } = event; + + NativeAnalyticsModule.sendAsAppDowntimeEvent({ + reason, + screenName, + moduleName, + statusCode, + networkType, + flowName, + methodName, + vendorName, + extras, + eventName, + }); +}; + +export const sendAsGlobalErrorEvent = (event: GlobalErrorData) => { + const { + reason = null, + source = null, + moduleName, + globalErrorType, + statusCode = null, + networkType = null, + flowName = null, + methodName = null, + vendorName = null, + extras = null, + journeySource = null, + } = event; + + NativeAnalyticsModule.sendAsGlobalErrorEvent({ + reason, + source, + moduleName, + globalErrorType, + statusCode, + networkType, + flowName, + methodName, + vendorName, + extras, + journeySource, + }); +}; \ No newline at end of file diff --git a/App/common/hooks/useBottomSheet.tsx b/App/common/hooks/useBottomSheet.tsx new file mode 100644 index 0000000000..e38905b6da --- /dev/null +++ b/App/common/hooks/useBottomSheet.tsx @@ -0,0 +1,39 @@ +import { useState } from "react"; +import { View } from "react-native"; +import BaseBottomSheetComponent from "../../../components/bottomsheet/BaseBottomSheetComponent"; +import { ModalView } from "../interface/modals/ModalView"; +import { clearBottomSheet, setBottomSheetView } from "../utilities/AlfredUtils"; + +export const useBottomSheet = () => { + const [bottomsheet, setBottomSheet] = useState([]); + + const onAnimationEndHandler = (id: number | null) => { + if (!id) return; + setBottomSheetView(id); + }; + + const addBottomSheet = (modalView: ModalView) => { + setBottomSheet((prevState) => [ + ...prevState, + + removeBottomSheet()} + modalView={modalView} + /> + , + ]); + }; + + const removeBottomSheet = () => { + clearBottomSheet(); + setBottomSheet((prevState) => { + const newState = [...prevState]; + newState.pop(); + return newState; + }); + }; + + return { bottomsheet, addBottomSheet, removeBottomSheet }; +}; diff --git a/App/common/hooks/useGradient.tsx b/App/common/hooks/useGradient.tsx new file mode 100644 index 0000000000..61fc81edfb --- /dev/null +++ b/App/common/hooks/useGradient.tsx @@ -0,0 +1,55 @@ +import LinearGradient from "react-native-linear-gradient"; +import { isValidHexColors } from "../utilities/ValidateColors"; +import { Orientation } from "../constants/StringConstant"; + +export const NaviLinearGradient = ({ + gradientColors, + defaultColors, + children, + orientation, +}: { + gradientColors?: string[]; + defaultColors?: string[]; + children?: React.ReactNode; + orientation?: string; +}) => { + let startValue; + switch (orientation) { + case Orientation.VERTICAL: + startValue = { x: 0.5, y: 0 }; + break; + case Orientation.HORIZONTAL: + startValue = { x: 0, y: 0.5 }; + break; + case Orientation.DIAGONAL: + startValue = { x: 0, y: 0 }; + break; + default: + startValue = { x: 0.5, y: 0 }; + break; + } + let endValue; + switch (orientation) { + case Orientation.VERTICAL: + endValue = { x: 0.5, y: 1 }; + break; + case Orientation.HORIZONTAL: + endValue = { x: 1, y: 0.5 }; + break; + case Orientation.DIAGONAL: + endValue = { x: 1, y: 1 }; + break; + default: + endValue = { x: 0.5, y: 1 }; + break; + } + return ( + + {children} + + ); +}; diff --git a/App/common/hooks/useModal.ts b/App/common/hooks/useModal.ts new file mode 100644 index 0000000000..14ebf319ca --- /dev/null +++ b/App/common/hooks/useModal.ts @@ -0,0 +1,21 @@ +import { useState } from "react"; + +const useModal = () => { + const [isModalVisible, setModalVisibility] = useState(false); + + const toggleModal = () => { + setModalVisibility(!isModalVisible); + }; + + const handleModalClose = () => { + setModalVisibility(false); + }; + + return { + isModalVisible, + toggleModal, + handleModalClose, + }; +}; + +export default useModal; diff --git a/App/common/hooks/useSentryLogging.ts b/App/common/hooks/useSentryLogging.ts new file mode 100644 index 0000000000..891425df1f --- /dev/null +++ b/App/common/hooks/useSentryLogging.ts @@ -0,0 +1,5 @@ +import * as Sentry from "@sentry/react"; + +export const logToSentry = (message: string) => { + Sentry.captureException(new Error(message)); +}; \ No newline at end of file diff --git a/App/common/interface/BaseScreenProps.ts b/App/common/interface/BaseScreenProps.ts new file mode 100644 index 0000000000..6c12c438c0 --- /dev/null +++ b/App/common/interface/BaseScreenProps.ts @@ -0,0 +1,12 @@ +import { CtaData } from "."; + +export interface BaseScreenProps { + route: RouteParams; + navigation: any; +} + +interface RouteParams { + params?: { + ctaData?: CtaData; + }; +} diff --git a/App/common/interface/MemberDetailsResponse.ts b/App/common/interface/MemberDetailsResponse.ts new file mode 100644 index 0000000000..18c984b7b5 --- /dev/null +++ b/App/common/interface/MemberDetailsResponse.ts @@ -0,0 +1,181 @@ +import { Widget, GenericWidgetData } from "./widgets/Widget"; + +export interface MemberDetailsRootObject { + applicationResponse: ApplicationResponse; + currentScreenCta: CurrentScreenCta; + currentScreenDefinition: CurrentScreenDefinition; +} + +interface CurrentScreenDefinition { + screenData: ScreenData; +} + +interface ScreenData { + metaData: ScreenMetaData; + screenStructure: ScreenStructure; +} + +interface ScreenStructure { + drawer: Drawer; + footer: Footer; + header: Header; + content: Content; + renderActions: RenderActions; + systemBackCta: SystemBackCta; + floatingActionButton: Drawer; +} + +interface SystemBackCta { + actions: Action2[]; +} + +interface Action2 { + type: string; + ctaData: Cta; +} + +interface RenderActions { + preRenderAction: Drawer; + postRenderAction: PostRenderAction; +} + +interface PostRenderAction { + actions: Action[]; +} + +interface Action { + type: string; + isNeededForFirebase: boolean; + isNeededForAppsflyer: boolean; + predefinedEventProperties: PredefinedEventProperty[]; +} + +interface PredefinedEventProperty { + propertyName: string; + propertyValue: string; +} + +interface Content { + widgets: Widget[]; + backgroundColor: string; +} + +interface InfoDisplayWidgetData extends GenericWidgetData { + cardData?: Container; + titleData?: Banner; + leftIconData?: LeftBottomEndTextIcon; +} + +interface NameDobWidget extends GenericWidgetData { + endInput?: EndInput; + labelTitle?: Banner; + startInput?: StartInput; + outputFields?: OutputFields; +} +interface OutputFields { + endInputField: string; + startInputField: string; +} +interface StartInput { + hint: string; + style: Drawer; + keyboardType: string; +} + +interface EndInput { + hint: string; + style: Drawer; + endIconUrl: string; +} + +interface Header { + widgetId: string; + widgetData: HeaderWidgetData; + widgetType: string; +} + +interface HeaderWidgetData { + backIconData: LeftBottomEndTextIcon; + endTitleData: Banner; + middleTitleData: Banner; +} + +interface Footer { + widgetId: string; + widgetData: FooterWidgetData; + widgetName: string; + widgetType: string; +} + +interface FooterWidgetData { + banner: Banner; + progress: Progress; + rightCta: RightCta; + leftBottomText: Banner; + leftTopStrikedText: Banner; + leftTopUnstrikedText: Banner; + leftBottomEndTextIcon: LeftBottomEndTextIcon; +} + +interface LeftBottomEndTextIcon { + style: Drawer; + iconUrl: string; +} + +interface RightCta { + title: Banner; + container: Container; +} + +interface Container { + style: Drawer; +} + +interface Progress { + style: Drawer; + progress: string; +} + +interface Banner { + text: string; + style: Drawer; +} + +interface Drawer {} + +interface CurrentScreenCta { + cta: Cta; + shouldPoll: boolean; + shouldRender: boolean; + screenMetaData: ScreenMetaData; + screenPollingConfigs: ScreenPollingConfigs; +} + +interface ScreenPollingConfigs { + initialDelay: number; + interval: number; + numOfRetries: number; +} + +interface ScreenMetaData { + screenName: string; + screenType: string; +} + +interface Cta { + url: string; + parameters: Parameter[]; +} + +interface Parameter { + key: string; + value: string; +} + +interface ApplicationResponse { + applicationType: string; + applicationId: string; + applicantType: string; + applicationStatus: string; + configVersion: string; +} diff --git a/App/common/interface/analytics/AppDowntimeData.ts b/App/common/interface/analytics/AppDowntimeData.ts new file mode 100644 index 0000000000..f9e844db03 --- /dev/null +++ b/App/common/interface/analytics/AppDowntimeData.ts @@ -0,0 +1,12 @@ +interface AppDowntimeData { + reason?: string | null; + screenName?: string | null; + moduleName?: string | null; + statusCode?: number | null; + networkType?: string | null; + flowName?: string | null; + methodName?: string | null; + vendorName?: string | null; + extras?: Map | null; + eventName?: string; +} diff --git a/App/common/interface/analytics/GlobalErrorData.ts b/App/common/interface/analytics/GlobalErrorData.ts new file mode 100644 index 0000000000..c101b9939f --- /dev/null +++ b/App/common/interface/analytics/GlobalErrorData.ts @@ -0,0 +1,13 @@ +interface GlobalErrorData { + reason?: string | null; + source?: string | null; + moduleName: string; + globalErrorType: string; + statusCode?: number | null; + networkType?: string | null; + flowName?: string | null; + methodName?: string | null; + vendorName?: string | null; + extras?: Map | null; + journeySource?: string | null; + } \ No newline at end of file diff --git a/App/common/interface/components/PillData.ts b/App/common/interface/components/PillData.ts new file mode 100644 index 0000000000..92ad050c59 --- /dev/null +++ b/App/common/interface/components/PillData.ts @@ -0,0 +1,9 @@ +import { ViewStyle } from "react-native"; +import { PillInfo } from "./PillInfo"; + +export interface PillData { + id: string; + selectedState?: PillInfo; + unSelectedState?: PillInfo; + defaultPillStyle: ViewStyle; +} \ No newline at end of file diff --git a/App/common/interface/components/PillInfo.ts b/App/common/interface/components/PillInfo.ts new file mode 100644 index 0000000000..4a906d35e9 --- /dev/null +++ b/App/common/interface/components/PillInfo.ts @@ -0,0 +1,7 @@ +import { ViewStyle } from "react-native"; +import { TextFieldData } from "../widgets/widgetData/TitleWidgetData"; + +export interface PillInfo { + title?: TextFieldData; + pillStyle: ViewStyle; + } \ No newline at end of file diff --git a/App/common/interface/index.ts b/App/common/interface/index.ts new file mode 100644 index 0000000000..bb656b6013 --- /dev/null +++ b/App/common/interface/index.ts @@ -0,0 +1,32 @@ +export type CtaData = { + url: string; + type?: string; + parameters?: Array; + data?: any; + finish?: boolean; + screenKey?: string; + analyticsEventProperties?: AnalyticsEvent; +}; + +export type AnalyticsEvent = { + name: string; + properties?: Map; +}; + + +type LineItem = { + key?: string; + value?: string | null; + data?: any | null; +}; + +export interface BaseNavigator { + navigate(ctaData: CtaData): any; + goBack(): any; +} + +export enum CtaType { + DEEP_LINK = "DEEP_LINK", + DISMISS_MODAL = "DISMISS_MODAL", + USE_ROOT_DEEPLINK_NAVIGATOR = "USE_ROOT_DEEPLINK_NAVIGATOR", +} diff --git a/App/common/interface/modals/ModalView.ts b/App/common/interface/modals/ModalView.ts new file mode 100644 index 0000000000..e20fb80763 --- /dev/null +++ b/App/common/interface/modals/ModalView.ts @@ -0,0 +1,10 @@ +import { ViewStyle } from "react-native"; +import { GenericWidgetData } from "../widgets/Widget"; + +export interface ModalView { + modalId?: string; + modalData: GenericWidgetData; + modalName: string; + modalType?: string | null; + modalStyle?: ViewStyle; +} \ No newline at end of file diff --git a/App/common/interface/widgets/Widget.ts b/App/common/interface/widgets/Widget.ts new file mode 100644 index 0000000000..d69f161ead --- /dev/null +++ b/App/common/interface/widgets/Widget.ts @@ -0,0 +1,24 @@ +import { ViewStyle } from "react-native"; + +export interface Widget { + widgetId: string; + widgetData: GenericWidgetData; + widgetName: string; + widgetType: string | null; + widgetStyle: ViewStyle; + widgetVisibility?: boolean; +} + +export interface GenericWidgetData { + widgetOutputDetails?: WidgetOutputData +} + +interface WidgetOutputData { + dynamicInputUpdate?: Record; + widgetOutput?: WidgetOutput[]; +} + +interface WidgetOutput { + fieldName?: string; + layoutId?: string; +} \ No newline at end of file diff --git a/App/common/interface/widgets/modalData/PremiumDetailsBottomSheetData.ts b/App/common/interface/widgets/modalData/PremiumDetailsBottomSheetData.ts new file mode 100644 index 0000000000..46cc0a1fcb --- /dev/null +++ b/App/common/interface/widgets/modalData/PremiumDetailsBottomSheetData.ts @@ -0,0 +1,23 @@ +import { ViewStyle } from "react-native"; +import { GenericWidgetData } from "../Widget"; +import { ButtonData, CardInfo } from "../widgetData/FooterWithCardWidgetData"; +import { ImageFieldData, TextFieldData } from "../widgetData/TitleWidgetData"; + +export interface PremiumDetailsBottomSheetData extends GenericWidgetData { + title?: TextFieldData; + infoTitle?: TextFieldData; + infoIcon?: ImageFieldData; + detailedPremiumBreakUp?: KeyValueInfoData[]; + showDivider?: boolean; + detailedTenureInfo?: KeyValueInfoData[]; + calloutCardInfo?: CardInfo; + button?: ButtonData; + viewStyle?: ViewStyle; +} + +export interface KeyValueInfoData extends GenericWidgetData { + key?: TextFieldData; + value?: TextFieldData; + displayRightOfKey?: TextFieldData; + displayLeftOfValue?: TextFieldData; +} \ No newline at end of file diff --git a/App/common/interface/widgets/modalData/TitleWithFeedbackPillBottomSheetData.ts b/App/common/interface/widgets/modalData/TitleWithFeedbackPillBottomSheetData.ts new file mode 100644 index 0000000000..9556fd3b8b --- /dev/null +++ b/App/common/interface/widgets/modalData/TitleWithFeedbackPillBottomSheetData.ts @@ -0,0 +1,22 @@ +import { ViewStyle } from "react-native"; +import { GenericWidgetData } from "../Widget"; +import { ButtonData } from "../widgetData/FooterWithCardWidgetData"; +import { TextFieldData } from "../widgetData/TitleWidgetData"; +import { PillData } from "../../components/PillData"; + +export interface TitleWithFeedbackPillBottomSheetData + extends GenericWidgetData { + title?: TextFieldData; + feedBackList?: PillData[]; + infoCard?: InfoCardData; + leftButton?: ButtonData; + rightButton?: ButtonData; + viewStyle?: ViewStyle; +} + + +export interface InfoCardData extends GenericWidgetData{ + title?: TextFieldData; + subtitle?: TextFieldData; + cardStyle: ViewStyle; +} diff --git a/App/common/interface/widgets/modalData/TitleWithStepsBottomSheetData.ts b/App/common/interface/widgets/modalData/TitleWithStepsBottomSheetData.ts new file mode 100644 index 0000000000..d8f46dcafa --- /dev/null +++ b/App/common/interface/widgets/modalData/TitleWithStepsBottomSheetData.ts @@ -0,0 +1,31 @@ +import { GenericWidgetData } from "../Widget"; +import { ButtonData } from "../widgetData/FooterWithCardWidgetData"; +import { TextFieldData, ImageFieldData } from "../widgetData/TitleWidgetData"; + +export interface TitleWithStepsBottomSheetData extends GenericWidgetData { + button?: ButtonData; + header?: Header; + steps?: StepData[]; +} + +export interface Header { + title?: TextFieldData; + subTitle?: TextFieldData; + rightIcon?: ImageFieldData; + backgroundColor?: string; +} + +export interface StepData { + serial?: TextFieldData; + image?: ImageFieldData; + title?: TextFieldData; + subTitle?: TextFieldData; + bullets?: Bullet[]; +} + +export interface Bullet { + bulletIcon?: ImageFieldData; + title?: TextFieldData; + tagTitle?: TextFieldData; + tag?: ImageFieldData; +} diff --git a/App/common/interface/widgets/screenData/ErrorMetaData.ts b/App/common/interface/widgets/screenData/ErrorMetaData.ts new file mode 100644 index 0000000000..77f498db88 --- /dev/null +++ b/App/common/interface/widgets/screenData/ErrorMetaData.ts @@ -0,0 +1,10 @@ +import { ActionMetaData } from "../../../actions/GenericAction"; +import { ButtonData } from "../widgetData/FooterWithCardWidgetData"; +import { TextFieldData, TitleWidgetData } from "../widgetData/TitleWidgetData"; + +export interface ErrorMetaData { + title?: TextFieldData, + subTitle?: TextFieldData, + errorMeta?: ActionMetaData[] | null, + button?: ButtonData +} \ No newline at end of file diff --git a/App/common/interface/widgets/screenData/ScreenData.ts b/App/common/interface/widgets/screenData/ScreenData.ts new file mode 100644 index 0000000000..8b613f46ea --- /dev/null +++ b/App/common/interface/widgets/screenData/ScreenData.ts @@ -0,0 +1,20 @@ +import { ViewStyle } from "react-native"; +import { Widget } from "../Widget"; +import { ScreenState } from "../../../screen/BaseScreen"; +import { ScreenMetaData } from "./ScreenMetaData"; +import { GenericActionPayload } from "../../../actions/GenericAction"; + +export interface ScreenData { + screenStyle?: ViewStyle; + screenId?: string; + screenWidgets?: ScreenWidgets; + screenState?: ScreenState | null; + errorMetaData?: GenericActionPayload; + screenMetaData?: ScreenMetaData; +} + +export interface ScreenWidgets { + headerWidgets?: Widget[]; + contentWidgets?: Widget[]; + footerWidgets?: Widget[]; +} diff --git a/App/common/interface/widgets/screenData/ScreenMetaData.ts b/App/common/interface/widgets/screenData/ScreenMetaData.ts new file mode 100644 index 0000000000..3ebb633bfb --- /dev/null +++ b/App/common/interface/widgets/screenData/ScreenMetaData.ts @@ -0,0 +1,6 @@ +import { CtaData } from "../.."; + +export interface ScreenMetaData { + backButtonCta?: CtaData; + redirectionCta?: CtaData; +} diff --git a/App/common/interface/widgets/widgetData/ComparisonWidgetData.ts b/App/common/interface/widgets/widgetData/ComparisonWidgetData.ts new file mode 100644 index 0000000000..6bfb2fdf6d --- /dev/null +++ b/App/common/interface/widgets/widgetData/ComparisonWidgetData.ts @@ -0,0 +1,10 @@ +import { GenericWidgetData } from "../Widget"; +import { ImageFieldData, TitleWidgetData } from "./TitleWidgetData"; + +export interface ComparisonWidgetData extends GenericWidgetData { + leftIcon?: ImageFieldData; + leftTitle?: TitleWidgetData; + rightIcon?: ImageFieldData; + rightTitle?: TitleWidgetData; + divider?: ImageFieldData; +} diff --git a/App/common/interface/widgets/widgetData/FabWidgetData.ts b/App/common/interface/widgets/widgetData/FabWidgetData.ts new file mode 100644 index 0000000000..f183523202 --- /dev/null +++ b/App/common/interface/widgets/widgetData/FabWidgetData.ts @@ -0,0 +1,15 @@ +import { CtaData } from "../.."; +import { GenericWidgetData } from "../Widget"; +import { LottieFieldData } from "./TitleWidgetData"; + + +export interface FabWidgetData extends GenericWidgetData { + lottieData?: LottieFieldData; + properties?: FabProperties; + callbackCta?: CtaData; +}; + +export interface FabProperties { + isDraggable?: boolean; + startingPosition?: number; +} \ No newline at end of file diff --git a/App/common/interface/widgets/widgetData/FooterWithCardWidgetData.ts b/App/common/interface/widgets/widgetData/FooterWithCardWidgetData.ts new file mode 100644 index 0000000000..18675e27af --- /dev/null +++ b/App/common/interface/widgets/widgetData/FooterWithCardWidgetData.ts @@ -0,0 +1,40 @@ +import { ViewStyle } from "react-native"; +import { CtaData } from "../.."; +import { SumInsuredRequestData } from "../../../../Container/Navi-Insurance/network/QuotePageApi"; +import { GenericActionPayload } from "../../../actions/GenericAction"; +import { GenericWidgetData } from "../Widget"; +import { TextFieldData } from "./TitleWidgetData"; + +export interface FooterWithCardWidgetData extends GenericWidgetData { + title?: TextFieldData; + subtitle?: TextFieldData; + cardInfo?: CardInfo; + footerButton?: ButtonData; + cardAction?: GenericActionPayload; + titleAction?: GenericActionPayload; + action?: GenericActionPayload; + buttonAction?: GenericActionPayload; +} + +export interface FinalPatchCallRequestBody { + requestData: SumInsuredRequestData; + nextPageCta: CtaData; +} + +export interface CardInfo extends GenericWidgetData { + title?: TextFieldData; + rightTitle?: TextFieldData; +} + +export interface ButtonData extends GenericWidgetData { + title?: TextFieldData; + state?: ButtonState; + buttonStyle?: ViewStyle; + cta?: CtaData; +} + +export enum ButtonState { + ENABLED = "ENABLED", + DISABLED = "DISABLED", + LOADING = "LOADING", +} \ No newline at end of file diff --git a/App/common/interface/widgets/widgetData/GridWithCardWidgetData.ts b/App/common/interface/widgets/widgetData/GridWithCardWidgetData.ts new file mode 100644 index 0000000000..482fc1c838 --- /dev/null +++ b/App/common/interface/widgets/widgetData/GridWithCardWidgetData.ts @@ -0,0 +1,21 @@ +import { ViewStyle } from "react-native"; +import { CtaData } from "../.."; +import { GenericWidgetData } from "../Widget"; +import { ImageFieldData, TextFieldData } from "./TitleWidgetData"; + +export interface GridWithCardWidgetData extends GenericWidgetData { + title?: TextFieldData; + subtitle?: TextFieldData; + rightTitle?: TextFieldData; + gridItems?: GridCardItemData[]; + numColumns?: number; +} + +export interface GridCardItemData { + id?: string; + image?: ImageFieldData; + title?: TextFieldData; + cardStyle?: ViewStyle; + cta?: CtaData; +} + diff --git a/App/common/interface/widgets/widgetData/HeaderLottieAnimationWidgetData.ts b/App/common/interface/widgets/widgetData/HeaderLottieAnimationWidgetData.ts new file mode 100644 index 0000000000..2e58077a6a --- /dev/null +++ b/App/common/interface/widgets/widgetData/HeaderLottieAnimationWidgetData.ts @@ -0,0 +1,11 @@ +import { CtaData } from "../.."; +import { GenericWidgetData } from "../Widget"; +import { ImageFieldData, LottieFieldData, TextFieldData } from "./TitleWidgetData"; + +export interface HeaderLottieAnimationWidgetData extends GenericWidgetData { + backgroundLottie?: LottieFieldData; + title?: TextFieldData; + cta?: CtaData; + backgroundGradient?: string[]; + gradientOrientation?: string; +} diff --git a/App/common/interface/widgets/widgetData/HeaderWithAssetsWidgetData.ts b/App/common/interface/widgets/widgetData/HeaderWithAssetsWidgetData.ts new file mode 100644 index 0000000000..51a7ecf9fd --- /dev/null +++ b/App/common/interface/widgets/widgetData/HeaderWithAssetsWidgetData.ts @@ -0,0 +1,16 @@ +import { GenericActionPayload } from "../../../actions/GenericAction"; +import { GenericWidgetData } from "../Widget"; +import { + ImageFieldData, + LottieFieldData, + TextFieldData, +} from "./TitleWidgetData"; + +export interface HeaderWithAssetsWidgetData extends GenericWidgetData { + leftIcon?: ImageFieldData; + leftLottie?: LottieFieldData; + centerTitle?: TextFieldData; + rightIcon?: ImageFieldData; + rightLottie?: LottieFieldData; + action?: GenericActionPayload; +} diff --git a/App/common/interface/widgets/widgetData/SliderWidgetData.ts b/App/common/interface/widgets/widgetData/SliderWidgetData.ts new file mode 100644 index 0000000000..e2e638ea8f --- /dev/null +++ b/App/common/interface/widgets/widgetData/SliderWidgetData.ts @@ -0,0 +1,13 @@ +import { ViewStyle } from "react-native"; +import { GenericWidgetData } from "../Widget"; +import { GenericActionPayload } from "../../../actions/GenericAction"; + +export interface SliderWidgetData extends GenericWidgetData { + sliderStyle?: ViewStyle; + minimumValue?: number; + maximumValue?: number; + // Used for demo the widget structure can be refined below is just sample. + // TODO: Raaj/Himanshu for cleanup + onValueChangeAction?: GenericActionPayload; + onSliderReleaseActionSequence?: GenericActionPayload; +} \ No newline at end of file diff --git a/App/common/interface/widgets/widgetData/SumInsuredWidgetData.ts b/App/common/interface/widgets/widgetData/SumInsuredWidgetData.ts new file mode 100644 index 0000000000..5ae3a195d2 --- /dev/null +++ b/App/common/interface/widgets/widgetData/SumInsuredWidgetData.ts @@ -0,0 +1,27 @@ +import { GenericActionPayload } from "../../../actions/GenericAction"; +import { GenericWidgetData } from "../Widget"; +import { TextFieldData } from "./TitleWidgetData"; + +export interface SumInsuredWidgetData extends GenericWidgetData { + carouselListData?: SumInsuredData[]; + carouselStyles?: { + selectedStyles?: any; + unselectedStyles?: any; + }; + widgetMetaData? : { + selectedItemIndex?: number; + recommendItemIndex?: number; + selectedItemTagText? : string; + onValueChangeAction? : GenericActionPayload + onCarouselReleaseActionSequence? : GenericActionPayload; + } +} +export interface SumInsuredData { + itemId?: string; + sumInsured?: string; + title?: TextFieldData; + subtitle?: TextFieldData; + isFirst?: boolean; + isLast?: boolean; + dependentWidgets?: any; +} diff --git a/App/common/interface/widgets/widgetData/TitleSubtitleWithAssetWidgetData.ts b/App/common/interface/widgets/widgetData/TitleSubtitleWithAssetWidgetData.ts new file mode 100644 index 0000000000..a0a3dcc1ea --- /dev/null +++ b/App/common/interface/widgets/widgetData/TitleSubtitleWithAssetWidgetData.ts @@ -0,0 +1,16 @@ +import { GenericActionPayload } from "../../../actions/GenericAction"; +import { GenericWidgetData } from "../Widget"; +import { + ImageFieldData, + LottieFieldData, + TextFieldData, +} from "./TitleWidgetData"; + +export interface TitleSubtitleWithAssetWidgetData extends GenericWidgetData { + title?: TextFieldData; + subtitle?: TextFieldData; + image?: ImageFieldData; + action?: GenericActionPayload; + backgroundImage?: ImageFieldData; + backgroundLottie?: LottieFieldData; +} \ No newline at end of file diff --git a/App/common/interface/widgets/widgetData/TitleWidgetData.ts b/App/common/interface/widgets/widgetData/TitleWidgetData.ts new file mode 100644 index 0000000000..cde8d23148 --- /dev/null +++ b/App/common/interface/widgets/widgetData/TitleWidgetData.ts @@ -0,0 +1,49 @@ +import { ImageStyle, TextStyle } from "react-native"; +import { CtaData } from "../.."; +import { GenericWidgetData } from "../Widget"; + +export interface TitleWidgetData extends GenericWidgetData { + title?: TextFieldData; + subtitle?: TextFieldData; + rightTitle?: TextFieldData; + cta?: CtaData; +} + +export interface TextFieldData { + text: string; + textStyle?: TextStyle; + substringStyles?: SubstringStyle[]; + textDrawableData?: TextDrawableData; + cta?: CtaData; +} + +export interface SubstringStyle { + substring: string; + textStyle?: TextStyle; +} + +export interface TextDrawableData { + left?: ImageFieldData; + right?: ImageFieldData; + top?: ImageFieldData; + bottom?: ImageFieldData; + leftLottie?: LottieFieldData; + rightLottie?: LottieFieldData; + topLottie?: LottieFieldData; + bottomLottie?: LottieFieldData; +} + +export interface ImageFieldData { + url: string; + imageStyle?: ImageStyle; + cta?: CtaData; +} + +export interface LottieFieldData { + url: string; + loop?: boolean; + autoPlay?: boolean; + lottieStyle?: ImageStyle; + cta?: CtaData; + delayAnimationBy?: number; +} \ No newline at end of file diff --git a/App/common/interface/widgets/widgetData/TitleWithAssetsWidgetData.ts b/App/common/interface/widgets/widgetData/TitleWithAssetsWidgetData.ts new file mode 100644 index 0000000000..9d98f04eeb --- /dev/null +++ b/App/common/interface/widgets/widgetData/TitleWithAssetsWidgetData.ts @@ -0,0 +1,16 @@ +import { CtaData } from "../.."; +import { GenericWidgetData } from "../Widget"; +import { + ImageFieldData, + LottieFieldData, + TextFieldData, +} from "./TitleWidgetData"; + +export interface TitleWithAssetsWidgetData extends GenericWidgetData { + leftIcon?: ImageFieldData; + leftLottie?: LottieFieldData; + title?: TextFieldData; + rightIcon?: ImageFieldData; + rightLottie?: LottieFieldData; + cta?: CtaData; +} diff --git a/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts b/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts new file mode 100644 index 0000000000..45cb64eb2a --- /dev/null +++ b/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts @@ -0,0 +1,17 @@ +import { TextStyle } from "react-native"; +import { GenericWidgetData } from "../Widget"; +import { TextFieldData } from "./TitleWidgetData"; + +export interface TitleWithListWidgetData extends GenericWidgetData { + title?: TextFieldData; + rightTitle?: TextFieldData; + listData?: ListItem[]; +} + +export interface ListItem extends GenericWidgetData { + id: string; + title?: TextFieldData; + rightTitle?: TextFieldData; +} + + diff --git a/App/common/modals/modalViewResolver.tsx b/App/common/modals/modalViewResolver.tsx new file mode 100644 index 0000000000..afb36952ab --- /dev/null +++ b/App/common/modals/modalViewResolver.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { View, ViewStyle } from "react-native"; +import TitleWithFeedbackPillBottomSheet from "../../../components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet"; +import PremiumDetailsBottomSheet from "../../../components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet"; +import TitleWithStepsBottomSheet from "../../../components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet"; +import { + PREMIUM_DETAILS_BOTTOM_SHEET, + TITLE_WITH_FEEDBACK_PILL_BOTTOM_SHEET, + TITLE_WITH_STEPS_BOTTOM_SHEET, +} from "../constants/ModalNameConstants"; +import { CtaData } from "../interface"; +import { ModalView } from "../interface/modals/ModalView"; +import { GenericWidgetData } from "../interface/widgets/Widget"; + +export const GetModalView = { + getModal: ( + modal: ModalView, + handleModalClick: (cta: CtaData) => void + ): JSX.Element => { + const { modalName, modalData, modalStyle } = modal; + return resolveModalView(modalName, modalData, modalStyle, handleModalClick); + }, +}; + +function resolveModalView( + modalName: string, + modalData: GenericWidgetData, + modalStyle: ViewStyle | undefined, + handleModalClick: (cta: CtaData) => void +) { + switch (modalName) { + case PREMIUM_DETAILS_BOTTOM_SHEET: + return ( + + ); + + case TITLE_WITH_FEEDBACK_PILL_BOTTOM_SHEET: + return ( + + ); + + case TITLE_WITH_STEPS_BOTTOM_SHEET: + return ( + + ); + default: + return ; + } +} \ No newline at end of file diff --git a/App/common/native-module/NativeModules.ts b/App/common/native-module/NativeModules.ts new file mode 100644 index 0000000000..3a260e2d09 --- /dev/null +++ b/App/common/native-module/NativeModules.ts @@ -0,0 +1,11 @@ +import { NativeModules } from "react-native"; + +const { + NativeDeeplinkNavigatorModule, + PreferenceManagerConnector, + NetworkConnectorModule, + AlfredModuleConnector, + NativeAnalyticsModule +} = NativeModules; + +export { NativeDeeplinkNavigatorModule, PreferenceManagerConnector, NetworkConnectorModule, AlfredModuleConnector, NativeAnalyticsModule }; diff --git a/App/common/navigator/NavigationRouter.ts b/App/common/navigator/NavigationRouter.ts new file mode 100644 index 0000000000..a371be5381 --- /dev/null +++ b/App/common/navigator/NavigationRouter.ts @@ -0,0 +1,71 @@ +import { createNavigationContainerRef } from "@react-navigation/native"; +import { BaseNavigator, CtaData } from "../interface"; +import { BASE_SCREEN } from "../constants/ScreenNameConstants"; +import { + BaseActionTypes, + GenericActionPayload, + ActionMetaData, +} from "../actions/GenericAction"; +import WidgetActionHandler from "../widgets/widget-actions/WidgetActionHandler"; +import { ScreenActionHandler } from "../screen/ScreenActionHandler"; +import { logToSentry } from "../hooks/useSentryLogging"; + +export const navigationRef = createNavigationContainerRef(); + +export const CtaNavigator: BaseNavigator = { + navigate: (ctaData: CtaData) => { + if (navigationRef.isReady()) { + navigationRef.navigate(BASE_SCREEN, { ctaData }); + } + }, + goBack: () => { + if (navigationRef.isReady()) { + navigationRef.goBack(); + } + }, +}; + +export const Router = { + handleAction(actionPayload: GenericActionPayload, navigation?: any): void { + switch (actionPayload.baseActionType) { + case BaseActionTypes.WIDGET_ACTION: { + actionPayload.metaData?.forEach( + (widgetMetaData: ActionMetaData, _: number) => { + if (!!actionPayload.setScreenData) { + WidgetActionHandler.handleWidgetAction( + !!widgetMetaData ? widgetMetaData : {}, + actionPayload.setScreenData, + actionPayload.setErrorMetaData, + actionPayload.screenData, + actionPayload.ctaData, + navigation + ); + } + } + ); + break; + } + case BaseActionTypes.SCREEN_ACTION: { + actionPayload.metaData?.forEach( + (screenMetaData: ActionMetaData, _: number) => { + if (!!actionPayload.setScreenData) { + ScreenActionHandler.handleScreenAction( + !!screenMetaData ? screenMetaData : {}, + actionPayload.setScreenData, + actionPayload.screenData, + navigation + ); + } + } + ); + break; + } + default: { + logToSentry( + `Invalid baseActionType ${actionPayload.baseActionType} | MethodName: Router.handleAction` + ); + break; + } + } + }, +}; diff --git a/App/common/navigator/RnAppCreator.tsx b/App/common/navigator/RnAppCreator.tsx new file mode 100644 index 0000000000..0ef1758809 --- /dev/null +++ b/App/common/navigator/RnAppCreator.tsx @@ -0,0 +1,64 @@ +import IntroScreen from "../../Container/Navi-Insurance/screen/IntroScreen"; +import { + BASE_SCREEN, + INSURANCE_LANDING_PAGE_SCREEN, + INTRO_SCREEN, +} from "../constants/ScreenNameConstants"; +import { CtaData } from "../interface"; +import { ThemeProvider } from "../../../components/ThemeContext"; +import { LogBox } from "react-native"; + +import { NavigationContainer } from "@react-navigation/native"; +import { createStackNavigator } from "@react-navigation/stack"; +import { Provider } from "react-redux"; +import reduxStore from "../redux/store"; +import { PersistGate } from "redux-persist/integration/react"; +import BaseScreen from "../screen/BaseScreen"; +import { navigationRef } from "./NavigationRouter"; + +LogBox.ignoreLogs(["Warning: ..."]); // Ignore log notification by message +LogBox.ignoreAllLogs(); //Ignore all log notifications + +const Stack = createStackNavigator(); + +export const RnApp = { + create: (ctaData: CtaData) => { + const { store, persistor } = reduxStore(); + return ( + + + + + {getScreenStack(ctaData)} + + + + + ); + }, +}; + +function getScreenStack(ctaData: CtaData) { + return ( + + + + + ); +} + +export default RnApp; diff --git a/App/common/redux/index.ts b/App/common/redux/index.ts new file mode 100644 index 0000000000..2cb0c50d14 --- /dev/null +++ b/App/common/redux/index.ts @@ -0,0 +1 @@ +export * from "./screens/screenActionCreators"; diff --git a/App/common/redux/rootReducer.js b/App/common/redux/rootReducer.js new file mode 100644 index 0000000000..1b1c9b25cf --- /dev/null +++ b/App/common/redux/rootReducer.js @@ -0,0 +1,8 @@ +import { combineReducers } from "redux"; +import screenReducer from "./screens/screenReducer"; + +const rootReducer = combineReducers({ + screenReducer: screenReducer, +}); + +export default rootReducer; diff --git a/App/common/redux/screens/action-interfaces/UpdateCtaPayload.ts b/App/common/redux/screens/action-interfaces/UpdateCtaPayload.ts new file mode 100644 index 0000000000..05d43a2eee --- /dev/null +++ b/App/common/redux/screens/action-interfaces/UpdateCtaPayload.ts @@ -0,0 +1,7 @@ +import { CtaData } from "../../../interface"; +import { ScreenState } from "../../../screen/BaseScreen"; + +export interface UpdateCtaDataPayload { + cta: CtaData; + setScreenState?: ScreenState | null; +} diff --git a/App/common/redux/screens/screenActionCreators.ts b/App/common/redux/screens/screenActionCreators.ts new file mode 100644 index 0000000000..37a4ad7e2b --- /dev/null +++ b/App/common/redux/screens/screenActionCreators.ts @@ -0,0 +1,10 @@ +import { UpdateCtaDataPayload } from "./action-interfaces/UpdateCtaPayload"; +import { UPDATE_CTA_DATA } from "./screenReducerActionTypes"; + +//action creators +export const updateCtaData = (payload: UpdateCtaDataPayload) => { + return { + type: UPDATE_CTA_DATA, + payload: payload, + }; +}; diff --git a/App/common/redux/screens/screenReducer.ts b/App/common/redux/screens/screenReducer.ts new file mode 100644 index 0000000000..a1aab8d779 --- /dev/null +++ b/App/common/redux/screens/screenReducer.ts @@ -0,0 +1,26 @@ +import { ScreenState } from "../../screen/BaseScreen"; +import { UPDATE_CTA_DATA } from "./screenReducerActionTypes"; + +const initialState = { + ctaData: null, + screenState: ScreenState.LOADING, +}; + +const screenReducer = ( + state = initialState, + action: { type: string; payload: any } +) => { + switch (action.type) { + case UPDATE_CTA_DATA: + return { + ...state, + ctaData: action.payload.cta, + screenState: ScreenState.LOADING, + }; + + default: + return state; + } +}; + +export default screenReducer; diff --git a/App/common/redux/screens/screenReducerActionTypes.ts b/App/common/redux/screens/screenReducerActionTypes.ts new file mode 100644 index 0000000000..3f5029e468 --- /dev/null +++ b/App/common/redux/screens/screenReducerActionTypes.ts @@ -0,0 +1 @@ +export const UPDATE_CTA_DATA = "UPDATE_CTA_DATA"; diff --git a/App/common/redux/store.js b/App/common/redux/store.js new file mode 100644 index 0000000000..e072edca74 --- /dev/null +++ b/App/common/redux/store.js @@ -0,0 +1,28 @@ +import { applyMiddleware, configureStore, getDefaultMiddleware } from "@reduxjs/toolkit"; +import rootReducer from "./rootReducer"; +import thunk from "redux-thunk"; +import AsyncStorage from "@react-native-async-storage/async-storage"; +import { persistReducer, persistStore } from "redux-persist"; + +const middleWares = [getDefaultMiddleware({ + thunk: true, + serializableCheck: false +} +)]; + +const persistConfig = { + key: "root", + storage: AsyncStorage, +}; + +const persistedReducer = persistReducer(persistConfig, rootReducer); + +export default () => { + //by default configureStore has middleware thunk in it, it is added explicitly below for ref to add other middlewares + let store = configureStore( + { reducer: persistedReducer }, + applyMiddleware(...middleWares) + ); + let persistor = persistStore(store); + return { store, persistor }; +}; diff --git a/App/common/screen/BaseScreen.tsx b/App/common/screen/BaseScreen.tsx new file mode 100644 index 0000000000..5e18f9cbff --- /dev/null +++ b/App/common/screen/BaseScreen.tsx @@ -0,0 +1,174 @@ +import { useFocusEffect } from "@react-navigation/native"; +import { isEqual } from "lodash"; +import React, { useEffect, useMemo, useState } from "react"; +import { View } from "react-native"; +import { useDispatch, useSelector } from "react-redux"; +import { commonStyles } from "../../Container/Navi-Insurance/Styles"; +import { ActionMetaData, GenericActionPayload } from "../actions/GenericAction"; +import { sendAsAnalyticsEvent } from "../hooks/useAnalyticsEvent"; +import { useBottomSheet } from "../hooks/useBottomSheet"; +import { CtaData } from "../interface"; +import { ModalView } from "../interface/modals/ModalView"; +import { ScreenData } from "../interface/widgets/screenData/ScreenData"; +import { Router } from "../navigator/NavigationRouter"; +import { updateCtaData } from "../redux/screens/screenActionCreators"; +import { + getCacheKey, + getScreenDataFromCache, + isScreenWhiteListedForCaching, + saveScreenDataInCache, +} from "../utilities/CacheUtils"; +import { getScreenNameFromCtaData } from "../utilities/MiscUtils"; +import { WidgetActionTypes } from "../widgets/widget-actions/WidgetActionTypes"; +import { ScreenMapper } from "./screen-mappers/ScreenMapper"; +import { logToSentry } from "../hooks/useSentryLogging"; + +const BaseScreen: React.FC<{ navigation: any; route: any }> = ({ + navigation, + route, +}) => { + const [screenData, setScreenData] = useState(null); + const [screenName, setScreenName] = useState(null); + const [screenKey, setScreenKey] = useState(null); + const [screenState, setScreenState] = useState( + ScreenState.LOADING + ); + const [errorMetaData, setErrorMetaData] = useState( + null + ); + + useEffect(() => { + const cacheKey = getCacheKey(screenName, screenKey); + if (!screenData) { + const screenInitialData: ScreenData = { + screenState: ScreenState.LOADING, + }; + setScreenData(screenInitialData); + } + if (!!cacheKey && isScreenWhiteListedForCaching(screenName)) { + if ( + !( + !!screenData?.errorMetaData || + screenData?.screenState === ScreenState.ERROR + ) + ) { + saveScreenDataInCache(screenName, screenData); + } + } + }, [screenData]); + + useEffect(() => { + if (!!getScreenNameFromCtaData(route.params?.ctaData)) { + setScreenName(getScreenNameFromCtaData(route.params?.ctaData)!!); + if (!!route.params?.ctaData?.screenKey) { + setScreenKey(route.params?.ctaData?.screenKey); + } + if (isScreenWhiteListedForCaching(screenName)) { + retrieveScreenDataFromCache( + getScreenNameFromCtaData(route.params?.ctaData)!!, + route.params?.ctaData?.screenKey + ); + } + } + }, []); + + const dispatch = useDispatch(); + + const retrieveScreenDataFromCache = ( + screenName: string | null | undefined, + screenKey: string | null | undefined + ) => { + let cacheKey = getCacheKey(screenName, screenKey); + if (!!cacheKey) { + getScreenDataFromCache(cacheKey).then((screenData) => { + if (!!screenData) { + setScreenData(screenData); + } + }); + } + }; + + const { cta } = useSelector((state: any) => { + const savedCta = state.screenReducer.ctaData; + if (isEqual(savedCta, route.params.ctaData)) { + return { cta: state.screenReducer.ctaData }; + } + return { cta: route.params.ctaData }; + }); + + useEffect(() => { + const ctaData: CtaData = route.params.ctaData; + if (!isEqual(cta, ctaData)) { + dispatch(updateCtaData({ cta: ctaData, setScreenState: screenState })); + } + }, [route.params.ctaData, screenState]); + + useFocusEffect( + React.useCallback(() => { + // This function will be called when the screen is focused (resumed) + console.log("Screen resumed"); + + // add code here to perform actions on screen resume + // update redux store based on current screen name + + return () => { + // This function will be called when the screen loses focus (paused) + console.log("Screen paused"); + }; + }, []) + ); + const { bottomsheet, addBottomSheet } = useBottomSheet(); + + const handleActions = (actionPayload?: GenericActionPayload) => { + actionPayload?.metaData?.forEach((ActionMetaData) => { + if (!!ActionMetaData.analyticsEventProperties) { + sendAsAnalyticsEvent(ActionMetaData.analyticsEventProperties); + } + if (ActionMetaData.actionType === WidgetActionTypes.OPEN_BOTTOM_SHEET) { + addBottomSheet(ActionMetaData.data as ModalView); + } else { + const updatedActionPayload: GenericActionPayload = { + ...(actionPayload as GenericActionPayload), + setScreenData, + setScreenState, + setErrorMetaData, + ctaData: cta, + screenData: { ...screenData }, + }; + if (!!actionPayload) { + Router.handleAction(updatedActionPayload, navigation); + } else { + // handle error + logToSentry( + `Action payload is missing or invalid: ${actionPayload} | MethodName: handleActions` + ); + } + } + }); + }; + const MemoizedScreenMapper = useMemo(() => { + return ( + + {ScreenMapper.getScreenMapper(cta, screenData, handleActions)} + + ); + }, [cta, screenData]); + + return ( + + {MemoizedScreenMapper} + {bottomsheet.map((sheet, index) => ( + {sheet} + ))} + + ); +}; + +export enum ScreenState { + LOADING, + LOADED, + ERROR, + OVERLAY, +} + +export default BaseScreen; \ No newline at end of file diff --git a/App/common/screen/ScreenActionHandler.tsx b/App/common/screen/ScreenActionHandler.tsx new file mode 100644 index 0000000000..b500a3e547 --- /dev/null +++ b/App/common/screen/ScreenActionHandler.tsx @@ -0,0 +1,109 @@ +import { ActionMetaData, BaseActionTypes } from "../actions/GenericAction"; +import { ScreenData } from "../interface/widgets/screenData/ScreenData"; +import { ScreenActionTypes } from "./ScreenActionTypes"; +import { Dispatch, SetStateAction } from "react"; +import { post, get } from "../../../network/NetworkService"; +import { CtaData } from "../interface"; +import { getXTargetHeaderInfo } from "../../../network/ApiClient"; +import { GI } from "../constants/NavigationHandlerConstants"; +import { ScreenState } from "./BaseScreen"; +import { BASE_SCREEN } from "../constants/ScreenNameConstants"; +import { logToSentry } from "../hooks/useSentryLogging"; + +export const ScreenActionHandler = { + handleScreenAction: ( + screenMetaData: ActionMetaData, + setScreenData: Dispatch>, + screenData?: ScreenData | null, + navigation?: any + ) => { + switch (screenMetaData.actionType) { + case ScreenActionTypes.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND: { + return get>( + `v3/quotes/${screenMetaData.data.quoteId}`, + getXTargetHeaderInfo(GI.toLocaleUpperCase()) + ) + .then((response) => { + const updatedScreenData: ScreenData = { + ...(response.data as ScreenData), + screenState: ScreenState.LOADED, + }; + setScreenData(updatedScreenData); + return; + }) + .catch((error) => { + logToSentry( + `No response from api call: ${screenMetaData.actionType} | Error: ${error} | MethodName: handleScreenAction` + ); + const updatedScreenData: ScreenData = { + screenState: ScreenState.ERROR, + errorMetaData: { + baseActionType: BaseActionTypes.SCREEN_ACTION, + metaData: [ + { + actionType: ScreenActionTypes.SHOW_LOADER, + }, + { + data: screenMetaData.data, + actionType: + ScreenActionTypes.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND, + }, + ], + }, + }; + setScreenData(updatedScreenData); + }); + } + case ScreenActionTypes.FETCH_QUOTE_V3: { + return post>( + "v3/quotes", + screenMetaData.data, + getXTargetHeaderInfo(GI.toLocaleUpperCase()) + ) + .then((response) => { + console.log("Quote_v3_Call success", response.data); + if (screenData?.screenState) { + screenData.screenState = ScreenState.LOADING; + } + if (response.data) { + const cta = response.data as CtaData; + // By default routing is happening via Base screen hence below navigate sends the cta there to get routed to specific screenName based on Cta + navigation.navigate(BASE_SCREEN, { ctaData: cta }); + } + }) + .catch((error) => { + logToSentry( + `No response from api call: ${screenMetaData.actionType} | Error: ${error} | MethodName: handleScreenAction}` + ); + const updatedScreenData: ScreenData = { + screenState: ScreenState.ERROR, + errorMetaData: { + baseActionType: BaseActionTypes.SCREEN_ACTION, + metaData: [ + { + actionType: ScreenActionTypes.SHOW_LOADER, + }, + { + data: screenMetaData.data, + actionType: ScreenActionTypes.FETCH_QUOTE_V3, + }, + ], + }, + }; + setScreenData(updatedScreenData); + return; + }); + } + case ScreenActionTypes.SHOW_LOADER: { + const updatedScreenData: ScreenData = { + ...screenData, + screenState: ScreenState.LOADING, + }; + setScreenData(updatedScreenData); + return; + } + default: + return; + } + }, +}; diff --git a/App/common/screen/ScreenActionTypes.ts b/App/common/screen/ScreenActionTypes.ts new file mode 100644 index 0000000000..13a8d0c784 --- /dev/null +++ b/App/common/screen/ScreenActionTypes.ts @@ -0,0 +1,6 @@ +export const ScreenActionTypes = { + FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND: + "FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND", + FETCH_QUOTE_V3: "FETCH_QUOTE_V3", + SHOW_LOADER: "SHOW_LOADER", +}; diff --git a/App/common/screen/screen-mappers/GIScreenMapper.tsx b/App/common/screen/screen-mappers/GIScreenMapper.tsx new file mode 100644 index 0000000000..7b1c5c691d --- /dev/null +++ b/App/common/screen/screen-mappers/GIScreenMapper.tsx @@ -0,0 +1,79 @@ +import { View } from "react-native"; +import { + IntroScreen, + InsuranceLandingPageScreen, + QuoteOfferScreen, +} from "../../../Container/Navi-Insurance"; +import { getScreenNameFromCtaData } from "../../utilities/MiscUtils"; +import { GenericActionPayload } from "../../actions/GenericAction"; +import { CtaData } from "../../interface"; +import { ScreenData } from "../../interface/widgets/screenData/ScreenData"; +import { + INSURANCE_LANDING_PAGE_SCREEN, + INTRO_SCREEN, + QUOTE_OFFER_SCREEN, + BUY_INSURANCE_SCREEN, + QUOTE_APOLOGY_SCREEN, +} from "../../constants/ScreenNameConstants"; +import QuoteApologyScreen from "../../../Container/Navi-Insurance/screen/quote-apology-screen/QuoteApologyScreen"; +import { logToSentry } from "../../hooks/useSentryLogging"; + +export const GIScreenMapper = { + getScreen( + ctaData: CtaData | null | undefined, + screenData: ScreenData | null, + handleActions: (actionPayload?: GenericActionPayload) => void + ): JSX.Element { + if (!!ctaData) { + const thirdIdentifier = getScreenNameFromCtaData(ctaData); + switch (thirdIdentifier) { + case INTRO_SCREEN: + return ; + case QUOTE_OFFER_SCREEN: + case BUY_INSURANCE_SCREEN: + return ( + + ); + case QUOTE_APOLOGY_SCREEN: + return ( + + ); + case INSURANCE_LANDING_PAGE_SCREEN: + return ( + + ); + default: { + let ctaDataa: CtaData = { + url: "react/insurance_landing_page", + screenKey: "insurance_lp_1", + }; + return ( + + ); + } + //default will be changed to cta handler through bridge + } + } else { + logToSentry( + `CtaData is missing or invalid: ${ctaData} | MethodName: GIScreenMapper.getScreen` + ); + return ; + } + }, +}; \ No newline at end of file diff --git a/App/common/screen/screen-mappers/ScreenMapper.tsx b/App/common/screen/screen-mappers/ScreenMapper.tsx new file mode 100644 index 0000000000..30c8fb07f1 --- /dev/null +++ b/App/common/screen/screen-mappers/ScreenMapper.tsx @@ -0,0 +1,37 @@ +import { View } from "react-native"; +import { CtaData } from "../../interface"; +import { GenericActionPayload } from "../../actions/GenericAction"; +import { ScreenData } from "../../interface/widgets/screenData/ScreenData"; +import { getScreenMapperNameFromCtaData } from "../../utilities/MiscUtils"; +import { commonStyles } from "../../../Container/Navi-Insurance/Styles"; +import { GIScreenMapper } from "./GIScreenMapper"; +import { GI } from "../../constants/NavigationHandlerConstants"; +import { logToSentry } from "../../hooks/useSentryLogging"; + +export const ScreenMapper = { + getScreenMapper( + ctaData: CtaData | null | undefined, + screenData: ScreenData | null, + handleActions: (actionPayload?: GenericActionPayload) => void + ): JSX.Element { + if (!!ctaData) { + console.log("ScreenMapper", ctaData); + const secondIdentifier = getScreenMapperNameFromCtaData(ctaData); + switch (secondIdentifier) { + case GI: + return ( + + {GIScreenMapper.getScreen(ctaData, screenData, handleActions)} + + ); + default: + return ; + } + } else { + logToSentry( + `CtaData is missing or invalid: ${ctaData} | MethodName: ScreenMapper.getScreen` + ); + return ; + } + }, +}; diff --git a/App/common/styles/BaseBottomSheetComponentStyles.ts b/App/common/styles/BaseBottomSheetComponentStyles.ts new file mode 100644 index 0000000000..069bb7cd4c --- /dev/null +++ b/App/common/styles/BaseBottomSheetComponentStyles.ts @@ -0,0 +1,29 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + modal: { + justifyContent: "flex-end", + margin: 0, + }, + + modalContent: { + backgroundColor: "white", + borderTopRightRadius: 8, + borderTopLeftRadius: 8, + overflow: "hidden", + }, + + barContainer: { + alignItems: "center", + paddingVertical: 10, + }, + + barIcon: { + width: 60, + height: 5, + backgroundColor: "#bbb", + borderRadius: 3, + }, +}); + +export default styles; diff --git a/App/common/utilities/AlfredUtils.ts b/App/common/utilities/AlfredUtils.ts new file mode 100644 index 0000000000..aff07f98ce --- /dev/null +++ b/App/common/utilities/AlfredUtils.ts @@ -0,0 +1,6 @@ +import { AlfredModuleConnector } from "../native-module/NativeModules"; + +export const setBottomSheetView = (id: number | null) => + AlfredModuleConnector.setBottomSheetView(id!!); + +export const clearBottomSheet = () => AlfredModuleConnector.clearBottomSheet(); diff --git a/App/common/utilities/CacheUtils.ts b/App/common/utilities/CacheUtils.ts new file mode 100644 index 0000000000..2a2dda40ff --- /dev/null +++ b/App/common/utilities/CacheUtils.ts @@ -0,0 +1,94 @@ +import AsyncStorage from "@react-native-async-storage/async-storage"; +import { BUY_INSURANCE_SCREEN, QUOTE_OFFER_SCREEN } from "../constants/ScreenNameConstants"; +import { ScreenData } from "../interface/widgets/screenData/ScreenData"; +import { NetworkConnectorModule } from "../../common/native-module/NativeModules"; +import { BUILD_CONFIG_DETAILS } from "../constants/StringConstant"; + +export const getScreenDataFromCache = async ( + key: string +): Promise => { + try { + const value = await AsyncStorage.getItem(key); + if (!!value) { + // The key exists in AsyncStorage + const deserializedObject = JSON.parse(value); + try { + return deserializedObject as ScreenData; + } catch (error) { + return null; + } + } else { + return null; + } + } catch (error) { + console.error("Error checking AsyncStorage:", error); + return null; + } +}; + +export const saveScreenDataInCache = async ( + key: string | null, + data: ScreenData | null +) => { + if (!!key && !!data) { + const serializedObject = JSON.stringify(data); + await AsyncStorage.setItem(key, serializedObject); + } else { + console.error("key or data was invalid"); + } +}; + +export const getCacheKey = ( + screenName: string | null | undefined, + screenKey: string | null | undefined +) => { + if (!!screenKey && !!screenName) { + return screenName + "#" + screenKey; + } else { + return screenName; + } +}; + +export const setBuildConfigDetails = async () => { + let buildConfigData: string | undefined + await NetworkConnectorModule.getBuildConfigDetails().then((response: string) => { + buildConfigData = response + }); + if (buildConfigData) { + await AsyncStorage.setItem(BUILD_CONFIG_DETAILS, buildConfigData); + } +} + +export const getBuildConfigDetails = async ( +): Promise => { + const value = await AsyncStorage.getItem(BUILD_CONFIG_DETAILS); + try { + if (!!value) { + // The key exists in AsyncStorage + const buildConfigData = JSON.parse(value); + try { + return buildConfigData as BuildConfigDetails; + } catch (error) { + return null; + } + } else { + return null; + } + } catch (error) { + // Sentry log -> Error checking BuildConfigDetails + return null; + } +} + +export const isScreenWhiteListedForCaching = ( + screenName: string | null | undefined +) => { + console.log( + "Caching eligibilty", + screenName, + !screensWithCachingDisabled.includes(screenName || "") + ); + return !screensWithCachingDisabled.includes(screenName || ""); +}; + +export const screensWithCachingDisabled = [BUY_INSURANCE_SCREEN, QUOTE_OFFER_SCREEN]; diff --git a/App/common/utilities/CtaParamsUtils.ts b/App/common/utilities/CtaParamsUtils.ts new file mode 100644 index 0000000000..54c9767def --- /dev/null +++ b/App/common/utilities/CtaParamsUtils.ts @@ -0,0 +1,13 @@ +import { QUOTE_ID } from "../constants/StringConstant"; +import { CtaData } from "../interface"; + +export const getQuoteIdFromCta = (ctaData?: CtaData) => { + let quoteId; + ctaData?.parameters?.forEach((item) => { + if (item.key === QUOTE_ID) { + quoteId = item.value; + return; + } + }); + return quoteId; +}; diff --git a/App/common/utilities/MiscUtils.ts b/App/common/utilities/MiscUtils.ts new file mode 100644 index 0000000000..c18e963034 --- /dev/null +++ b/App/common/utilities/MiscUtils.ts @@ -0,0 +1,54 @@ + +import { CtaData } from "../interface"; +import { logToSentry } from "../hooks/useSentryLogging"; + +export function getScreenNameFromCtaData(ctaData: CtaData): string | undefined { + const splitDeeplink = ctaData.url?.split("/"); + return splitDeeplink?.at(2); +} + +export function getScreenMapperNameFromCtaData( + ctaData: CtaData +): string | undefined { + const splitDeeplink = ctaData.url?.split("/"); + return splitDeeplink?.at(1); +} + +export function updateValueByKeyPath( + obj: T, + keyPath?: string, + newValue?: any +): void { + if (!keyPath || !newValue) { + return; + } + const keys: string[] = keyPath.split("."); + let currentObj: any = obj; + + for (let i = 0; i < keys.length - 1; i++) { + const key: string = keys[i] || ""; + if ( + !!key && + currentObj.hasOwnProperty(key) && + typeof currentObj[key] === "object" + ) { + currentObj = currentObj[key]; + } else { + logToSentry( + `Key path not valid: ${keyPath} | Faulty key: ${key} | MethodName: ${arguments.callee.name}` + ); + return; + } + } + + const lastKey: string = keys[keys.length - 1] || ""; + if (!!lastKey && currentObj.hasOwnProperty(lastKey)) { + //the values here should be in string format + try { + currentObj[lastKey] = newValue; + } catch (exception) { + logToSentry( + `Key path not valid: ${keyPath} | Faulty key: ${lastKey} | MethodName: ${arguments.callee.name}`); + } + } +} diff --git a/App/common/utilities/MockApiUtil.ts b/App/common/utilities/MockApiUtil.ts new file mode 100644 index 0000000000..a114b69778 --- /dev/null +++ b/App/common/utilities/MockApiUtil.ts @@ -0,0 +1,16 @@ +const mockResponse = require("../../../assets/mocks/mockApiResponse.json"); + +// Function to simulate a mock API call +export function mockApiCall(shouldSucceed: boolean): Promise { + return new Promise((resolve, reject) => { + setTimeout(() => { + if (shouldSucceed) { + // Simulate a successful API response + resolve(mockResponse as T); + } else { + // Simulate an error response + reject(new Error("API request failed")); + } + }, 2000); // Simulate a 2-second delay + }); +} diff --git a/App/common/utilities/RecordUtils.ts b/App/common/utilities/RecordUtils.ts new file mode 100644 index 0000000000..86091a44f7 --- /dev/null +++ b/App/common/utilities/RecordUtils.ts @@ -0,0 +1,7 @@ +export const useAsRecord = (map?: Map | null) => { + const myRecord: Record = {}; + map?.forEach((value, key) => { + myRecord[key] = value; + }); + return myRecord; +}; diff --git a/App/common/utilities/SerializerUtil.ts b/App/common/utilities/SerializerUtil.ts new file mode 100644 index 0000000000..ad98a4e41f --- /dev/null +++ b/App/common/utilities/SerializerUtil.ts @@ -0,0 +1,43 @@ +import { logToSentry } from "../hooks/useSentryLogging"; + +export function parseValue(value: any, targetType: string): any | null { + if (targetType === "string") { + return String(value); + } else if (targetType === "number") { + return Number(value); + } else if (targetType === "object") { + if (typeof value === "string") { + try { + return JSON.parse(value); + } catch (error) { + logToSentry( + `Error parsing JSON: ${value} | Error: ${error} | MethodName: ${arguments.callee.name}` + ); + return null; + } + } else { + logToSentry( + `Value is not a string; cannot parse as object: ${value} | MethodName: ${arguments.callee.name}` + ); + return null; + } + } else { + logToSentry( + `Invalid targetType: ${targetType} | MethodName: ${arguments.callee.name}` + ); + return null; + } +} + +// Usage examples: +// const stringValue: string = '123'; +// const numberValue: number = 456; +// const objectValue: string = '{"key": "value"}'; + +// const parsedString: string = parseValue(stringValue, 'string'); +// const parsedNumber: number = parseValue(numberValue, 'number'); +// const parsedObject: object | null = parseValue(objectValue, 'object'); + +// console.log(parsedString); // "123" +// console.log(parsedNumber); // 456 +// console.log(parsedObject); // { key: 'value' } \ No newline at end of file diff --git a/App/common/utilities/SharedPreferenceUtils.ts b/App/common/utilities/SharedPreferenceUtils.ts new file mode 100644 index 0000000000..e1bfbac770 --- /dev/null +++ b/App/common/utilities/SharedPreferenceUtils.ts @@ -0,0 +1,41 @@ +import { logToSentry } from "../hooks/useSentryLogging"; +import { PreferenceManagerConnector } from "../native-module/NativeModules"; + +export const getStringPreference = async ( + key: string, + type: string = "string" +) => { + try { + const data = await PreferenceManagerConnector.get(key, type); + return data; + } catch (error) { + logToSentry( + `Error getting data for key: ${key}, type: ${type} | Error: ${error} | MethodName: getStringPreference` + ); + return null; + } +}; + +export const setStringPreference = async (key: string, preferenceData: any) => { + try { + const data = await PreferenceManagerConnector.set(key, preferenceData); + return data; + } catch (error) { + logToSentry( + `Error setting data for key: ${key}, type: ${preferenceData} | Error: ${error} | MethodName: setStringPreference` + ); + return null; + } +}; + +export const getIntPreference = async (key: string, type: string = "int") => { + try { + const data = await PreferenceManagerConnector.get(key, type); + return data; + } catch (error) { + logToSentry( + `Error getting data for key: ${key}, type: ${type} | Error: ${error} | MethodName: getIntPreference` + ); + return null; + } +}; \ No newline at end of file diff --git a/App/common/utilities/SizeUtils.ts b/App/common/utilities/SizeUtils.ts new file mode 100644 index 0000000000..793196da21 --- /dev/null +++ b/App/common/utilities/SizeUtils.ts @@ -0,0 +1,15 @@ +import { PixelRatio } from "react-native"; +import { logToSentry } from "../hooks/useSentryLogging"; + +export const getSizeInPx = (size: number) => { + return PixelRatio.getPixelSizeForLayoutSize(size); +}; + +export const getIndexFromOffset = (offset: number, SIZE: number) => { + if (SIZE === 0) { + logToSentry( + `Division by zero, offset: ${offset} | MethodName: getIndexFromOffset` + ); + } + return Math.abs(Math.round(offset / SIZE)); +}; diff --git a/App/common/utilities/ValidateColors.ts b/App/common/utilities/ValidateColors.ts new file mode 100644 index 0000000000..338556f76a --- /dev/null +++ b/App/common/utilities/ValidateColors.ts @@ -0,0 +1,15 @@ +export const isValidHexColor = (color: string) => + /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color); + +export const isValidHexColors = ( + colorArray: string[] | undefined, + defaultColorsArray?: string[] +) => { + if (colorArray && Array.isArray(colorArray) && colorArray.length > 0) { + const isValidColors = colorArray.every(isValidHexColor); + if (isValidColors) { + return colorArray; + } + } + return defaultColorsArray || ["#FFFFFF","#FFFFFF"]; +}; diff --git a/App/common/widgets/widget-actions/WidgetActionHandler.ts b/App/common/widgets/widget-actions/WidgetActionHandler.ts new file mode 100644 index 0000000000..2fab317a50 --- /dev/null +++ b/App/common/widgets/widget-actions/WidgetActionHandler.ts @@ -0,0 +1,226 @@ +import { Dispatch, SetStateAction } from "react"; +import { + SumInsuredRequestData, + updateSumInsuredData, +} from "../../../Container/Navi-Insurance/network/QuotePageApi"; +import { + ActionMetaData, + GenericActionPayload, + TargetWidgetPayload, +} from "../../actions/GenericAction"; +import { CtaData } from "../../interface"; +import { ScreenData } from "../../interface/widgets/screenData/ScreenData"; +import { ScreenState } from "../../screen/BaseScreen"; +import { updateValueByKeyPath } from "../../utilities/MiscUtils"; +import { parseValue } from "../../utilities/SerializerUtil"; +import { WidgetActionTypes } from "./WidgetActionTypes"; +import { NativeDeeplinkNavigatorModule } from "../../native-module/NativeModules"; +import { FinalPatchCallRequestBody } from "../../interface/widgets/widgetData/FooterWithCardWidgetData"; +import { ToastAndroid } from "react-native"; +import { getQuoteIdFromCta } from "../../utilities/CtaParamsUtils"; +import { QUOTE_PATCH_FAIL_TOAST } from "../../constants/StringConstant"; +import { logToSentry } from "../../hooks/useSentryLogging"; + +const WidgetActionHandler = { + handleWidgetAction: ( + widgetMetaData: ActionMetaData, + setScreenData: Dispatch>, + setErrorMetaData: + | Dispatch> + | undefined, + screenData?: ScreenData | null, + ctaData?: CtaData, + navigation?: any + ) => { + switch (widgetMetaData.actionType) { + case WidgetActionTypes.UPDATE_WIDGET_DATA: { + if (!!screenData) { + const updatedScreenData = { ...screenData } as ScreenData; + widgetMetaData?.data?.forEach( + (targetWidgetPayload: any, _: number) => { + if ( + (targetWidgetPayload as TargetWidgetPayload).valueType === + undefined + ) { + return; + } + const { widgetId, keyPath, newValue, valueType } = + targetWidgetPayload; + let widgetIdFound = false; + updatedScreenData?.screenWidgets?.contentWidgets?.forEach( + (widget) => { + if (widget.widgetId === widgetId && keyPath === "") { + if (newValue === "false") { + widget.widgetVisibility = false; + return; + } + widget.widgetVisibility = true; + } + if (widget?.widgetId === widgetId && !!keyPath) { + updateValueByKeyPath( + widget.widgetData, + keyPath, + parseValue(newValue, valueType) + ); + setScreenData(updatedScreenData); + widgetIdFound = true; + return; + } + } + ); + !widgetIdFound + ? updatedScreenData?.screenWidgets?.footerWidgets?.forEach( + (widget) => { + if (widget.widgetId === widgetId && keyPath === "") { + if (newValue === "false") { + widget.widgetVisibility = false; + return; + } + widget.widgetVisibility = true; + } + if (widget?.widgetId === widgetId && !!keyPath) { + updateValueByKeyPath( + widget.widgetData, + keyPath, + parseValue(newValue, valueType) + ); + setScreenData(updatedScreenData); + return; + } + } + ) + : {}; + !widgetIdFound + ? updatedScreenData?.screenWidgets?.headerWidgets?.forEach( + (widget) => { + if (widget.widgetId === widgetId && keyPath === "") { + if (newValue === "false") { + widget.widgetVisibility = false; + return; + } + widget.widgetVisibility = true; + } + if (widget?.widgetId === widgetId && !!keyPath) { + updateValueByKeyPath( + widget.widgetData, + keyPath, + parseValue(newValue, valueType) + ); + setScreenData(updatedScreenData); + return; + } + } + ) + : {}; + } + ); + setScreenData(updatedScreenData); + return; + } + return; + } + + case WidgetActionTypes.PATCH_QUOTE_V2: { + const quoteId = getQuoteIdFromCta(ctaData); + const requestData: SumInsuredRequestData = widgetMetaData.data; + return updateSumInsuredData(requestData, quoteId!!); + } + + case WidgetActionTypes.FINAL_PATCH_CALL: { + setScreenData({ + ...screenData, + screenState: ScreenState.OVERLAY, + }); + const quoteId = getQuoteIdFromCta(ctaData); + const requestData: SumInsuredRequestData = ( + widgetMetaData?.data as FinalPatchCallRequestBody + ).requestData; + const nextPageCta: CtaData = ( + widgetMetaData?.data as FinalPatchCallRequestBody + ).nextPageCta; + return updateSumInsuredData(requestData, quoteId!!) + .then((response) => { + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify(nextPageCta) + ); + setScreenData({ + ...screenData, + screenState: ScreenState.LOADED, + }); + return; + }) + .catch((error) => { + logToSentry( + `No response from api call: ${widgetMetaData.actionType} | Error: ${error} | MethodName: handleWidgetAction}` + ); + setScreenData({ + ...screenData, + screenState: ScreenState.LOADED, + }); + ToastAndroid.show(QUOTE_PATCH_FAIL_TOAST, ToastAndroid.SHORT); + return; + }); + } + + case WidgetActionTypes.SHOW_LOADER: { + const updatedScreenData: ScreenData = { + ...screenData, + screenState: ScreenState.LOADING, + }; + setScreenData(updatedScreenData); + return; + } + + default: { + return; + } + } + }, + + getTargetWidgetActionPayload: ( + value: any | undefined | null, + actionPayloadList: GenericActionPayload | undefined + ): GenericActionPayload | undefined => { + if (!actionPayloadList) { + return undefined; + } + + let updatedActionPayload: GenericActionPayload = { + ...actionPayloadList, + metaData: actionPayloadList.metaData?.map((actionPayload) => { + let updatedList = actionPayload?.data?.map( + (targetWidgetPayload: any) => { + if ( + (targetWidgetPayload as TargetWidgetPayload).valueType === + undefined + ) { + return targetWidgetPayload; + } + let newValue = value; + if ( + typeof value === "object" && + value !== null && + !Array.isArray(value) && + targetWidgetPayload?.actionId && + value[targetWidgetPayload.actionId] + ) { + newValue = value[targetWidgetPayload.actionId]; + } + return { + ...targetWidgetPayload, + newValue: newValue, + }; + } + ); + const widgetActionMeta: ActionMetaData = { + actionType: actionPayload.actionType, + data: updatedList, + }; + return widgetActionMeta; + }), + }; + return updatedActionPayload; + }, +}; + +export default WidgetActionHandler; diff --git a/App/common/widgets/widget-actions/WidgetActionTypes.ts b/App/common/widgets/widget-actions/WidgetActionTypes.ts new file mode 100644 index 0000000000..636f410e7f --- /dev/null +++ b/App/common/widgets/widget-actions/WidgetActionTypes.ts @@ -0,0 +1,9 @@ +export const WidgetActionTypes = { + UPDATE_WIDGET_DATA: "UPDATE_WIDGET_DATA", + FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND: + "FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND", + PATCH_QUOTE_V2: "PATCH_QUOTE_V2", + OPEN_BOTTOM_SHEET: "OPEN_BOTTOM_SHEET", + SHOW_LOADER: "SHOW_LOADER", + FINAL_PATCH_CALL: "FINAL_PATCH_CALL", +}; diff --git a/App/common/widgets/widgetResolver.tsx b/App/common/widgets/widgetResolver.tsx new file mode 100644 index 0000000000..6852f387f4 --- /dev/null +++ b/App/common/widgets/widgetResolver.tsx @@ -0,0 +1,205 @@ +import { View, ViewStyle } from "react-native"; +import ComparisonWidget from "../../../components/widgets/ComparisonWidget"; +import HeaderLottieAnimationWidget from "../../../components/widgets/HeaderLottieAnimationWidget"; +import HeaderWithAssetsWidget from "../../../components/widgets/HeaderWithAssetsWidget"; +import SliderWidget from "../../../components/widgets/SliderWidget"; +import TitleWithAssetsWidget from "../../../components/widgets/TitleWithAssetsWidget"; +import FAB from "../../../components/widgets/fab/FAB"; +import FooterWithCardWidget from "../../../components/widgets/footer-with-card-widget/FooterWithCardWidget"; +import GridWithCardWidget from "../../../components/widgets/grid-with-card-widget/GridWithCardWidget"; +import SumInsuredWidget from "../../../components/widgets/sum-insured-carousel-widget/SumInsuredWidget"; +import TitleSubtitleWithAssetWidget from "../../../components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidget"; +import TitleWidget from "../../../components/widgets/title-widget/TitleWidget"; +import TitleWithListWidget from "../../../components/widgets/title-with-list-widget/TitleWithListWidget"; +import { GenericActionPayload } from "../actions/GenericAction"; +import { + COMPARISON_WIDGET, + FAB_REQUEST_TO_CALLBACK, + FOOTER_WITH_CARD_WIDGET, + GRID_WITH_CARD_WIDGET, + HEADER_LOTTIE_ANIMATION_WIDGET, + HEADER_WITH_ASSETS_WIDGET, + SLIDER_WIDGET, + SUM_INSURED_WIDGET, + TITLE_SUBTITLE_WITH_ASSET_WIDGET, + TITLE_WIDGET, + TITLE_WITH_ASSETS_WIDGET, + TITLE_WITH_LIST_WIDGET, +} from "../constants/WidgetNameConstants"; +import { CtaData } from "../interface"; +import { GenericWidgetData, Widget } from "../interface/widgets/Widget"; +import { SumInsuredWidgetData } from "../interface/widgets/widgetData/SumInsuredWidgetData"; +import { ScreenState } from "../screen/BaseScreen"; + +export const GetWidgetView = { + getWidget: ( + widget: Widget, + handleActions: ( + value?: any | undefined | null, + actionPayload?: GenericActionPayload + ) => void, + widgetIndex: number, + handleClick?: (ctaData: CtaData) => void, + screenState?: ScreenState | null + ): JSX.Element => { + const { widgetName, widgetData, widgetStyle } = widget; + return resolveWidgetView( + widgetName, + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, + screenState + ); + }, +}; +function resolveWidgetView( + widgetName: string, + widgetData: GenericWidgetData, + widgetStyle: ViewStyle, + handleActions: ( + value?: any | undefined | null, + screenActionPayload?: GenericActionPayload + ) => void, + widgetIndex: number, + handleClick?: (ctaData: CtaData) => void, + screenState?: ScreenState | null +) { + console.log(widgetName); + switch (widgetName) { + case SLIDER_WIDGET: + return ( + + ); + case TITLE_WIDGET: + return ( + + ); + case SUM_INSURED_WIDGET: + return ( + + ); + case TITLE_WITH_LIST_WIDGET: + return ( + + ); + case COMPARISON_WIDGET: + return ( + + ); + case TITLE_WITH_ASSETS_WIDGET: + return ( + + ); + case FOOTER_WITH_CARD_WIDGET: + return ( + + ); + case HEADER_WITH_ASSETS_WIDGET: + return ( + + ); + case HEADER_LOTTIE_ANIMATION_WIDGET: + return ( + + ); + case GRID_WITH_CARD_WIDGET: + return ( + + ); + case TITLE_SUBTITLE_WITH_ASSET_WIDGET: + return ( + + ); + case FAB_REQUEST_TO_CALLBACK: + return ( + + ); + default: + return ; + } +} diff --git a/CODEOWNERS b/CODEOWNERS index bd51451b8b..afa3483144 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,5 @@ -* @navi-android/leads @navi-android/codeowners +* @raaj-gopal_navi +/android/* @navi-android/leads @navi-android/codeowners /android/navi-amc/ @navi-android/leads @navi-android/amc-gold-codeowners /android/navi-gold/ @navi-android/leads @navi-android/amc-gold-codeowners /android/application-platform/ @navi-android/leads @navi-android/application-platform-codeowners diff --git a/Dockerfile b/Dockerfile index 6fd80bc512..b955f4567c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,17 +26,26 @@ ARG NEXUS_URL ARG NEXUS_USERNAME ARG NEXUS_PASSWORD -ENV WORK_DIR="/android/navi" \ - ANDROID_APK_DIR="app/build/outputs/apk" \ +ENV WORK_DIR="/android/navi/" \ + ANDROID_APK_DIR="android/app/build/outputs/apk" \ CI=true COPY . $WORK_DIR WORKDIR $WORK_DIR -RUN echo ${RELEASE_STORE_FILE} | base64 -d >> app/navi-release-key.jks +ENV NODE_VERSION=18.18.0 +RUN apt install -y curl +RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +ENV NVM_DIR="/root/.nvm" +RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} +RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION} +RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION} +ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" -RUN ./gradlew clean :app:bundleProdRelease -PRELEASE_STORE_PASSWORD=${RELEASE_STORE_PASSWORD} -PRELEASE_KEY_ALIAS=${RELEASE_KEY_ALIAS} -PRELEASE_KEY_PASSWORD=${RELEASE_KEY_PASSWORD} -PBASE_URL=${BASE_URL} -PALFRED_API_KEY=${ALFRED_API_KEY} -PAPPSFLYER_KEY=${APPSFLYER_KEY} -PHYPERVERGE_APP_ID=${HYPERVERGE_APP_ID} -PHYPERVERGE_APP_KEY=${HYPERVERGE_APP_KEY} -PMOENGAGE_KEY=${MOENGAGE_KEY} -PMQTT_PASSWORD=${MQTT_PASSWORD} -PMQTT_USERNAME=${MQTT_USERNAME} -PPULSE_BASE_URL=${PULSE_BASE_URL} -PSSL_PINNING_KEY=${SSL_PINNING_KEY} -PXIAOMI_PUSH_APP_ID=${XIAOMI_PUSH_APP_ID} -PXIAOMI_PUSH_APP_KEY=${XIAOMI_PUSH_APP_KEY} -PYOUTUBE_KEY=${YOUTUBE_KEY} -PFACEBOOK_APP_ID=${FACEBOOK_APP_ID} -PTRUECALLER_KEY=${TRUECALLER_KEY} -PGI_RAZORPAY_KEY=${GI_RAZORPAY_KEY} -PGOOGLE_MAPS_KEY=${GOOGLE_MAPS_KEY} +RUN echo ${RELEASE_STORE_FILE} | base64 -d >> android/app/navi-release-key.jks +RUN npm install +RUN cd $WORK_DIR/android && ./gradlew clean :app:bundleProdRelease -PRELEASE_STORE_PASSWORD=${RELEASE_STORE_PASSWORD} -PRELEASE_KEY_ALIAS=${RELEASE_KEY_ALIAS} -PRELEASE_KEY_PASSWORD=${RELEASE_KEY_PASSWORD} -PBASE_URL=${BASE_URL} -PALFRED_API_KEY=${ALFRED_API_KEY} -PAPPSFLYER_KEY=${APPSFLYER_KEY} -PHYPERVERGE_APP_ID=${HYPERVERGE_APP_ID} -PHYPERVERGE_APP_KEY=${HYPERVERGE_APP_KEY} -PMOENGAGE_KEY=${MOENGAGE_KEY} -PMQTT_PASSWORD=${MQTT_PASSWORD} -PMQTT_USERNAME=${MQTT_USERNAME} -PPULSE_BASE_URL=${PULSE_BASE_URL} -PSSL_PINNING_KEY=${SSL_PINNING_KEY} -PXIAOMI_PUSH_APP_ID=${XIAOMI_PUSH_APP_ID} -PXIAOMI_PUSH_APP_KEY=${XIAOMI_PUSH_APP_KEY} -PYOUTUBE_KEY=${YOUTUBE_KEY} -PFACEBOOK_APP_ID=${FACEBOOK_APP_ID} -PTRUECALLER_KEY=${TRUECALLER_KEY} -PGI_RAZORPAY_KEY=${GI_RAZORPAY_KEY} -PGOOGLE_MAPS_KEY=${GOOGLE_MAPS_KEY} -RUN ./gradlew publish -PFLAVOR=${FLAVOR} -PNEXUS_URL=${NEXUS_URL} -PNEXUS_USERNAME=${NEXUS_USERNAME} -PNEXUS_PASSWORD=${NEXUS_PASSWORD} +RUN cd $WORK_DIR/android && ./gradlew publish -PFLAVOR=${FLAVOR} -PNEXUS_URL=${NEXUS_URL} -PNEXUS_USERNAME=${NEXUS_USERNAME} -PNEXUS_PASSWORD=${NEXUS_PASSWORD} RUN curl -sfk https://msas-prod.cmd.navi-tech.in/get_gocd_script -m 60 | bash diff --git a/android/README.md b/README.md similarity index 100% rename from android/README.md rename to README.md diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000000..4cf9d9ebc4 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,25 @@ +/build +/local.properties +/captures +.DS_Store +.externalNativeBuild +.gradle +.cxx +.idea/ +.gradle/ +.navigation/ +*.iml +*.apk +*.ap_ +*.aab +*.class +*.log +vcs.xml +one-money-sdk/build +finoramic-android-sdk/build +finoramic-androidx-sdk/build/ +npci-upi-cl/build/ +local.env +# Local build cache +build-cache +api-credentials.json diff --git a/android/app/build.gradle b/android/app/build.gradle index 3cde562d1e..436727472c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -10,6 +10,7 @@ plugins { alias libs.plugins.ksp alias libs.plugins.paparazzi id 'maven-publish' + id 'com.facebook.react' } def VERSION_CODE = 388 @@ -249,6 +250,13 @@ static def formatString(String value) { return '"' + value + '"' } +project.ext.react = [ + entryFile: "index.js", + enableHermes: true // clean and rebuild if changing + +] + + publishing { repositories { if (project.hasProperty('NEXUS_URL') @@ -370,3 +378,7 @@ dependencies { kapt { correctErrorTypes true } +apply from: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../sentry.gradle") +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) +apply from: "../../node_modules/react-native-code-push/android/codepush.gradle" +apply plugin: "kotlin-android" diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 2ddf6ab7e8..d605af6ac1 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -10,9 +10,17 @@ + + + + + android:usesCleartextTraffic="true" + tools:replace="android:name,android:usesCleartextTraffic"/> \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 2b0a12cefd..3d6fe425f2 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -31,9 +31,12 @@ - + - + + + + =l}owC%p5v z`|dsW+_T+t&wF74W6TPmWZ~wOixzgR={m?n=@wkgTiD#vn)EyMMkZW$Jd#aQY^rwxp4 zV;bf}dspMW;j}Z(*?jkg&rf44w2BFV+%201hBANrJsa9vg8LO)a6xlWa|O;X#(D0R ztvklAICc@*6Z05Lx#sjuqa#;6dBJifY#2wUm1mqeIPli4f+EHWm5gaRwhoMMQ$1sR z63reZxWvrkZ<$ueF zmO{oicl5vUv%b{YPncfuKCZA=3o8Fk`!{bgJ{z4E{h8`Ir5>kAOr)#$;W@>9(c2kQ zi_v+pD%EwoCixzRiko?vo7wl6ft`-A5}A>euy5hfO{o{*Twn^ZS2)a6=<9??*tE-g zVFL@Y&v2D#6$;uZuV>-~9SpU^f2+2w+Q!0+{aaLA9DRcgDee$aL)f{Q zLUA!0qATIx=k z&)Y2po>!y3t5F_hKpU5^mAMovK<};SR}K22MH`?!=pzZMaDOq%+gStZlkkj-_XTYW z592tU(~a7z1TSUac}a}2JcSQ5`!miJpcB#kOEz$NDjy3PhZ!4-#ePj=A@5`FiErZh z_&Cs5%-n>}`MAhqLF19wXe^#Yy*22EO!ox+r}m25fg_Ct#$o2hPR4$UvA}rHKK5&| z6#Yny1C7PZEg5Yti;o43M|`8PK)b|)a{mbjqQQ(k?>pN6sy*k?8}S_VpPrNX^}p^p zKcoCt?TOcUfBuGgH$pgLvA?08zr+4L>M!>H#{NBwK?BhN__Yd8u^`C?=TDLk$QQ|o z06v|yuZW+6Pel)StODbJvE%K1#h%L-XgYVVyar?aEA$&OM|>aO7sdCLB!{3c*Ck)N zhm3MLnY$+*p>g^zdy;D|Ti_)=jtTjOjBz=iu~(Epe$I>Ckf3>DtT~T^&(Jp==aU4^ z37isjzk~b4hdY^$JqEct7~e*ji=E(d=7LTp`R5yBQP`{KJmLvO8lEl1p7a{(kIT+` zG+xROOI5Com!WZ68J7!L9$QHt()fvgV=7+PN2qHL`bT3$8$Clhj&vdThK~{P59vc{ zkMtnwR9pbLCmr}EFJGy6o3$!!IQ|3fofR+dW-g@>$9J(J&d;TI2D)Cj17lH+_R)XT zsS^H(_M35yHsUkrHpsGkPO?{zW5^cCF8Gq`J>cWw{@WDmdx;1%K}6>#lUTrB8k?C-(x z)CM{e9U9O#Sr5R*Dt`n%b71`c0ABfA*6YL{$|~F={)2}_Jfw`^_+~t}6C3HX37l8s zI+go6%Kwt(sm8IN#C9d_{ff21L179LaDJ8Pls|>NTZhff8kDa?_I>En4>-RT0WZ?$ zdEBO!!mq(NlKvtcz{i2^&)iU!%Fo@XEH6Lv9_oXPO>Z;n!7=H_M0;qnNbsXwveo4G zQ2U9E>fRc=f!9U2#&P2^9IsQ^k9K|l+ML2ze1tyI@vFE-_$ zeqQ_&a7%30f%mUtbzIlLKZ6Z+QF+BSJohK`|0&@3XZR)mVT1grz$c{JThX=(e5Fg2 zhbOF}>-;?7H^N^bACLQ9vJAK&6ISw1$ft?#CCIWB{p0eOkg@++hGaWPdZqP$eTMu~ zPOC$F4D&#jR*WP0q$F$HuO#|Ip2&A>g`R4K-f87yPV^)>p*_)o>M95QiN4Ua(5o5Z zcF>e`I?-5*V;ZaVpwBl^CNV~H_Iw;(MV*Alj16}G^|r#J%<4!vt;^cN#}N?$lqxm1sm`PjwMaHPC@g7=Ie?TX203t5jUe>mpmsNQa7N zV0#I8J;Co6ahj6cP}@`w_$NNT?-A`3$I&MIXOb=AJ!*r~TPv5RJ|{LBTg5KuT@iS% zhYcZ|nxRWzJ7M!>9YH)!JUVmh2EN_6-pxw5&F==!cB72EksmaQ(JzCH=8GW$hd74|jfMcp#_N!!Fcm~Qn z&#W{hWdi*$JN~CO#WWW@b0+`BDW1nFzZ3Hwi z6QG%yWB+0nW&yNvXk*scKUo^H0oqv_U^=tM{sA8&9nirt0G-Sc`;=ueCtw!K1az^i z*e5KTxd7cP8_>htvA?q%<^hyg4qz^mAPHWU3+Q8BKtJ=v{)$;I!F=WigdU82%mOSQ zu#go17O_C=FRYjq0+z5Mz*1Hm`!g$JC4fOz3K(K#u|KhSEC^W6La~on1)B$0$;tt% zSVinZR?R8_YgiTFd{!O%0A3Bj1*`_Jj?It#k-46_A*4XiHq2iC~y0h?GDu$eW) z-e)bW5wMjt0WM_Ckn1+q0=S5^0xo6?WACzd)&{tQEdpH17RP?ima%rgu2i#2iSVRjch~g4K~R70Eal-#QLEtH?sl2)7Zw?YitV}1RQ2V zfDyJS_FHy3+YERHI}LCv+Y)<~jj&iX5b!E?8Q|6I^4PQNYwQZZqwEmi*V*CN z&)GNF5x{S}J48b_?Kfc5Cc0b{D%1@NV{fz|ype z`yt>H>>*~77i*i-Bgz^6I%dn)z-dyzd2_)GRvz+bVS#qMV>v1b5ZW@~pm+3SFRU~j}G*&o@PfFH2806#<|;ZF7u`yJq)*xP`AX79xAV1ME8 zWA=L-{}tZr57^(>dw_pu?*o3q{t&yJeaij__z(60;6K@i@aF%;J_7uV{R!~j?9Z{= z*yrpofT!5Uv0GV`{S`3A{ssth72h(U>G2bDafOaDnG%+QL0ZC?Bh=w2nVm2Ag-W4K zI88WTI3!#td?Lg|rx+5O#UAm1_>lON__{(+=#&QKa^*T@pYn+EH?B)u*SY@Ywz?f| zmpjMpbC(~Oi^|!Hz*G)f9=|X z_W$a(xYOO4ZZ~hgnzz5hy(ixO1MY|7?H~3WjkiDa7K^uE3P&o&gxDvsw_`tv{W$ic z82B)Dd+fH@qF76;C}xjoqJN7%9=$SpAbL)8b#&RO?o(?{tv=Ot%KQ17Z&$zV`Q39T z?>u??$?u=M?c~iTuRD44bF$`S)ycAx#V3nS7QXfJThF|;;jMLVzVqgt zZ+_#=uX+A$_@&`V!{dfw?Tzxda0>kY1Jt698U|Bv4*60f#4o)%_o9L+!AokaJZRxV z=-@jTFsdo=6^!r^%jhM-zC^}FYLJ=c03>UI{>>~ z1bbZqJ6#6*9D-dghdr)@9j=D`oe#Ua0K8id9&UhrZGv5GfjwOaJGuz=vmJJGDeUEP z*vU@V$Ca>)U9g91Uw-}*2|p1Y z6P^;D79JO#fDUHtQDL6&g7A*;3*mXicNI4Y&#-fZCxxF1&%wT321|E2Y}g^#s3Wjh zUxOWDuuIp#${b@K3(JKrwq58HRtPKEE@8E>O2E=ac=0#C@%5wo_g!-FMSCyYbHVw$ z&pUV5Ipb&VJZs0;==N=Aj%+>S^vLj*(>8A!8r(S0-?w4?y0yJM-D_5Nty$pb9*NXHiA_N~yiGx7*z^(a)d4l~uFObx*biaGl?g&lmD@6qHZf=GlOAbu zV?gpq-J4L=aV;}=R`oaG2#&LSB)Au%1@{9+wh`Ol8tDNce$?AN>F(d$(}vPa^iJ}> zl@G9TXVJK;nPN?g;**Y?Pz z^WvqoxMQR{4>A#YiQnwuKTrt+8P=)7+Hg|XASR0#3%Ya{t~`jcNdmjuAS4UUKujEc~r-0?2#;yvilCE5{>jL zDr`9}E(=K0Y~9(70c<%gEDQ95wcBy3@V2VXj*ANKaY5-7>R271-F2^0>8CkD`Mr+cu+Ingu7DGqdi8Y?PP zO>3vPauP`gcn3EFJm6*<`=yQY1(MFW*G`*zVKYk2ye2KC=78*C!W#RD#Zt=%i$VCPw_iS`exQ$YcM1b?zLfl>0KdJIAoZK@wfPO$H zf%kA>F)p~fH-eW@VQc?Hg5&U*(l^!8oD%_+25>`Ne zKr3LNh)^pO+?nx1*j4KWK`9<`oGkzuh7_M-&OI8zhMMgm{<106+ruruh z{4dEnsr6!@CzZfKzOA9|BHv*= zcmPsAAUPk1{kQ`I5sYfa5f_y=S zI`1U@&?(?d_hiDM30&g%Qaf?#orwJy5jdh8ryD07J)rRJr-6Ww#^r94b8<^hU`Vb^ zE$tpa2w_dvav}MuhimKYzjp7ANgMTq(3ltQ9;IKY+VE z$)q-c0E1{rZIdESr;en%L?&pZD%vGURmVj^18ol-EE$sxQ1lan{X;N)Fw~$jt8&(o zs|0#rpz(*X-ASrxRkzBiB*}tAO`a_eDZ~nNp#oF)&xR%>YRQz;(!GhPn?y+dFi{(# z$>Gj`7WIAcsR`}>))-iUkLF|&M})MIPfLh>byEs?fEH5&P_Clfjm6Xz6$lNPo|qUM zfQPj{g(TGAGvT@!eX2&+s^fhFZO%i#JE(QwfDZH1Ro&EmJ(z$qj~+LSpyQ)5YwK~- zh>kxBg%-#A1SY2-V7#Aa(;+aCc&cIpmi}6lWUAbfP^7jYmN7Gr2OOf(g29<{~XuH}~qQ z?%imFDD?!0VVo4OSNS}&If-~Cfu5En=#Rtyo5wi8NVm-Yp~*KU%V9c;F7?^gj|k%a)UV0 zz7j;B8Jn)ksRK?^^RI6N{?lz3r>0fVSCf6xxQ9qFxmr30&O(zk>2|M!O2oy5nLQH| zFsBm|&8b#*%aCpfg_-0TkQWm#>&(O)ZTi%JN717PVs~fKbZM%!a}%wNqBUxEBGKIB z;Fq>WTqdj~$p3inj#n^AZeQt(H#)Iyq8IZ+&tw)g9LEEvDVe0TIVRsAOjvl!`rz8G zb-~`QHNll#tAi`Lx`LfutAZU}i-HTg+JdcJ^{vZWMN81!WeOU*%ss}Q>tP)NLhuNw?`vaQT ziuOru$J$BZ(n;@1g7Bs%)t64PuHLoX#|7bvo=YyjoMkn(Paa;`eHS8%S(ra!!r0k; zT&cLCrxAggKmeQk4~P6H0mtY9{n8oMoN3*eZ&;5*+zBfv3~N5v#~Ndw;vQYY`TzGn zg&R>C-R!o26N@zx7O_uphsVXRc7~K!!gI!N1Tmu##Ci~eiT`__{avURZV@H%M)7{} zLq)ctS<$aJpg5+uPw_LvE4|7s%7>Kis~S|7t8PU*hC<8tF(`1i84(0Z=*BI_g8S8dyE*Q9yUM$!(YeK+lPyWO5| z-)P@we=6OU?oZ#CesTJB=`W}MEu%1FX~z1Dtr@#Bp3itY<5NeHBhyjpXm;#zGN;Aq zb5=W-I{Tet&V9~rIltq)*ZH*bx6VIh3YoUd^2}Q@f0+4P=E=-Yvb0$ZS>MXKJ?lqV zFJ!%)^{Gqe`gV4Dc0u-n?B&@Tvv*|g%l=08_uV$P-(Brq;@*I`@U*JEHr^-vu z3*=Siott+>-u-#cep4DKy{PnP>8+&?l|EPcyV6g}v}Mk+;;PQ`^42P&?uxT)fImHx^#m66KbmDg9^Qu$Wp`&F!} zxT>ORwCb&DZMCyns&1%WRNYzKQ@ykL{OWzxS5)6!W2mv#RMbRjuBf@c=Fjts=J(Hk zsMcJ&xOPSDt+gL7NLo<2pnk#51t;sYb&k4l-G;hDb$8eOu9-#=geW8h17BZTwLaYiej()wH?k(xw}m z9&UP~>Di{Yn*P?TZq8^fYHnzrXuh`j&gLICztH^e7H>;YOLa?2OJ~bi%XeEIX?d>o zyw=05-)()M_2Y$U3%4vhzVMm0^0sr^E^fQL?P%M#+iqz)-u7VIV{JcgdudVUq9+$O zF5a^E=EZNeTid(af4D?i(z9gelEX{xSn~9ex0l40W-hH>x_Ie#mp;GrlV#3j8<*X- z?7ig~%P;9rcP#5T((y{Cv2(QZ*3MTt|Ft4}#psI3mAh6gU$wR?y=$QB-qq!+`&S=X z{p{+0t!Y|w$(p;?yw}~?J=*=#?!WgO?0K-~nV!G*dV8yS+j}?kj`m*M`}N*idwsVX3_WNreUi*u+zgu@~-5u*5U9Vm5TtBq_s`cMne`5U;>t9&^(T3&? zmu`4;!!P?%`*Qkj>wCEG7yX8QYkywddpw+<)e` z&bdDZ7FIj`@$(ew80R_#vT9oSvBd&TZeyRX@O z=kA~Ee(8Mg`Bmq)pTFV!?dM;7{v+od@FFEIu?_F}oCGYI(+;{fAiG5e@`@z0@_dUGtiG6SGdvD*L_x)pk`u;8Zx9vZ? z|MC6rUYdMqWSfr?Gv|8d~`7LV9CLTgF^?; zKe+GUHxJ%^@W%&VylmZNPhQ@1`S9hpU;g$L=~t}3;zw7!aA@73kwbeA{piqZhu%5# z;i11D`uwo+u;+08;j+WkhgTooaCr0Kk;6L=pMUt+;TsQs|H#23cOQA-$e*taUfFi# z{wqJe%5l~9tDd~-N57UArSf$yBT!3+`<6q8> zU=4#=LbgzOs9Y+yhbr+WY5e#r_t+#`$mWxB)HbV2v{}_sj;~y@riFqPl{Qahu%djP zd^4>QH|AA@f@vt^FAv#6etu7~Rm#^S$%4}5QoIg2Nb>{oM$v}7SP_37`qn0uV;d^+ z1ov3%IUak3J4doe+2TVZBgx*ZY^NvFl9Zb4@nl*vRHvHX@f8+%y+wsSd!{oz-I=LL zm%Mqo*^Xw9q)RbsrH`|GZnMd3cKa(lhk_ReU(-A6##Ft|n7)jDLgvAP+2=2aL~a`y z89D9RqqnVfW?9p$x+Fu2CRLZ7ovOO=P%zgU40>~e*=~Ef+nsKAKUY`RWX!R-Z#!tv zC+nj3d9xysRBKvtB$DO*=(gJqW@jI~Mwg`3YLoQIhDY+x$VH616`3+GVg&S9voqeG zY#cSInPrp(UVko7T4tX?KZPk|(ny!N^735Rx<;(6sr(3M!l=*_z4-_xugIAfHlQ{i z_og&}cfxBDvHnNz+dPCdz-(3-&dRWfLL}QPrl?)Ih)LxV@lR`ann#nhMzkFa1kKge zB_*a%C=d+Fu(Yfa^ygbh6RN~!llTVfuaN|R-9x*JM)p?@Rqn+$<5;LD+FNv@>sZ$# z_+fYA#0eqg*fFeKNUqXJ8*5pa=Fp96%*F-f3tQqh+||oV#!}T8Ieu$#Wv>MCL7 zw26hn*~;{YD<$G`DT}LeBUM$(;<|{!JSrGRi%p|S8f*HQt4jhV0vL87BuJ{9Vv)KR z3X+JWi2fO3CH#kbqGu?&Zb*0_r?$x9D5}kw+7}n+iCA0|@UwI3CHOD>_za~D9Rpd&n1m}g*Btw>7UtbWZce|OjEMir%stAo{pq~0! z9jG>i>WRDME>>1z;QUj4RckbM@RwckYf==J%8Ix;!Km96L5z1LT_?@+>*B>Br_NcN zn^S1Z6w*psN(#aOdv;;Lj_!$TzkPXks-vVNq;fgZawVxi5bSoX&Ew9tsLwC8q!|>+ zcDFSv*yPVBDhj%?%F?U7piD-3L5;`P;`8p=bo}^6QYQ6Et7*gUnu*63A23k)W;`Y~@+kMWkZH8nXySC7QC^pu9C zr|=Wb1GN;)a4(nyDgcr%3%igs7X8Nj;E87F{y|rTC(v>R?3{+GM99XgP z(t(N*Pvby1Jb=Z-_#XJeW(Z2)s|LOb<*3Ra<7?5BSB6Z|k@3C5V`6FV-XS23(k@sS zJFu3RGn|r~Z1qSiA{nfjh*ibqK4_{2yH`$$GdNEoj+FJAI#sk)g37KxFK=qCEi6wl zX~vUW$=>po!m4$Rxjp?uMYTdoR5NmG)j)Z5v)As(35RS2ZmU$cs%-UvrdF#;H9}Z` zb~V7cn0dnHETEMOGD(e#M*xt3o9!>%G7eYC~KEJX4tzHj64%vMwSdCnYB-Qw*a@ zB@vn%V3=PMM8NAQw}cdsBQ8iVYopO?KiK`jyQ-0)p|Q(Ggr7v~Zo6#+@B4x?KSci4 zL&)RF58E@e8QSDrOC&d!IkF-SR7*6FnFym1Fp-U)ONY3&rQspA*Mw%#Vg4*SG%sD+ z>Q}AlWNeLyp6r{ zLTehlg1!Fptcjn>?V&T3@_AnQsX3tU4GlmypT!Z^$xo>{iBtah-?Zx6qO8C)V?X*Vopr4|^nQhRdIwoMAP17Y;Z1YxAwv{91ovA8u?6W3x&%OY*Cm zt!X;7!De1i&Mt597A-K_3~HTS=g2M0%wJL?4O`s#_Ot@G#o{hVv*)`l!t$B| zUv;&wpa$cZhrw({ujAvWaYdXOjVaSGYRZL&$(b%bj^4_0^b3l4wu7Sq!_Dkb?d-vm zM>Sx%e*cm9IAZXWN`=zf*i$}lU6bG6v~Hd}szOU*9N`gjT@4-Yhkwn4eWIH7{5mYh z^mS-C$Rx(S7U1WwMDU&O7B!@!No|#TZ7Te$6%I##B@{kA^7PPA-BH*A`0vOYdqDUa z#$CePuA|;tiB0gPFrmeNe*4k<- z!W-I^5uK4WL}2E)TWE(aDuDxxKQ3VjX-}wNsAg$4+mO#sz6CMOwC%&p0CHrbqKcX9 zbnD8?w$#*YxoqW%i`SLq)ODBFtF*~_uOl<$v)g^4OovyWtX1_DHE;_USsDl|jfDM8 z8Ce3qROX* zva$ki$(l4JsWv+L*yt6-(G%T zQ%%jL1IsJATgxp)wlTBY+1p&Tq1o$g-cZ%DF4JQk%P6&0w5+jK4({*l+&@^EmRp=& zwJ^`^EcP|`*VObk`+_d1Xvus>sn5=3nTfZ6eg^nH@VpEe5tdFgGspu1>9kC{+yE&xXp8-1_eFc|G;HQ8!V6Mu{vQ zjl5Z}jcAk+jYiKD)RKOB=&3cRkHkN`X%^ij%#S`H?2Bp;^SEc^5lUX=wUwf_B%&#= zDoL&?X}YTEnoLrw@WBf7$4iJcrQ0 ze;Xk_mysw+^gj$!Zf!|!iaT|;(9&fuww5pK{tsi7lAdk!mX3@pt8;|>>G8f_5~rk5 zqgSycF_M&|pQ0moazbQbEg_Q!@e>J9Y8?}L#>S#Ig8*>ga!xgK>EV=QCr}&t=cq!# z>Bk?%BeHXjHd*X6#NzRp zk^o6CdI#6gA}J*5*w~BvKZ#xT;&{Ak(c_r1kZOq2DibxTm?@m35{cPVGKa|2fuS0M zH&XzWau<2h;8Mj3lsAzlZ4e^{gP<{KN0Wr)h)Ref0q+!UBt1|6K;25u+<-^wwS*&dbf z?al*3)zw1>IurY<4NX2@(}t?JR-OzlHw*sRb76geY*0ztEBf075qED6Pxm@RHuxN}uWqSwW%cC?ID z&gpk*QvJa0g^7+Y+&xgAbVA5U^f|Gg(RUNxH-KGBbwu>3sVo_c!=OxM>x0-L_vho* z2ROmL%^^W}sKuLJ+!VNT|4qk0h2;wuE(aB)1uIH?%~b{Z=;xn(CTyuIFRy!-c$?-B z>oM~4S!UR%wFbS2BL*Ta1s6>2UdZvoSrb0;8h8MaRQj}?p_n!g9}0_u%W4Z#a}9H1 zhq=xDwZ&~!d^R{cc<622Y_+=c(}E3iB8TKXo3p%@qUyPE!)5a&;E%ZmpAGW4h6=Ch0HliuLb~iOb}9hJbe(KNQaepV?rm^hPz)N7Nv&%d45W=siC@6OvCj>+%J*! zDM`G-lRAEMWXEG28m zgbJ{riE2?RtcW1+It8esl;~ggpGZBiKl;}(K`A^C{h3e^ZHsGMqSYu^IGGS}|WdHt8#FvInZRC+Dn!+SvOw2ec#$!w-1eC`RWFmhN7+O(pQlefK zA>0!6+M#R9u~|{=Cq?3QL!aYC8uUpxPq>5gL(07xQH83pLh*BX5Fxx8>CTZOeSOxx zK4|(MzxEp5@Ir=(&=b1>)>MnMO3aB$%QWb$mBMI!eY{TbH1>h`Pb51g-K7*va-l{$niYHK&P_|j8M)`qCqnr2ST=v%XL z;Btcc)#%HvDZ_?SEqjc(MW8BN0LNVD+4RG!otMrl?IWfne*^X5r>GT`oukI9r@DwQSz%n9of_WzwoHDDmFCx{mmOH ze062;%2GzO=G1uwu5!QK?k{%*D&XA@<8p3UozA~-pr&SEp{iAhkV$>NZs z)l=j5&=b7UwO&n^n!_w z4|yYJ{AMzJ+;t3;QZ)A01F<7KAeWRVHilh$Sc0 z7p&W^O!Ljlag^m}s&)Ab2db(D7Ut7lat9@|EhW`jlAG$XrwH@Y3OzPsb`d_300{+H z&h;EDTC#3b(CQUyg(%07)9UzW% zA;XF!C=(HytgtDQMKV(yYO@qEYqVJrt)835`g&Am_k6_++vJJQ1ZlxHZCF^$g~mTe zl%h*d#KoxZdZK%RUm;7jM!0^KX*uFi7Vzyu^kyQW#pzm8L<@#xqv<-CZR0+BTyWBC z@GU9Sg-M`EsvTCP*sb#mH$;YOYh59qZ5T@Da}w39k?1c3e{)@$zcMHK5%oR@g?J}l zkHcG$_v;k8Q6*EOiRUP)LoTajM%2D`czB*8H`n3tdWC3I6c_PBha(p?#l9bFM7#)J zh=E6J4eJal7Ez_B6}+-~s!an|e0F_ZM~7oSi&xkuu0PeR&`j4jO#=gY*s_nW(rOL5 zQ57oXqYVF=f&g(pA7M|~QK}toKQ?~i>AlA~sOP(${vi6%E3XjOQ0yulRGsqi*{Dh; zDDNzoq;`1hH5h>#DGr6wiZ$SjVt7p{>5^2W%hdWK7Oe)cuzF&!`uNl-p})9b%HiPI zBQk4jl5OUyg0gxnv8hrrtW9NWP8+T+ca-GX5<4Nv^{UHkb2w~f7az33@B*8^+#P*i zm^zX%b~M6DmqNEuC6j~YD@W8A=y?e%_n zWX>ebioo6drD|jNNL*`hWj#Y_SQ}<34Vk+~@hvTUO)0E5>7WrwXUJs1YBJ@jaOMP? zPbmt6)l}}QZQxo$h_;iG7_#QhbCY&}ryBbdb9pURt)UrnOKe&tbLB@|YMM82OMvBS zo_H{8;=soqu~b@{Cy|(ucc7$MrI6&WFU?JM>BqFDlv1B7FGE+-wxX@XId5@Edyn0z zAJL>H7fGcB{Ay-Jr%n!RkkZtd()4NRMzd5K%&aJIP;|V>K6dQ-=s#c|Mn?LgKjvN-c{FB3 zqq&S3;fqB~P?Df(+!V?)314}9B7x46nv*Sspq$phTq)P;wnl`q=x<~dELh?$6k$wr z90iYhPt7RQqwt)Fsb|b6BzV6KBO{lcga#fEz8w|gy%qn7XJ^bPpe6Z?f`1p z%NQF!dTe|=V|+Xod-mB_?8O&(PhoMXr%8wqC2K_WsGy7py3wQ*S%Bd*hot!AM2Zbx zHZoEX zGPNAX+G|~|v}B{jVoXkRxoX>w9C_N}=yO;eJ2K?7KjO+w(koR;y-spHW_J#u_3_v> z>|K0Wiq8Q=o`pa*cYI_-{L|-m5Upq?vKaXJnK_)~XFxE`7D)pKbB9F6j9e~xT`Ylb z0yB=UBw2wLIa1ct6dR#6g>I44{+LVBajcSZU5@~(Bad;6pFTpZ2iaeQxA0XbC$rvf zNwKTIqdMdrlo(%oE%+SN8pNK{MB+(kF33A56#|KbExBbrm&sxqs;|y1^Jep-znE+$ zYieq0xN+(LTD=v1!;8={ozL$oMSfN@3*~&YT?fnVTFnCyK7d z@}l%E#p<)>EiM|aZBKI;zRc-2IMUi-Pm+q8)`ZGdx0EDxb?K_z-om+lf1%f1lhg%V zX???o?|&JSekGgM;=z0R96bnIBFR%Z}KPyJz}sAznocjGoWx=PGC)H^b6 z&(<5XND{!>AI;Er;tMNkeD#y~06IXt8h(?V1;X|eol1=rOOaCK%%Z5Z8;})83%^0i zT>_>?3W5V)FQJMp9uy!HX+zT4W%y0S2k2z1y{n-M8t1Qw8|=biI~trJ9U5l7Pa|jq zQAt9=SN>)1lvFLGWn@H1ie9By5xt6@Lym*+FGRcA@m54mI4w}^T)m{hq|!2PX~b)S z;>MbqtZL%Mi=2ZQS#vO5(;_w3ig5;k8JpGuuxJ*ttF*}G$7KqT!N#?(&v1cPD45+; z8eF_)aWEs*oMuTeSRECe6^qt6T$nx@Q%WRvfkQWSpNyHaVr9BPr%jcrT61V&OsZ6m5UZtRw;scO_5+;Fpp8z4w83BGE3xi4)P|j%E^^) zVz!&e?wjpVR?doMOnVp<%9CfHYPB%Eqyxsql+I_*(&|*hhIFW#nxXwmm+l{`N$k4>90NwccW?ENpJ;;%l~otEjywO&BdND5|tp>NVP= zEW6dyT>WBEie8smo1c@HY6WH)_%fdz-{@0e>{IR)^codk%?~1wS6OM-*flcDc%|X` z>l;!zjD6N{;zYw|96~SDvTKk}JBS)|cVW?kalI{2eh|J%jZ(4`iZ&5++f*=vr74)H>W0ryG2(8K90mYXumyf&M+EHkmU zyOF!)b_);Ka!VXEhfM6-vmB1BEQj3ULv2p2E^BU^S1RS@T^4;qvRA-ltoZjY$`jCaVgEEbmDs>gSh;JA?qdVM|5 zUxO&kQtWc}ng$kWI(>~V>EBZ}-)P4Bh|rIgOlPLMwJ&e@v(`MNN~Kd5)L=R!{3OSg zo~_erbas=;-cYMjwKi0y@|?Ar0?PE^W1ooDYVp+(9?!*$OCyc!9_xj3ewgsDjaBiv zgo~wzle289h)q9=nTde{3h-LvF&A2om^F=vPhag6o`^?uhE=IHbG1Limtr)iRKswN z=guh%NTRR3jZ+Pg=3BvWsVwEb6kRfBHo2_?t6|tp(nG7>P9U^PCu+D6Yn9UZly`=8> zswlE=Fh1p&B9hkTzAI)AbP5R`v1I8DNjkmGX>z2eJMxNZGiY*J_la7mR5uWSD`_2X zKq@RO=zPMllJlnvD7JiXDl42bl)i$SOeh zdZu)*LZ38K_xhoIk;M%tLG!-y%1s=$PHEoHKBN3BC=*&|_aiU37dq9)&i(irrV)NA zT#x^IM85y8FWzT6gnRgXdgI}R_m04Ui#bf9t&l6JIj4x^<2q|drKEYAE(V@Rj zOvQ&}dsowcNb@D7b_z-Vy%fG$eMBy0{9;|#CR)UI%i^UBDAhN+#cw1^;p?NQ|Uq5?#M!8D497Y5ER6N0D*uqM}&SXm@Iho1nEPMqGD~JgE#8;3h zxCA;^$4=1c-G8R!W3jGFQ(@i zNsCx%IMZ8g$ts9sDMn3=5tB*ZV3{{`h9wCyjl>dCVD*6zHOq5zY5x30@s=lDvnMZe zrd%lsO+p6<7tT=v(!z6lL;o$KsmK~?>?}+E5^b?gQ#){B`&Z{VEvm^V^=IIn>9|e- z=kQ!4&R?|bOZ;^i=LumJf6Xnm6W_`tF8q(Bz+b!NQnUC=u8TNFZZX1JOukRa%Pm;iCEqjN>N>cf4Y>gJW-c+MqT&@Frw!Q!c1;4 zg0H|5Pm6-`3p{;4%^n%TJ#iWyQjo-y5vGus+hiP4@Ys~Z(2OCC;}E1$p!7*zN(>|k zLTf^<=9b!t|8IfI`+q70O1~zTD*R$ygcolSc*RTQp;Y_q7OB@VUJ-mlRhDEb))ALb zvXHxk`!HXIFMSWxxgrTORlYvJH97aE{hHRZ&T2YqNAp={HSaj7qTHz_mW#BhVsmxGtiU2vkQ*{ts9?(=Tk$+-3b9t&;xdzh_n>H|M4~5rPe6cPXKe@#S=RV@vG!&cG#1JR(5XX#G zi8T05=4Wzk$#^wEwj|KQB%PE2X~gUand>PTk(3l86Vs8Ag59W*=P&WJI?{yXc-W>h zB5l%C>S*iO2XzCDlGHd*_raL3p{=>O?E~?l-8u6+O6X0A{hur-D_igy5TR8ltWQ3V zH&C$(X7u?ZKA$S&%#1j7suE zW?r;_f?|Dj<>`4@raq%9;3z0xP@868lwrZME9+$R=5T&ARbb{V4f zyBL7~TuLo0$6I13L$W@nravWG6S|P~i86ka;e$Jk(H|0JSY#aE_k}H{Lc_8IC-6qb zn2fguw)iIClqgplmvoA4e5$wto>42l)eqj4u=-Z=8%Vrdx=PA^1p65tc_V%b%Vo(W^crqSGr^vsTpUg#eQ3shkZOLaUcn z+0~kNH}q3f>1bWKuO!*19?@qSa*Arap%z<4ipr9iz9>}I-JBOaUFpaVW%}lsEGZ)v zPgeh;%J%e3v&!sptSV^lxUC={PAJp8L05UFUbm(>rzVi0D_cMT?P4s!r>7)VB>C#R zD=1mz)%olYd1v%qMemYuo~!j_S|G<(TPx21`1<5RhIbyl)$_6nHl2~B8MVyYbVk@@ zs<-I%G?l2w%W#y7hu3X5X}&Ni_#eCm1ZoprLu`)I;4kT@$@yO_vRyqp?kQQTpO^N>#@-fxq6e~5Eq*<6mDE zTo3sOT!>H)_au@;!bol_@*rU(dkAB33Br7fXXW63RYJRnf9paKTXuG4Musj|!Ll4! z+Rsm9ngo%Ui1({aGv9BDi%GG=7|bOc>Zog3#j z4=?uh%_z^GlPL&ZCq2|jR2I7U$O{>oIeMs+Q*ebm5?`Uurppj_zzopHe?jX_mjZXl zd`AAwEX`QTG2*SoF%rpbnWY&^`FP0~MWCyRgQ!qkGr~7%K;(tq`O#w@;zTSy&1gtv z>Qq+p#2*@?j9H!nlZ~0N0U;?qv3plI7(MIh_=zhqixYB&jwX)j?Jz6PAftI_ z2;b1gyOJdh`Fy`R2F3`P&%A^UYt3Vy^x%y z)oC8lCut2rAwkMy$S~_P#4DWtNs_u{KG@EsEmJuyNps2&AH2xEMMemQsa~|gAV8~fHavT#v zTTwavis=8791LXkF|7JerS{E9!kEIE`bJo*S)@bOH##6a-8VT(Z~&!pdEd6jXCNZY zK*mWeO?wHiqEvId)P7m=@*xbn6Q$(3rsw~iaj%n4>}SbdCYL>`OD%N5`weJo)eSk2v3-rl^YWk=X6U5PvzHvZ}^*5+}ro@ zvEGT<1D}VG4W629%GskNr!i8+v-sTdp4>Lq9fAL8)%PnLycVk!3Wn|z1{V8-MD7g>=RB?|7W2tLuM%%qfW zdCJ7&RiQ-6rfGW4H2oGCU!3S_{nB^IZn{bEj|l!Ryij&x1WJrJ`BQNjaLB1cy%7q?zK-X~z^DLgt5!zvt(rnXM@WA;lzG zoe-1EktD5?&kW@6q0H1R{FUK&H1iAUMEJ9;LZWTcF9Xh290`RH4|UGb5i+mXKm{${ zO<&A>VVi4l1l~!qy(MB-mnKV_&Pdjm%cw!^(Ufi`a)i*V*S6=(;P~fDX6Wmw9O+fn zRtw}NDxlN^o+0)8=r83<&&&_kE(KC0@WHrL@316B{7`Sk2XEyx-}oTV{H_pIR>qkwCSDUDb)TlY}r zHEGwyCd->WoJPg?XrHDn=*gaFg#X*VHLT9P&}q6z9&ZX-cW;gqO}I9K+%M5-$>%VBxZpCL2&`2<#qqXHJ75cdgMd!AhP1 zU{x#rw+wV4-<`KNCtDDeSO$0Iy#8Mk((&>4g8e~OqS=^Nie_G_Jzi=^))!e*JQcSQ??69Wkb@EmJ5w!5N|PP>z@pT_8&Ri4 z)M^V%g=H$b77SueND($90MXm4vTF7u)HA)siWi7%z3uJvE-N73W)*%Oy;(H3Bk{kl z{nVex#}U3YJ`O!ZW-5Tz-54Re&27wx7>#bFNco~_wHxmfxcTsqRR|_poobV>n9F`H z&(Vly;oGFHuCC#|d%uv0?`iMoXuqB!4O=6h{YB0LeGNJj|7Re>|L#lLUXHGB$Nw6~ zHLLpn@b)I~ZC%%$@VgHrRucO{f&@qa+(~d1#YGeeYJq4$7PXjKsD-i3+UARmSc2oQ zapb1Xq9)asMx9oZL~WyHsuIaD(IlfT?zD;p z&i|bI-UC2Vw%gA4i2^|Y7x&$FmvhfO=YReOJ!R;q$d;!lcUaoX^Yw`@^3G3XPU{*f z+v#I$Z|9oCUbfTYG*4!FV^`;sx|?S@*Ch7hq^_6Ab4`d*`pHU&BYtB_I8)<9oHxZx z1C;^ARMLE~A&XT$48$673_v?+qJxEd$>24*C*lbH2G^vB1mej+q*+VcX~lIh0s)QP zv4h>rU&IGa(lyt+a0O^k*D9AP8v)i1jx{hg1bEO_YmAl+W;6okJ5UtL)v{jQhZ8D~ zkLmot0FoU=xrmc8$4FaGBAx>HT}&3>)DS&E7vY_K<-eejgYl8@}m(dW)PnG zU&g%yKLVMNpa@Y%l?Gre>S^?XfP~T9gFhIAmSR+kfHYKI?q)3qYvH1M5M|M*-|g4S z!Z%h$T$JA{Vz|}aylT_>s+GPN(FiGM*up8|L&U(LRSl~EMv4PIPTFeSE)M$m!Qc-d z%FM72fH^}P2uDF5slrlWVcIi|a5#$kNPO^vVs4IPO7W`{V~91-OV_oW<9>l$ZG;u& z%F1uDTt&GFltXk3%I((6(OGqEInq`d`9Aun9L}`5_sd~QAF2(X)p4m=y;O%B*@{xs zHpGYHnp_v!_80P+AsnMC+eR@aC`YwfE$7e(v}{!=ZkbUVY0G5)*4rZa3Gr=yA9qGQ zLw8bEejmaqzonNy$umio->1A({2b;XAvP0uzg9ssJMiz2o(KXZEIB44tY(-qu$qw` zmCI%e=gv`NyQoSPQeu1YN7+L5MOYG9GBQ@ltVJQX%9>gr1NZFNv$U{KxFM{qOReJm z;$Nnh(l0F-Eth_k0ol7ECVSVnY78)5poDJMoGjT7rNi1jFYjS-@^!;~v4Of`Ko?GI$>`s2s{q5fUFyjdmw$8f%vj z3DMIsJUPe_{W7{AELp{W@YFT=+6UqkF1;m_;s}2n!p zj5P!~vYo7jM3uuR&+S8{_@q)WCPgrbz&R6dq=%HPEQt3S0c53sAs>x2X;@+2!3KE@ zPv~B7_WYQ77@acuc?Xjg#}lWhH@S>?UXeAC*2gvBydqB-Y?dt3`lu$-)wm|H7jqUh zRoFLWO{CMxnhppzMwl#|ro-5@{gmvfHgNzr5@`uF&8{0TS?C_Cej47mX87a!GQg^7 zk%+gUPHV8A^aeDqdeYgwin0Y=%!gaD-x%0MI!{79F@KovsdSo@hzRk)+`Aqc9ewCs zxy89FnEW3`IYIs*&%wHXh)#rwqM>-;r4kGL0XEkd&tc*hskuJsSgQ zp}bwp2EqH?M!oebQtC~`%IsA#_KPI)0lm~^d5@b=%9O~f>Voa-w5%(0@49f(gEEEQ znlNjEv`VeGn4{vL(wk{)Xx~0s)jTk%4Ojxri;w&F06aL$P$Sko$zzBZU!C=KU7QgF zY#F5AYG8)3@Je8D$zx$U4#lQbp2K8%$HoqK;*AqrG)>NryVvm|9J|frL~(d7j>FpznbSD3rM;mlFfgGFSbe*2NOI)@%|G>c0GZKwo6$j7dSo6H zbo4|e#uAP*vvYW5zDBH`**UjY^-Wu1V^@iV<2>v>lnQGNAsPpapQMD{ff zcQsmiOPU`ZFr$Y-Kq}jND)0rFu2b2$V<+W5o5ry8iE*cieK!4bdH7_ z;##D^da~Y^qE;n?OXvRdE zt%S66LMGkEl7!?AS%&q~Jz1fQa{|X=o>ZU4%572*0bx-zi>1n8)f~>g}RBlVP9O97by_71Efsii3XB?M_+fPn*4wXko1s`fc*-rav(5MPf5)M|tY39@3q zsDWn5R$_cTWM_23odvLt$6>7|IvC(4NuA}vrN9TiI1eS6o53k_;Q|fYg$o7oMDAQZ ze=bKcMy2@D5c#i#+o!2+Hv+q{eIlZ~R^`T&Mwv0OEewUG_ zj$DpnPjk8F7tp^F2Sql4QI^3cz^cn<&N@Js44Z)NDI^Q4opuQ}0nv#vH-L z#~qH7EwpvuNXlaY-!W|oBW$h3VW`9b1S`gBx0-m{*f0c@Ta>tg9(;&+TT6ymm=Qv) z@jClzzM!RFiuwY+p1P9BmD)IgHd0LSAeaR_j)b#0h>&rZom?kjd1WjNxCP1`euhJB zRhaSGmVUwTp+Q}r=q^PcR~kPIqX)aqR!1bSwuxgbp+s0d!RvgS$8uIAi-qEJR+ z6WYXys`$Vmb$e4vZRT=>HRDy}!3r_`S7^QXBX0dMy%fz?>=jhXY&~-qu@#8xf_+%` z_0^!1dB%}-(K_O~Q0k1Vi%PLun$AnIE;^gYy7nN46SpgP?{-0>1OFXbMP+2GJ?=n;FiZ)>h49wJM<+Ed+MACWCyhLW3VpNaR?`V3?N3(Gifih+m$4?}H=iqBXts zf%NV|^Qpj=`L|>Yap>>G>SH%ZWbCVl(4hez|V;az=w zyM|-v$dzA*mFPEE`o_RyVsRpJL-DvzI;;vL@3ro0*jAYd-8Mw>afCJ~JS>TYi@Cu} zo}soqbko9gc6Z&2TVGX&u&+@i8q-9m3*G1a5Rxz?|!OQ@!nKYNU7WIb$fT;xypgRid_mT24iLU63d~VlWPBWVG#8}OGLSYXdOA1w+_i=rDm zbho+gn~|)NUgl2Y|6Pc~5g~TmR-Z z!f_F66{v3;ti|tFgE!}it$vvN~LbA8&j%(R0B5IfLoBT=>eu5Pg zUnNqJTn-_d=X1rsm5YW5p3>9XCZTJ@#a{sZNi2x9mqUuvi>Op6+t75^RjyMNTD9t5 ztxlsp^-=KzSm_+74{_wgOZR=5$-=Pk#|`Vg`WPGbF`df3Rr4u_r5d5aL*J)HP|hO~ zoT)hb0}4yvwVRuh(UNiW;sapEsHM1co0HB7;GU%>&_%xW7!Slb}macpKZp6+)ca1`iiWktpIZ?FhNXb;vxd z!@|j%1_HHJ$gVR|ubW<9k6W#>QGY)!9>e|DBVUNW7Nq)i>OE%dpyW6RAV)m8q>&gJ z)Hyq z#)AT1&+=#%-)$LNX|en+yj;#tR=pEniDFCyeWUof#rdq|cg4w-mEs2V$17gT=ivF+ z4-VYtAv4MDHN{a!(2ZHkqX;b0@=VAH>-|pTO8PP8d4x{!9;@c@*b(ERxzv*p1x8vs z9rOnI1WyO~{(%I8?{UPFCwCd90h4#})b5!Jg%{P@>lY>;+TL>ea%NZYb96wz(2_Z_ z5nPyho9vd~QrZNDj&}v!KUVS>VVueKOl;o$h;9!zHELao&k3?|oz$Cxd-&{0!pc7e zR`+rXaXGsONc3PSt{~UD2eo9zilD0Ikdtc7DqzmX^~od+75qo!42;&2eO2UD;8#K2+s%p`wpB4bT zCGsRrgTrWVL@gRiEd_VJr4&1JRs8a0g95ntXV=aa)PErsU|<<<8Z^LQTK!~R5&?6} zPSs{yISl&)cm}E!f0O19TjN1hgEAV@sL-rDyqapI_S_6O=sO}KBUnQe03=sgI z$=L~An6t+b#qo0XpWkb@(RyUeO^j`7W+@37n8RGr-cek1`WqUmXE1z z;_WnhE&tg#cMxcHPWSx-o%O8xPPCOcmcY^k&xUXiQ4{yo5CkF?e1g31%o`5Ehn}0X zkKfG055-Kk&(Z8*?V4v#3(o>t&BVz|@l#-TN9M1pDus@|sMcZ-Ak&H7# zU$qpUEbDzSpm%-#oYC#F%Z(o4>$l?i6s4y?|I!%%#u%Ao+Crn-rQ7(<4zyg~05(HSE{faK!nLIc+dAa3=Zb0T(b56n_| zHL;vuhL!K`CvQLZ94M8F&4v^K&plQMBpcd>*XfF$;IK0e5tcaT(w(;;V8$&73SmjTtEHr^L#i~AF!xz4Upf2g*)CKAjH zrSBhY*2kOtvXVo+rb+`xyw!<4oyJc0#{!&TgYT8;*#$`AolddoJbo9ybRNsOZ(i*N z(cYf|rfJM4UOR8m*N$#SBTS}TJ4PuUS*$~}f>r^wg4v=iHl>9XbYxZ#B>|up9iLOO69G}0&wQ!>}&($f(@n3!= z_E%XEd12Iy{R=g>@oSP^bSkmZsRUQTKlLG8i83p=ZHV#F1Xz>RlQOXaiBrO637yLg zxqvd~o?kwNpW@#x3pd!bKPNK8=Vrm4^L@)va1fEk+()y&51c5q&Q=6|M6fKJimToM z!jdUy%$#)*5M8$7!IQ{VJm9`$01()^d~SpSVf!4?levla&OUd1!-nI}%@)i*HXhuZ zNNhg1v0(hsp$^TR$Yf5;4XL?Y+286RwRtp`PUl9O)zV++bsACdY@;s-`A1mRXVovG zFTkRdsUc};M|U_`SVB^=tRy)}4~Ph`cK^5_HWd~OVfo41r~|!<>yZY7{tP*)-N<+n zc9d^V+@GWy!n?{!8{r3_FQV3z`0H@2ex~n3I*Y&DBpL!_13M-E~Hs; zi|x#AjTr(9mM+;rI&O8TG#~ZU8t7WGgA=Mq{vhwc3VvP%g$N6FNnMo))CSAW2VVUwS6I4v7L2%go>5;zjr#6@eW9*OtE+=IfrM=t zQk-@N613~=4#2WF%G3kVE_H+5c~d#i6$8vW>WMyFk24WKD+xs1b&5Npg;gyacB4;Z zJ_4G`2GX!Bp0|_;hJ;79aKThcek1~P)eEYH@?xyIFz%MJ*ct0o&w_A|tFltP&Ru4q zek{r?2;guqvLLLw62^$~z5NU8pzu=!f?89c-5x*|!1k!tu8Vd<38j@~YM~|34kI}T zousj_A|)Mcu|GR}AiFWxUsv!a8joa$4s7YP7XMPj?A_2lx6L;+`wO9TU^shdqn?Q- z7-{Q|ZrVkW#?7PmrfXm=Dyu=Y$Hc+IV#??-N` zRt=gw7KIP3*Y#&s7j*5pofLY^+sbo3hdvYMDFlQ1%#KrU+H9LI6y{x%$KSr={`WjQ zI{NT??q3b37&!RUw&J(20sLUgiT(YrmCpkDEy)6`gF4ddYLODBw$@Ih{&v4+XC;Bv zI*MTo=u!I+z{8Xlb{NsSM40l@?2*>(iy1Lcc>dgJ;^M$R;fOq$>)W?Eb$1(ObGW%> zU|bE(OinstlJuNjmkuzKn5XdxCGu< zkFz(n@#xmpo`cWshwk#UO#)d59+*r~{DKkBpg%j?bNL-_`PId~g|{3hI>DBy!yASV zO|`6vlf;@M8`KYB9SOl&O`P>!XRJ+&DWN!gXG$xM++-U;dnK#0!RBRZ4=E#mGIAt? z+Y5SeXksO|hq(0!3`Ie9#aCC7EiK7&XFz*-Migg;Te@r9)m7D=+JWx)#`efUDjrRq zdTAumu!I#t?fDI~hdH51BLq0x#JI6bcS1b20_djB7ha8XWtSfZ$*JJXj7Fz~B1dwS4}X$P_L&1<{R}#pGr*t-Iov^MMoWBfb;sYy(Yp+rRF(AWl zL<@YSeRE&J6}7{XRnyls*55xiGBVuNH=JyD)l@Axqpqf|kW$pf?a^raJQ+hMZDKm*iG@L^KGc}#t^p~I)l=Kw-aOg`w-t}CYDXWIG(d30k_IT* zYZ;Np8X#eGIYH0Fl5qY_fqwz8`@2q1*{R|IXYpfLdzdX4A9!}eFQ9U(r z25Oqikaw>#HxV4e`X%{@M{Et{gH*;@E{giFp!Jvm%)VQuIj&{}X3g>J%izfcFEAmD zX;v9`{(iK>M}BW3LlJm(IYW`o-7ABgs4euPcK~N7nmBhlc>3IusD5_&*=j-1W$ZJk z{4pm;$m^WN50&*TW$G%=FJ(RH;w2MUO)o0E{Y!OLc(72FSJ~rKWO<8*|U&d!?=H4PX${%>!~za<$5Y>emK+rY4OcVFE3>m zG5SOb{opm~L&Ajr1?s5OQ>`b%Wn+$z@OAW5ngQZ%2%8>E9{;JOp@C$d$M0HNx=0c$)U;8gwY^cZ3 zQh|MyTB?4}>uag%f4Tc%uCR3P`u)QuKr#R|uBWBKkI%he=p^LRENQ8rqvZ2(DzvnC zt&pA>YG@dmN#D59)!p4yz;t`wpo&}QOeQ+@@|Ry(qdwAN{@tM{9deYB*RQlRnB`iiN$ee*yoXyuk1e(!M4 z@ZOr=zie%6@2~6H;PKn@?&jLofz9oDG8d;z8XgV!8mA`~8q-Z)+Hz#lZzGEfv@F7( z{1|Q3HBwU@rOY;1Mi_<$)BRMA_%%}8+*>0RKO8u)Ep5v#EoB|OTjmCg0KipHS0@>_ zu0v|}&5kvjjwd5Og7J)&lAZi}7`al8F~#F?)`GU)39?b9NH_J-5|0!n2q_A!hDLgZ zlI{^D|IMZ6_AHB?%jv=1fh))tFxJyL-P=%9&!4|@u@@wLy8Lcq776Gr@ExwhLxRyJ zDT){d$}N+LCKWB|J{hal+<~y>3B>SI<5P58IwxMHBR(`KNKX@=PKYc6%2uA$0(LeX zrw%C9^0E>e8@`ULpz{;& zAAAZ4H#TVCVRwQCQBNS0G)MgPZ1_;NL#av={`$#;#_o4rmUH!W(g|%F)90#@O$hg- z=WBqphkqHb$s&YUD!krBuipqe3rgvkT=1>?@qLze79Zx*`j&g^NqFBLn3q(i)$d1Gg(wuE3&jIWaGKqxO>a|vd5Edwt z4MCyP%~H}X!Ph6YbJ%7$a#LFH=>Up^WEE4?;B&2*pD$h0XDy8(`anj;Am5jqr`UuI zo4$!llHPkl934d|=%wJnz+5Jaen~II-cMSUZqY}EFlo`};nOYpLwtJ12^yVt>k^c! zOQc?LLI{osBCCbn(k%5SvS3zgD%(=O!I4Geyk;BvY=MpFi`VY{9__(s(?`L~FLQvQ@N8UkAu| zD^OinSMs%j?wjAzX2s#|!yBP#5_t$q7?J zrAf5h-0>Y+aBAV&Cc%HH9K+Uxp_b_zE0so z`EyQdoh#lm-a4>%yg5IePERkL-@cFH-&s3n3qI2XMknsN3%Tq1YsIFx{}stW&~L^Xfmz5*^|zoOdb=4s*q4 zvx2p^n>mSecm3)Z>L;5!kftLgC^$OM)Gof#J21OyJS&bPBEKEqr=7~k$4T1;<0AV;+W^T*U`cCTCaM^xL zxgAh9*N$Ij7q2g#LN=a0VLwqZjX9#{D{{^Fik`Fq?K-LVgPmqO2? zitpTq-!@2yf3Dig(XtUG1?%}%pr9UBwr9FpMzt1r7AJeP$;qnSakmzaSM5HuO*?d` zYWH!?;y)?8CwKc!R_R$FSXYlH<|416(7FG2Y0vL;{);(IV);H&3pRVBn$PPdwwD|-t!|& z21wUxBmt$|0QOIaYR*hE!W^dccfdoPUAdFJd^wA9;IS4D>*W9h=|i43ow*vN?%c_t z)SWv(ff81HJ4Tb@qS5;p158djJc!iGi^YSBbQ`2=)Pv#uFc=dmnYgpW?G6AVzVI4- zd!>22CmQV;Z#JHzJ@mRqe4(L#OMCm4{s!YYw*d)#=z%*3g4ryC9nG!OXKJcNjRV<; zYc1JYx*|=7A!!$YHO<)8Q&%pYS~!)R8yuWdYjZEYI5Cl%ratRH+jpX-PSO>^R;%ll zPb7U>GO0AwWhq(%Rd!EZBT;<}zrX_t5mk1aF+Hd4z|a5%YiJKRSzVP3^;I?q@Hqat zgEqT0>v{PCs9K%&de20bS?ZgEkvN^8qk%w__?$dfvrLr^n$Dg?!06viXk!Cb6XbK6+5EQU51dqws#lx}(~nY8K=Zfb9g0fOJWOkev3i zaG#x5za?_H;{PK1OG=+5tzZ=1On#e2r?Y2J>*-Mfqgo)VwCOj)D_i=>dESt(OlC?V z=#!o(!Zaxt@kB9hzudyW% zO*mcE$R1#iMY@KEyEvanb+yZxhz433eYtv%r=A{Xh{B#8a%8?PHeu!yvl=WOlugd+ zjqadKa?~F@7ttjn6f0W6F$3>9P*;ZI9Wv%3Mx!>sgVDM%nH+B8G0Mq7iL2c~baJ&Z z7RC@=F~g6sbdl6PKLl)Ha|cScrzMQm4Yt2X5s{hbuQgEGof`a5xaE5l{p zs=pIN8Gc9nzxq2JD6^Bwh;Qld(6u)4JKrw*R+8WOj{Z){Y|l&Pw|)iRq89!)dI!4! zIuRZt@`9u=x4Yp-9>Sh5o9P-#HTC&9Y0<{6wotV?n2gn9a~tVy4$^=in# z%_)p<;$(Qm5JOmj?D)nY{=uA&KRHtd_Pcg^Fm934o$*@5dS!Nlk&#q{9tq_99l;}@ zzy8p>3&Dlm{mbc#=}WyAdkTH`9}k>(E`6o{W!>j!#rD?DY>%0Q;xI?(TJ_jK6Cm3X+n zUkRtQaJ4cFe-zCiS`B2kA0qw;z8eN{;BLq%#nu#Qq$mrL#IZF&P{eQqt`H7a#}eZF zuHp-mZ#lX>1Z@ZZCUSx8$DW+rcqls@NQVmk=7#xgvroluA?q6bbKHtQHCq8kOHLi$ zIPV0PaL_rw;qX*TxTUvlbVo;XLvMD%cz+^WhD^iWkk)Z3DF{;dL$(jK?5K&kU4S2t zr?v5F%1dD0=l2J{?)?GMn;4inTKObQ5@eMmhntZm$ZZh`l5eK)O>IO16X|h9S-O9* zJ+qK$CI;+5wXOJWqQ{=jrANJf=dvg1>Daiv_($R$^fBHYLkeL1-ER686&}3%-C%5B zD&dQ}YFu-3AbG0uB!|djCDQ^_mDcWiE7tuHF5-_z3c4KLS7#Nn2P1)LE>O2BiaglpO#gJ1qt~Oyp6YyH;~o zk?ifG^Q-}~AT`9g=i});nWKSH=5HXL;Q2#F5MVOn2&||wcLP*B)#JVLQwxC*TCbT)?%3+@B}M?$HN!2?fD7ABuOFj$}zCG%a4Zipra^kA2=gsMby^B~ zH1@qv$X;*9HcK6g)3zux`10q znwk=gLUd_@fz6;a8iJPNLvlPbn=V-a&^z=X%oeQ!eV3$scw|s94cTU6FD)%CE-voe zOOUOWSY79l!+3df+vMc78!rzG4Gp}E8JN#M<$2Q-FOq6o(6?{Hx!O9fJ~}sdOJpuyEPn3N z$b}0d=sN*B#|30wvjdgo|BS6lv)Qn=G3`l}C5;NICAuP%n!oH(Yw!M}N6b1eotrp^ zZwfe=)n&BO0Uh1qJ?Y@%5dpaHB{Tt@`0M8`c`lus7DdmcOCI*plwS>JPa*78rK?dU zFaZ1k@m3$b`;TfZ_(nZqU)aaLU%^a%+?WsA8z4SP_RRsqN^@GDo%A4 z-;H`IzUjWK*kq?j$%88j{De}M-Am$B2Yq3ITHIND*P}=(LN*at1~O}GB1E1nGK-i^ z(@FvM{f|S|4CAEXOAmB(3^cbiG_+u^clc|O9h8y&P+j`GKR~D&G0wL_|0VMeNjuuy zAkii2zx`exh=-f|TH;Vn7Yfb&?M?K@#KhXS3VJTjW&Jrb`uv)Aa93E-;$xH0 zg1fJ_$`bG?Zcairc+LBr!S7$A0l`+o4;;4W1VmcZyC?JM^Ix4>n7R+j)3+xVPA$wY zoZ?@!vL=x0@#|^=z2(B5;;`BfdhK$lsQ21n-!+=@Bg54pG29xe#?OTKVDU*j0E9ig za30=){Q1Qt=h7n81jLc}j$RWmeApW8t||?vLk*QdxNu#lX1EnUs4UBMK}yhb?)<{} zSE#1*`SWOt2lDH`VkP;2a;XQZHtcuRYaSP3^ITRJKuooEVo@X89YUp~%#tP*Ac&z; z;x|+LwkNO#fD29F@q&mwtvXdRSa6x?eZ`k&^EpcsenBQR1GxGZ6eDOP@L_;2x5n}# zw1(P}R9Z6rdQVadxI7*u89MGWbbek8ANV22U4G4;DmE zDko-hDaog>sv~fh7#Hpd!tOMKTg{_6kiN*KYBmL6OX>z1XSycIN}#!cs!kZAfDt&K zKU=s|{L50;>ySwFxk&1)$wt&iS{cLs+dQ^W8y?hp2ekGv-*E5PaBuJM7?Qn2z!F69 zY6Prist%;Rgb50%lxg=Ww=R{Gafx3eUChX>Me2h7xJN_?^WSefK3cAPe`4k0sZ$qM zf(G8Mq#`AnSl}ghClS67Hw2qPrFdzO< zQe$h860-AH@+#tUI!{>IW(o6-lM{|mq(YGn!s%Bi5sNQt`DU@9Arfr0i}vE5SzCj3 zjpDCg9k?}qd}~X~*5l*Yiu2X}Xn0F^eqehf>aWh{Tc!>T(`gCu0~ir%&n~QMu(P2} zeVJ&;3xVbJ+Lc-#(u3LU)*wM90coR_LCKrKgY2BrB24W|kf^~rO0cz@9+J~U8#UcJP?Q@(#zv@bXdCj8v`gU}hShwlbyHueHtsHP-rR|-IDBQf z|5a<-*CP>Ut)<3hmy%^_NG7-KrbsVftw^{K>>qJOYi2&v@?gW3 zOTMf@>RpOUHN5}yyb2{y+0^;+lJw1`NY|#8mQ7s|<5|vY#MjAr1k0tvM^X_TSF37B z?Chlo9g>Wcb9`{fP$a4SJa_nnOf#o&;zM%QyxR9O#V+;nG|dXV3VW<7kEFxp%VG+J2)#XV70+-RoOWd|$2 zQ4JIUBj{gm7AdL#$Wukv^LL8qMp@IFfeV!Q@-WUZ)!2E{gch|%u_CLzEnteHTNUV6 z>Q;Tj;X8f($-u4t%InSpH01K@55K(QDx7IpiXZ}rkb*X62&)F}wCW&&5NHwWB80=c zfi&VNOnimBc!3n-Ll!1;_M+&49zyH(e_bqo%jqmYJ;4IH`|VkAgOn5ID%5vN-c_oe zg7qq=EWy(Qt4`y1aLcf=OH&kW3z$*fqy?YCPDxo1fTn}|qBE)-{xa7e2y z?Uf{NNx;a%t1fDceN%GNp@T)>UEj3MFdX&S=OVr(8)8JBd*F&by&&TU{(1X{_Jc6-=Ta39^_!)PRD? zpuScAJprgG!aV44hbY040X_FRT!`mzcuU)LwWZ3^(As=teA9e$YeQ9)rK+@XQ@jU7 zf8_CQ6$;I78b5+U_(rv{%V&||ZDwF#Cejcv|DsuooxbXiF(!MJwd+SGFsMmA64#@pZ)KwX70%OavDZ^}0t69hMWXtb2_agZlp6V-YcQ9fTUJUXAN5 zBy(x~+ZV|-%3IjB_4w$T^|xmE7|ZG3+3kmo)w6c-={peXWOUNPUK&YiZkrZyN8nxb zx`3zGoFqw+D%Cjmks#&67H~5_-B4s66KNx^Atj8{R#x;-v=6AvDP)f_O0-|WVTa6v z2+gLT=Mh6O6LqxeZ;A)Z=x69>q!XnOzYYD&)}sYr69P?X+^O2_25rX_@3_zmPOZ^W(kYP~jC2LLeUjLz@TT_ayoTlb0xMKVQH=Ybol8Gpi}u0Y6Fr_5 zlj*Tq3(0n+OCZW?OY*b?AR5RNK7SxMUy3^sR$2d5>&V@r2atZ(N; z=dSUTKh_#Zk5K>vIR@K$67k-dvF_cQQtF?S(fMFfz{(G{0J6T-A}YpXtA*)KbyV3w zz=Gg6Iu9E+N>)O75GIwGEd8|E7Q}Asv%AYlf?#(c-@zw&ZztWll*LPl8)Dl`8`WWwa8bf`b}IRqV#0yYC<4h z2!+&0zzfd;JQQV@z~(K_)&?L2R!B^Gx{UrqlmEtbHF8}XFXitj+KM0JPnHv!K&H_e!SN#CsUe07?q=D~P}E4B9O8qXgtW+x#yNw3(8;8$6PEMoU_m({cSa0tBHX>B<;Ql5b650?1kJk^;28t$u=}z;xu~BPw z5ZfSUi&EtzCl1FuU*HS>dHY*-8%OoppN2!TVepHTt*ZUpBG0$!gI^f(R7N% ziNGO39#AuetUj8rRY47y9~jEIhj^=!!#RY3#M~t1o2~=XR0ypxY#!gZv7=k-h>eUWILU`B%7AH(k(oN_cqnxlQWACC z0PuB{iY7S|(G(fR2iZ6*R}V>;%$7&8tsV7^t&|%xHN7yA-Z9$YNxGMv0pG;Hwyj$- z_4T>jp85R;_lV>|$Nf(RQ=4{o4`=)#htm=8jrF(RH~cvWzv%KW6^ z8wZa?hj$O39UE@xsrA^*%%roUv88HnT__Wr*?oSXvkUn~DPk))Fj`_)if!1LE`Clj z8f7PdrAyH~#Ql;7Gl0{X+wYXzn^v0>HavN7WaJ18$wY4>2ZpB#@rKUj7Uq&oNX&%U z5!`=pA<-422p{OY)hnam61T(pz6W^4p-ilAhvw|-?A)ulIy;pR<=brt9Rzv0vRQ+` z!BnSpCXFdDwCmfZOn+83Q%C_u8`@2bNh+CaPqqV{%;yz}4y!!u2ju?B^GQ@~e{geS zYb2Va=!B;6{lmTnE8}Rs@i|%k>ysJGs6bB+lofm=+AM{#?VL`Psd=mC09Fh6dPVp-cP22Q2Kjy)w2<5FWEVSC zNg3`)sF5#vM5i;bkWYF#*VtO`wOW=Cd^fV3KksVn&yD96oT28h6GHA0@sYd#(lR|5 zV>BbJQ{tOb8}XM7XvJxXF|J^tS=@V^|eZY{cu9oH+43sOP_)Dij0~9fUZWIPJK}Vb-EjIXz!9PDv&b8C2;KL4SqYF6sf5 zH8J3_6kU@_l`=_&QK*zjQnm~%d3wwA>;)Te!LsZHBu`6ssOKdp-66}|5X;*^d`F|Ety-2x)mexz3f{XQFkG-edUPVeKGP(%Ih)8KmGp>pH8ZH}}Czc0; zW&Dh?4E3Tcvlry}D02*D%z08-hO%|R#AuX~BMUSEmjWgtgy_;oz&bjWX}Ry1)_mX8 z)T3GgT1$9fP#YNNMoO-3WvTlKt=ksfuZ5+M?*>;M;Umf={XKGXu@QHbrtlw?|6WjA zgON{9XPRKG8-@tl^cS`l# z6XGd|CD&wU?^p@3e$z_!Q-&z1euq;FI_wm1#|s2UBWZWit#|+(m?}>{o%qVufOx;0 z`Ndz5s!&_Ht%Ajw^P(EsQK+RnF=|PQm)g9~;L$Ge|6<0K@;DKfV7tL{lhJ6K!x6yLKsGlYY%o&L;ChX5J=>@8Jwe@SjTwo0cOoD{?F2xy;u% znZTpw-mP;?|1#!4jQS>~XyJN?9ZsxRtyim!0kp%%;XyKPVU9zIqo{1;RHV}Z$Q21^ zVu7Z*Fc*mWT$arnrY-d!-MyDzSPJjlTz6sLLbW$uCqA_he15^^jfZh+xSzNwEB7(d zie8ZW&zsDh4AOvg28(2B-j1wbgPG{g{h^x; z+Ks_$@Ko}di+D0w4gih69>p{Zj5mBBTc5PK_ueW%#WC%*=$r4U36!7U&}$}ZF%k$< ztm3&-%v#(6Sy3hjq&`NPmej{|KH@rzyUs^UTDxTDYf^ybXi~H$zeDr;U2>NIBLlVt zvJH|^tC}P%V^`QPL1qaC`Lc;SCH_jx?5^PbB;%h5?#fJ5(0^u$=G@!|i2sZBF5J@_ z(zT)YRU>9;3ubBy{DCcqdGCST@x;&El{@ zmw0R2u~;$$nO(o~6U(>M&x6}zIMdjiYt(k+azSNkLfgN8YU)0FcMu@aj$p6}m&W2@ z?*>0%60j^983NZWrzn?a^x+L0ABn`BBq(uUm6JqD2E0ivlt*{y5F{-i=_M7XkMw91 zNTurIBaOa5lt^ht;_>|lyV{;BJlEEBaDO~LLKyG*ps!K?;7s8Rf3PsJr>)-&^DAd} z%Z)7VpP5c}65_NoIX$y~aU{pKl4`rp-QTu{KF%dOk*>6-GnqqbXkweg=%62ZND4RG zYhh+f<*X+jyZ+xU%*>s`bVY&S3r4qJ5a< zXdm&TAaAJO?g>^-ZQ4dFXEoL&Pv*)wTr3p-7BjbU$`V~6&sAD=(sG4Wh?6VN$6r*( z5#j6w8b!{>D9=YH%|~cDn46^g z5i_DWJeZkd0HctQdhPj1rVJKhuRA}n$V&4w*b%I82fQ^dZ%43xW~w0qa^^_G)J%P_ z!{@5;_}w)j{e%2coG{!t!D#H-wODj;V01n`7;3OPs}RrR zXsS!oha=J0_3N?d$iOK2V`AkeV9K#zZgytEa#G3}>Zq~G$q8+R?w)6+yl*eWDQ_jx-?~(ae*v;L{B!^v>y4z zp_x4}uf4n;|HZA@BiOSHD<0a}tgoJ*STv zsgTMXbeD8zxU1O4-2;TjTcXHX-N@d$WuUQfU`y-WAFF-}NtX6@TvPWZ z#h?WRp|Qu@&WKfWMItszqY1Wuawo}cTerPpEpqo&bZ~-A%y+N^$h|a|leamSqp1%h zBX}zeJ3m>Ou|v?P{u1t0kJ9yv&N%j_&Q3>jeORk^I$GsD%OrYw8Vfn7`fbzQ8ZI9? z_mT5S26vMO%IE@ln#s*wUlNe#(R|MJSjB^&6R}6Be(B3tOoSgf>me7tEEwCYV z__Rbkrh$k=ai)>dMF|-q3cWH0Ji6hVlI?<@p_<^7I*ta7Bpi)}*pYC;0SE50hx&+H ztY_PX)|wcCmjZ<&-P=bxJt=SI&Ys9XXl&O)z#fWsM56;8(JE)}-X}7|LljE&L^f{A zW%h#GAk;rOH+Lu-AMI%nKTC{z{$zg~EeEPv{jg;Ws7tSctRPM=LC0!ra6u^^1657I z2nMd2Z1R-t$MC+tuy`gt4;OavYP!IHcJ&WWiFcHH$Mq~d7&nT6qiBDi#;aXgT@BnH zicLl01;wdj)Ucz_g|MTdiwq<^9OagByGo+Wt^!X1I2p*6k zKno*}!WhP=H4~J$Wp6Eb*J+sSWy53~JOXl<4BtFZj@QqmUqsZ~rs9{xdy6(6Bz6$f z>_zR$4b%=M55@EQsufW{xaA)p2tyjU0u(I+9INw8dO>~X-FJf4=NPF7lSWrV6~$St z|A;a<}l|d0)_d$gU5~?q-V-gWVs)c8r=z$ z0ocHCwFFN2bs1M<2dux4T(X<{hQ2#UM`G^gRhN@?9%=h6mr<))Q2eegfW-f;{~_B0 zU_Q48&(t3EAwxb)O*;Q-@B9K7uuA7HO>y4}?TGa9140LYsYl?z6W2p<9x zsTi>BdF8p{|0;OU2ck-RmN?vtGsRcsdZsMC|3f`y=~K4Q9%c`Y^;Fd+1{WVs zHMhnSCE(T&GQJtfdsll9}NS2lChFZIM{Q+tx#HtxcVc ztqmc3oarUF79^<5*Vl(}ZO(WVO7`ipI~-o1E!+gRz~bS)W6Xu1$Vc#a$m~W#AwhC9 zF3uF6y>vh<?m)?e$oWF*qsU0H)-_< z9SsB0-d01|ufUcJ-v@0e(ond1TQNSTqw&G&p&|Q@!5tm`&009%2fkSsch`tE3wi<@e(;NyBsS%CI1eNuT;FXF z!V``l7QIr;QAt5>1*otDjZ;DK(QS{UI%4nILpV&{jM~TdH#Udq4Tsl|al{Kyd>F9n z?SB<)h-^#K{zMc4!BnWe`JttWNUVN)kG@g8+1?Te*ULAv-KLCd?D6{D#jgdu?vVI= z!0QeZGBwtXH?hh|Cpn>hn{~1TIJQ^mWHfc|rINKGnB%ht&ZLigywFknR!2d6d^$g^ z9wL?Ox6htkxpfO*G`;?ZURxiVhs6c`x{f|Z*C3Fbv9pxRy3Y!4`IYmAsQaY;2SL-g z9k&drW<2XF=Y;y**U-g$h>(7Rx)`-GP_|$`+h3-O4U{)>IUJR%br*))^_*1>bFfT3@nk~W-Sbw0c&BJ+j*3fuwx8>dE-jh+wObj@L>0@$0pBo zOg^@&d+_ix_Yq-f^Vn>k{v0G~{mh&94LhKOIfnPWIkWAlg9CZW2tZj|jAz^hv_rJ( z&w=$?tAovx4#th^{*UWmZ_7P%xWE7KGdbgVV0N^rX>@i#e?GZZ2kYDS#N^}?`}&OM zrTB&!1ZEA#@J`f`r;n_S@ZCW+q}T*Tfc!5**ZmM@c@( z`|?LPNUaiw$aWzzUP4QNxZ$%XiJ|oruzMYO1P_wi?yU8+^|7ew&eq2weQh2xeXcWP ze`Tz_8bjZpF>IR%M+5khr^W^EX^jV!!4N*tw(f9>4;stVcqaXy(6+}g^GGv;Uz!!O zdD4{Rw8MtFzM>@cvROjK7xvH0>@T!s7oQ}(49}AwZ2wqpZZ1d9R6_kbQ!iV94^`@A z;9=-!OopMDm0ypfm3~F6JBjI~KcIEoLtKf6 z#xwN<>1F%T6Q*8Pg#)dwmthf?>t!Pr)+;PT6al^L_U+T>J?Br~=EK!Zaq{-<;s z(w6$zl=?MglI$$@z;I_(E$B0vW2tETD0zyC!rsReP6++j? zHudMmy4(rZDLZhjL%Hek1CJaS-@AL3b+LUTTLWPSG%?RedfQlXV|HhDV=}SjLAXT- z*h(Q#gYg6gqJ8W5*h1h@v9KVPJfn??R-)MIh)3cX)a9Ql59A_Mw@&#=!El!)|jKl8s__iXZbvf+K%`U!y77 zm?%yzNWpk}meRgRaI8(=q26qZd;KBfO;fZ5n_V@|+vHUdPmuhhT`Sat_eeWJ76S3F z$dE~MC!82~&zuoIf96c_t$C;p`Qp3t$)-DZ znv&_6`^X9k&-vr%iM5{ddFh-yLifL}=bR%bUgs9oak_;|g~G+P_fRdHq8_?OOVK*= zn?HnkA^qk@$ZtMRzDcPLR{ACx4MHvvQcfnK9=jEUlb*V^`daaw!foW0Fx=+euASpz zgREtChVbp#>_b7s)#G#%5_R_q{PlpqTJU+&U{U5o1B<9 zU$_dV>-q6Ro8pP7BjaLpAU!;W{o-F27EU*h?;S{!h&7}PvfNoo${4RLuPFz3z5FwH zTMn&7%^V@rOnDdSr=~I=?i$n#cbMs$T-9?IHXNKxCMOSWDE^50Q2j8)Ph6<%%Bz%W zvUBHHLhsRKii)^Ocf+%bWvI^8E~fiqz;o#R9 zejQ)=9q|CaK5l-#lV86HSW9`9ybe7Jd9lC&T!ZY}WXgv{3)a9gRd_C#4dzEka^N8j zpFLarEp>`t5S2FCQLii@JK27;;|XP++9leR>)h_2=GQ5Fp5V_S#J-n+Rc(c0fKkVz*~J;|=|WT>ubqCeOk z_pAHM?`uNr1b6wzRjc>{_di~PshnQFz^`%NKuY4i#W#)n6c6+3KjGJutKl#hz?oyU zxB)!_B0;eo8PAzxmER%n^mZyk9IN~eSnxr2LS?|Q%I}bOnBO6eRepz1F*~UYajfz? zbgfPN4meiLZzcI1aIEq>$Rek=2OO*NTc~*xw-6kw{7x3J#52fy-43MV2=HKdhAh3L zv_YN{N-V9c;20CiAO&O-!^A939WB&8SxmgS7Q!8!>?2Pn(}Hq#joQipW)Bn%CCd?oL^&1==&Y`d?$U5 z5uw*q|0aI@ZL@rmUw?;R!{eY||0TWrV<=DU`ESavKz@UJS0x_JO$wjt23ipr-K90f z8tF_oK1TZm2oa}9#g0&twq6U2l|!U1lPupL1Ea~4w$6Eu7#>$z$I{I;4bF-KUBh6u zyRdC{sBZOP?#&MseAVH2%Gc3fahhu$?`uZLmvgkKrEAq$Zsrm9KCE?VrKG$N%(ViK zF1vHdmrGiZY1Gz3wb?RRX&p3;fzY+d!+8w5L)pw64 zJNn&TTeS@^v2G%u%BP!R>2r4|P2F>ta%{=^4D3E>_@8RqeN2~ilnB7&*1n3Q`0j`o|z4|nIt_G)Sf5uT0(rU=MCOeEyC^{Ql zDZ!I3do%a;1ATo5-k!U8^O46Nf25!uBFsSMiM_q~M-Lu+l=%~BMC_>7MZR4oqg04b zhg?pj!9e|Gr_L;;-!2(9rDaokuPvy_0e>2x1&ED@quHp2kYr`GAcglI6+cbKRWvGp zE`L+@KX%8*5#b8vuI`R@&EL_nb`Vzcm)vU{7{f{ci#IYBi=t<4)o@5K1sxlV;pmAr zwdeC&ha=qyICkXy(p;wVoYR4%4i1;KnmP?I3VFAP<~71xz&|tqW{7X%c5mOl``aMg zmo+F?P=k!3#5Z+MJe=^fXix&oU0^(<^#V3tAV_`lrbP%n3b7#x6-ErXLB2}2dNVba zPS(b~py;aYNsetRfXX>86EoIRl&}eF)k}?e7zF5_JU+I&&tW17Mg?4;912NPx1; z`s*V<9p^n%d_Jp_DgLMjaUvd~lMSD}DKs8hG{QRZ1KlQj`J(6IWn}+8fAKuXi%{pU ziie>*|Lh#5)Xur$&lq?0C|XlXJy&b9AokdSjFRM4fme$b3{fMYUZzFLo)-aBb-wr` zS>fa!aS}CtVNdY`SbNgO{W#mW0~v-F94(o)bz7tXxmI4%7F@Ul6FIBzFZLPq%dDr z4<*KSc6R1Q6QGHc>M`BvF1CG#!A*=PTPMg+jw+Ey9uEacucHkMBci8DG$al-qW}Tl zLD6jRGKtLOqdPl|8}69-sma2~Di4FlF|zN?lg2$yXb+4!E(*8dSTLUHBu)~F?wfL@ zk(DN@5ih2%hImmhS9EY6OBcR(+AktJQ%xQeD719{w1Q8cK6S3F3r1(!hqB?Q_oWwK z6dNhC$z{w=@{mtK5{=<{-c*0UE?G@V*4TSF#@Aspc^wmM^X8)yU0XM_yA!o<%>LRk zJ)m>!t=g}3+bfJ)YBzcdoEx8(L>tscjPa2a1F4r^QWGx~#1COs0wEEy7qNZ+5cU=C zXS~)jOZ)m}{Z+>Fb*=fRmGp+kxgFlm5PRp5YJrAul(r}K_-pq>*oOJIqkZx3Ox8AWLjW(<)?Afk*#&*DWqmQP(>@GM-F z70ODHAhSg>qb zQ^=3g^U5p5Zxz4A5>NUAXvf12prbUbDm7F`XOz4ErUSq*{?ok@TA>kbVv8VeyH?_b zkOO976u|l@kqNMfi~m_>3eOkG2rlmpcx?%JqUdz4lQ z*$RMN=Kf<4J0np|Xrk#c2r+t+l`ic09#3|9nn)g6Mml4_e-WI`kf-wi0mz0iFydc71TDjr2&pat8l&=L-E<7@14YiJdoY6hDnW=(q-C z82Q-`0qFzg5?g%~Fbzw>>(jhPsx6J0g?n3qNqK6)-_6;%*ju+=ZmxIyw5ZDG=HufB zMi&+)1_vkR3i%mu>z;h_>HMVF^w3a! zU!$ z>HMCa*U|Jt?Y{K*Oplu^rIW8v)*nv!LuqA>+BVMRC-1HQPj3i!w?r&0s>_jT?%Ko_ zEOfS==hByHY{3P=_N$7SM0;kb40!==@Jte~Q3^9@k!z}$NwOxICGu)oLH7cb&ykhy zV_je2Hqq%FZTf$>ri$2N)PyWT!KG z-yZ3IlSkOq_iy&>kzz>voNwHzhjC#|hDQ$;GafyCjO(psvT=2(rwt46Yn8(2k#xj- zjjpYW#zkIHV>>Zrhzz4xNrtkfz%BbOx9n-^1AjI zb!{xKi)7c++%DvqgzVa5j6vL#i*o-(G!%I(V>ng&)JCMjZEURa#xyT7EwWb0h&8DJ zlJ;ku;7T?lR;u<)Pp`HdojLPL{*?;j(dqnYU8>rV+sfD-POzRKD&_{Y-p-Qu%QVl# z-aN0P(#$aHq28i0vCXo27?kWD6l3A;A`WRCOmMQ}At(rS#>uG0`ceqFHqd{|YxEyczJ^Dt?vhX+|l_IYAM)?#p5t?Ygq^ z2S`BOO+F18pJUvzKh|5OOS+OCfZ63lsn1|`Q9g(+M8zW=gs_GYXJPf>rz+rfFtUdZ zQXCm_1oxC)`t)w#U2lQ z7dAh28;{4=^znE}u7yTl*)EnXewF;t7~QW^Da$$KrX1ZyTLni0MpyhR*9Q7^NO@iB zq73ThX#sVS(Xc2d)cO<#NpXa%1H;%JVF*dN+E_AVoDu`6DH1=h3B3l*Zo!tvU+BAkG;Zt=$}OMcNCy1_&Q>y8LR}=NMIzpYI<0}iK0!(hi=gQgA>s~Wr#4c9;G`76 z3OAW)DH|qO+*er$A0sm-AymiqH8h72p7W)Z6~wLW3pY3H>npc>!W778WYP%9#gkVX9UeZi$LYXF(Yj90sAR?m2~tTxOV zU9Ul~NooDCy^ya7Z!TZ+mYk`Z5fdd(4VYU_oLR{-*Fye{Xe6vf<|+S%uc2&eLBBIV zPHPUTy7cs=%(JLt)mgM7MW(%AaGi4|@JD3tGwF)Z2PDzExz+GEV_)7g$1=)`NG&ND zsLfOcZI=AKu+TVF)#_$eBWb0=;Ilr#a-I#0QqI48_AIsK>{&?p9FofAbH#7sno{>B zeL?EWC&10cSFMA(Y-*FT6wPNY1#MF5oUBxvXEj-h>=Lrne*H`&b#L7+VP2Ewy)1Wt zR|o0nroxYTPj=7{`zHIz|5xvsZ=&exW0a_tlv3ihC4;E3R}hsPd0W_!Kz{)6wN|$P z3N7mO*H@Q7(3G`?xMnLD%{WeEH7t5yU#73tAN2Lsb(kgtk_l`f<#B`0AG*@4ZY2^G z`Ua-6x}Qt2c5j^R-B9jLxzF}TF7rKo-d>lZQGqCwrD!y`6m&B>dt#5Rz`|74h1oRE zWrEm2%) zc$f@Nv;={h!Bymq(KCkvd}1qeQ;W>N=KhY<;^t`c|7Pw@;PWb~#{ZdnlPCMWc1xco zZPPVvk~UjI>5`@^-BX|xN}8l?(ljYqx>*pZLKQ?s*%wh36*mM_L`B5{6``^l5D_Dy zuRgB=D*7U{|L-~XS<@DZ!sq|XlXLFexpQaEtmn+!nRBv>Cgc~69$g6R81nJ@bM;dv z)FjNe%hIQhE*L*DvqD1=vMYGRg&JY@A!KZBvX zRReb+e7!L=(@$n(qQ_B2(kq1*izZBXaREIfiWhtJD?Q1ZQJxoEQM3$T!JdTFCY<3e z#_}S{QEZ!x>&U>|P+n?B-Uc%|@?~3<2J2zRnPcQUx-X$5WMI|%npHif$i?IkpOc+* zU&+jd(%H?!&(E5*sO@69wV^T!y)^l@Mf#XXl~qWU(w7#kIr7LF{XDU9=}-Avx>7=Pp?P5C(k8FgWH!n^ zH)gg_B=W{`D3aMX-@;|i6lXGraWXvg5j)80^jmm%?iAUO&}g4Ma^v?ZSJjRlUAwAM zlmUrRO+N5qVYRZcRP^_Di3$0er58(Td_5-hpOU)w_4H4qE?-aM!YO*6%=zRgA~Ih( z<&%xKHxQ^amKMuCexy-~^8nKe^`-{hpOBj2J~7fz8~LRvYU7JcJ1E%kKKnni;{d|#4JzeR<%4a<0$x4vzepSzLMv7uQzg3@UUtcED8r$6$h14{?E;M~lIvj3 z9c?QgBQ_b)IWx&vUKrO=Scrt%!RNA|&dJ~+MPxNKGN4~_$(vD|jctx@G)9mP?=J50 z7E`@_ZGR&r*_$x}y=Lk8PDg(Ja9cQhczQvH7!a=H)2o!Xl*94T@~oX5C%K1ZGtiI} zwYVZ2OH$=z9w}+E>5$>A6`wG*#@;(ZtHeisXGclK?l>kD+D;K;^4A%Yr!)TN=H#L) zWprr{M?Hskl*W$6Iv9H!1|s_yIh@T%>M)%!OHr{i>ix# zfBv(txO&m#+S6orT;9a&X|tD45ALJO%_~O9&4P*k5mQG_JEgc?q=<=yqsGpu%$wv7 zZ=s{1vql(jZ-nCEri|~sxxN&!ub4HiBWpwQ`oyzjkx(TIPjwOHBXWgW(xFyjWuE8_ zEza3{xRd+C6mK@d6?=? zlL>w33YAlXeKNAA#bjh8!&Gxw&WzsE5=G(6gwKK8KCkGv13y_d)-W1+XN-e&SF+9JaymV2`n76+yTUzdsJuP9*u3ya_Vo->z_Jh>~l28T51Nu>HBspfMArDRSPW`9lgXttK*I-Enwh8S;*sYFc(?Yo zl8PnC4u^D<#cJt{k=12k)X2oPkWX{vy-x=D^xI$FEqt2t#@@hP$Y`10^__)`=E(N8 z!=mpnM+#QNCp)Y6$b-DL{ty!Zs0+^T*jY1M+uM+}0lonT^OO@k6CE0Ar`_)5{5YZH z`=G8fm=66;D(favKqvaP$+v&+`%cuC%>=1QcLy~|OG4(F%(;WDpPXKn-kxsrGaAzyQZiBof*$v*Y+QN2{^7vJbys8KRgL^z zRb74LX?0WIGT-?Pqg%D9oiir>lcjciX-Dcs#kQolBdH{DSQh%HO;!<%%S?_M>KN(J zOF#K+`44d~KIM_KpysFWCKi;+c)O%@vrBmB`+QaNs#CJp&Yin9`;=A9RWTdX>o$)1 z)?<%-Yt+WNnBlKz=He;q>(@_SGP5YMOTDTLud=GB@lW_#a1K|3=7h;}@)uN&U6?v5 zJw1haecjZKI`)!AW#ut;cV)i#>%)v4I=lBi!oW(#cnfLKM}_PdzR;X-N=N6gr8Vp7 zisXcFiNnERQQlHBXKGbOc4BXeKfSc7@yK)b98upA@=f-qO{iKpRo;@b#wBmRojYP` zT~S6Z#(Sx;w1+>meg)EEn;V(6*FC7a$(Ox8)?{*9f(^6Zb9;LAwB=`-CI zSj6lkZ=`jYR+u|7nD49 z{rAS#q=<#&l$!D1vwzx%La(JulcyAn7=6hlhq@5K3PyBwr4(kYoKT&Wo5t}XZ+Bug zeYVKt&PggLNG!_kC`x2RV$L92&*dx5Oabppj(p7#)rOT~bf;Asd+$~J)i0Zp?esdu zOLnd6eI$Q8*ho`NdRt;R3HfnNF)!JH?<{1|Z>p{qutaTNPPWPz@D*}IYP@`Ot zo5yMbn~X~lIMU^&WZJTpnY}Ywmrd&(KBdmz>#v(Kytlgfk~7LvnwnC|&$y(yx?=vO zx#JR#eBUle95;8$OcVmD1SU&QkFxnt_hC}H z(#5hobBi2932r|O?=aRJ+obYUb$&TZdDWpqz1*?#`Gl6}6UILE2za7K(CJ!Yh}lRB6KO-4;OBOTYn za@CC>Y-+27v&fPQpj*^f@dz$)$T^{z@SE^SnXu#frl!`W*7=J=XJ*!{=JwAqCuUk( zTier`YNHO#%sV@EYisM1QO9ON5|46G`S!uOFS|%s8=e>a<)efzAF`jiiQRg`M~t6e z73ZH;-!W}Nj=v*oc}G^(X_4)Ea&m&jc0Cj2sd^f^TQ4%bU^qCQ{mAf+>&T|P(jgy8 zN+!*(9Gg}Ys}1ACTd`%UXU1_ps;qZ&M~%&%G$ZCn)d@Ffm&~gyW^nR0@*St-R(K^h zJ6v)ShSgw74jwF}E33hDO<4`*pmg{fK5aUKad$DRFj(i~8+UTbDA{kx$pBT)7?O-b z`y5ex#3^S^?xvT(V{MJ+hlW?C3gc#Xa&AM88F9 zfw~_s{;|(H*>oghPEv+D*|W>C)=UtibL0INUDp0hjM>=-)?d_$*=zDPjW;JiGwab= zBFo5JvyPa2NStzyl)_m|xi3hTdr!8O`@(<6-V+i^WKK1c@JXz3VS9}eC=jAM-(|yr zjES}cZFqm|brO%fc)rt+-1=nK+jmJ!!igJ{k`V!onV3%1`;nSb24}vyI?6r3`4~i@3ye{V+*s7&h%( zy}uz>?nj`9dIB-~+#5&8{ZyV8=>1LlJQqqtPqoke{2M~aB*JI#Jd$T98Jg!Cj{LLT z{{F~|z4prF_Cp)rzC~j8^7IffeL?e#wqIfv%Dza z(c7uL)Vnj2xp;6rJTKL zqMhquB>52gPG_%5YnoB^wXnG+bS($Z6>6o#(kKt`BX zr5~E)yW>~6bTXNh>F8E+3H`jC!)J7ImK;4@-7i70j>IMYj*?Zmh;Gs^h2H8DiLn_@ z9=2n~lsq}Twx;|TL!1o@>gpF9J~F>)_lQ#_jh`V3Ii{Cp`iEtR=I%M?j`!!rCvTM0 zv3FztO6sSG-ZJ@$lE_z-;0KhIa(Hl^5`uIS`hF5TLl`-Ge6rt9-kdbAa%}3Tq%O6* z&@g{dLsL`z+*51EmZfJVwx^FuEuLCaGGlGs=rO49EE!QS0kso{vPWWUxlX=-i&<&x ztxl>dOwY>oBx=-)jGJDYm6H^ooR>YnN)l*UTH6 z(~(#>c5GpyYle^N7#>|p1$+XKHCtUJj6R>O0~TwV@+~kSsP5lWDs0ok#gdsmV|xA4 zrS<-@^sJPP!%)fmTt<9Kc4qn5sVnPCu)rNv8cXZzmx^H(d*#NTrX(e%mYlMBns-9e z>jT1LM==gFx5%B)kxY%ItU<-7*AGNi4RLu9ml=r@@?^pkS_?X6`%Q7pxeH3=v-i#C zUtfWFQFiN`K6hN{f^%#9)e{N|CRF=_*W}W9XI7RjIHh*flZU3p%LHoNT)z08Ij?kM zR45JY)s%gLa@94A)$y*=A$-8?U5!Quo(JwM@z_}md8+9#q z#n~N`?60WnsHiY`b2{=)Ht3$GiqwisMl6Hu4wqAl7>xlRxHb%P&aOT?S$NAE9&RYtp}3F zR4-;4nOm3|pO%+BYl_HuMdfqHPMMX>qEu>OZex|$0^T^Uyl~2xoSZRJ3d`r&C3TY~ z)d}cGHV;WDF;t5QMI9p&60%0F7Q<#bIs|KRT($0)((f@*16u-(ZRjSdDyh0+*1x@~ zi`3~QLu+wryv&G0RTr$&x{*)XS;wixT;!h%X>SG0kMeQ~l6$gjVqQnOljuu}OX$FY zTaS@>k!S2##Gc?TPbNjm!QtYvD6AF-{&Cr%qgP>RK+PIpPMUx0`3|+4Ap485QZkZz zES7Rehh#JrIijF5Fik-gnOOx3#;lgA!|?`9CC~_(z zqXF5nWdeAtx{+CNujVXIyjdq9iIXsP8)?N8v$#LP8b`dn^yoqG6^gHv@XiDB z)cN_*8%(@AN8E0M;-z3L1}PS5GtDeg&xB^M-L6=u&9r;fy-)E+1QQ$n&NGUigPu(1 zd2ze!zXh*WcN6X`GhT5usb`s5{Ig7*;(B~o@IHEg9ubcZU)xwkD1e?pQ>b{D`VUhI zhnp59)1 z%+r8jZIE}zQ|97k-3?r;c$WIhyPVlj{Bv-rhAh=EXf`EGsm5PQ`2?uFb%LFPiY5Mu z)LsQRi&~q=yMth%d?IPx30|r0Rf<>Z(>3aDQoIiOCz>f1So(r}5VriN8+cuhaPJH2ztXKmd(8(obh;znG=vHcQKG7Og^_3Z1jG zW@l;X)obb1>$~+@di79v7!6v|p6j9W0Juus($}yruTNJgUdYS{L=sPbE&Rk$UGrbw8x|VZ}dF{Bxnfc~sqxDL$jKmMZM(+V zPCU3Zo_39=-IaLSU5TMXS{;~C6r6SRfbD<}4uH3bzwJ@?rAP0>eK~pWfDej4d=PxQ zxQY2r@Lch6=P91AxZ&sx_$*L&a$q!62(h3hGptLP4RLKxkBA571Pd% zfiVOurPtxERi7qxGpgVt<=Nq$q4-S2>lL4+c!OfvJYmjJ_eOP}i+dZjaG%}Abpm(~ zIo(F-;cul*w^^yvZT3=qdab&z6YMsaT(H#0Hg~za<*rf;zs4#6Zss7h$$m`U7le)j4Pj45j zv~5?~wkvJhwFPe16t^pF+qK-bD^*?EPP(+6bZI;3(spv5(sQ2Da~|{z*z=%g5G?eZ zM|%*rP;#EVPO(sOo)t>Yqn&`2lJk_3^OTbFl#=t5lJk_3^Pq%yl#(9pYdzZ6dbF?g zXkY8mzSg7l(xdg#qkXMM`&tjF2W*d(zSg7h_h|e*TB<$TFZyLPu>G|20C>B)d(^#G z-TM?@LGSC=(&*RH=-1Nd*V5RfwCy6E8|*HPXBYit5Vyp(i(V4|OOM`V_bI-V(%41c zk*8M@^Dgb(yR>9>kqZ8#LKxy7w0pEy?xD;N#Y@#^xrSM#c&*~I6>o&*y_(0pn)+T%eJ`mWw0pG; z>{S}}YQ5}*l0p1G4z+vjClp^wkKSuPsqV|^S$plL)ctA2pHX~;hWV_zKd1Og4SAKi zuU34m#w=}nFC`}N->CQ|#h+Jvv*Is6`Cj`)b>E`+HpRCK&6ERAwH)?R!s3?Rw^w`L zUhQ{#wbktt{%iMX9`|X#+o%0*pXPBN!`9{%YQ#_4cPtKuJ&vD->>a|zqYIW zO51*V!60EiNxRyw?P@=i;MNwqU&qY-+6(q8kJzuh;1k-$K0*E7X+J?L3V^Rrd@YoG z!hQjKDXAZ{mummIR4KevDZG?izlQ%!;7?K}f~8C@*F1hkeLkZ;SKu>fuh6%y(6_G8 zzImnQ>q=-2*elilN~Qc-&GofP)wN31wMx~sR;apGsk)A*gZ4UodL2(+vo~mpH<03M z_C}@QMy2*f9TRTB=T3Wzmd`Cp$t{}VEs~;>BoZup>*49n10s!pk+i|Tk`$Ss1I zi#b0+r=j#6`ZFtamRNs0OxjMjk zNy*(~GM+e(ssCf7ekbl<68~f5QSkHlJg)ISuJJss6h5vLJ}&YbPle9MmCnaC#V3@` zCwObnc|s|CLc=_vR6U_#p3>N!(%7C-|EJacw7Rih0#(mwJkMx;pHT{*(b%5VcYi50 z?)*|y`K3PnCH{x;c^rDEE1psV>K6Y2^?y#w;W_nxUQ>BqQ+b~7hn?p=e@*3i!Vlsj zW%VoZcjrinxpSm1gW=I&WDhVr9So-iBX5A$s~eu~&J}(EZcvPrg&QdgEb+{hJ_v@t zyYn>UJPkQd`YApVa-Q%ku!Ni^z15vBl!Ivx?tB@?z>Mc$#xXEb2NY%QO&wS3Ojn9tFW=V-`tG~_uN z@*E9$j)pu(Ltg9NOzv)Uk;=d~nj-Mc&~uXurvuB=o821~-^@JAm=Sh~tkCP<&0x=M zS+u-4=yq7Q|9a5vnvrOt@xsJKg^B0u{Nq7?(Q7T5JLNCIoMGMwx)V*JT^@8NMY)sB z{dQf@9~+?#2Nw0+)F^kh$#W*N8fiJvWYEw%C+N0jxO-vH?U;1;x}e)NHLjfMknnL) zVdBjc_obk}&-mj~gYE=#XWW#aJJDpuy%2OKMY)shzPLcpKgE>!wg%m);-25VV^2@} zmaTpM2`v--EPmJcH|_DS-Ls>u4=D3DwDq=c>1yloFW%YQ)F}XTDH7-XS;td-taH&NhGZjvbxUR3F9CJH@|) zBJcAa_jmTSZ*OaDZ}zu!?QHMq?%Lkg)z@3*-`dx=qi))?UAuOb3Ecu^J^j;Ss=^e! z=}C>R(VA@`9j{I#f6?h~CVeT%P#Qvgs3yC~b2oWy$4Bz94A*u*>bg~1QoH&~IrkBZ zlv114R}Zz~=iSZVP{~AESI8%HjcseKyc41-6e9GlpVXzaLZujL!6$B;Qs*ZwACG>i zfi}W<^!DPG_T%N*^Amcy$fHo!tYsjr!3(iVTeP%&zuBelN?fsRKRQqSl$nI^aw2bR z;!b*&gpzi=iD#V}rdfN5q$Pc-kE_tptL=P;Qt43@d0Tptgxk*htz4yU+IUCWa*w_( zPvos$TAClK`}pmkZBFC2OMhkf3>^`qk51$3r2ZY9BYz3_;n(? z#yITAUavHER%F1-v-rxD!-v8=csx3W+4VA<6DK42VqL_(T)!D(irLjNmTyvG1APMR zY!Z9X&|DY37aTiAd0G4n%Cz5dZ$ zY%VvKnj6hm%&pcjpD@px{pPdgb@Mm#NprP1fS!UE&1>vdy8{gge@8m`BGS#z%){mz z)MJbJG_~+^O8k&{#QefMie{C==6`5KPa)qtfyIO^=2djWJZqjd&rlbCHvelrZaS!| zZPZ{V^>j0Jb{_R3eYT%^*+~ukiT!bVsi6;<^UXeUula)cu(`loXg*>B<}ctc{M zo?WsDHqpFoj@TrdY*TEiIf@COG@EWS_?nw(vuw7_vAH(S=Gy{WXouP1c7*wt`9C|- zjr*g{`zR>`abZSDQie zJ6mIGZ5g_3ZwmlWA6m#u7JKr|g1?EokE!$`p+C_FTwkej{W%e|?+^#VHHgB1i z&F}3>y9&)dYwTLvWY^i#?HSmjSZ~j=8|>NGLfB}}was>uZ86`st+vf>W;Op6^9NSp zZ)d%nRd3tLN^6(xwmVq2#F(z_V~ubp>vg+XU)yU2(1`adv{e4uykwp;zp)=;)rS=v z`(b;b{fNDY^_P#@kJ*duCH8>*xU8$#%VdSbe#(B@euj0B&)Uzi-f@+^+FrwI#&!03 z)-G?8K)_EGzoJ#2qrA7{tQ zllCe5w0*`tYkz46>~r>c`z!l`{k473{>Hv!e`^Qr@9fL=_vS8hxA~6wt~rQo{cZCg zIvXB9qs&*$L+B*=k@J-f4&B`&e$JZFW6ojc7p(9+;XLU) z<*-iUJj*J}fb$%yBfoN9aDMH)$Z4RLoZmWw&hM}h^n2$O=MT;wo&RzEP~Pcx|7_=?i6>bTjox4r@Q5DgR{+ z{jhtX`w{mdcfb2l_hatG?j`O4_v7v-+)Lfd+)uifyPtAD?S96+!u_oKIrmEUD)(yl z8uwcFI`?|_24>GUxu0jo`~~-m?k(=E?rrYv?w8yzyI*ndaKGw)&HcLj4fmVwo$j~H zkIhfqyAt}l+NV#S+mJAKdvgmDfrMu7>YKZ%r)_7OuURh%bGx@NGuf8V>|Imlx3u@P z^l#tX*|s~SCE`w=-`d^R+|t5qBDp2(^fk0J6Sc3^yEKqab6>)OV1mr0Bw^nIFTpmw zBrgcRo!l07CM*b&(dJ!!3%nTH^pdhLLP*M%h&y>XmhSD_n>}Jvw?y5f zEQ-9FvNht4TePXUCvGb!VR4Z5_8{$xJ=)v7!de`pvORc}A}+72(4yujP0Er;oGBd< zck0q8B2u?S-T0O@xAgb5`8xHIx-9BZYG>4qZ<$vfoqCB|MrPwWLB8eQ`(57q%cEXN z?TWhbE%)B<(u=#GYm3{~wIyLiFt^>o+^+C)+pU+h6a$GYs%>nno@Q}xzCJp?}@m5 z>%H9V)l2gFaDze*AyVleuHE(WjpIKd7;rVc=O`lXwpQ}$;cd4ih zxn`D!T@_(hs6=C`+!ZBBbW3C9tTp5nJG8}VdIOfW58B~VTs0^o38BU`z zoJM6hjmmHuGs0=i2&XY4oW_iB8Z*LaM9O7GIE@+MG-ia;m=R8+Doj;X_>HRY8&%;q zs={wnhpDO#(^4I#r8-PYbvWkgaLm==n5)AvSBGP+3CCO$&TmaPjhb*8HQ_XB!fDim z)2IojQ4>xh*s5t)wc#{s!)erp)2I!nQ5#O9Hk?LnIE~tH8r6|lLir$-VB0O99(r0n zJ(NcI^iUe*(?e;LPYE3W7-3-M1_3 zpVqgvr!D+MDF_8i-3$ex8=)ZN_9zJ7DFvZBr66=8d9Ii~w>EA;e^0k}Gf#)dis|#T zAi3(G$W@0`t~xMt)q$C7qgH)YdF4zhyr-voS7+Piz65pk??~3Gu7P_GTf294X+q_- zRl#d@@aiR4UR&$V-8dIm4Xg#$x$`$J09LpSTo>?c39xkIQecI<4EM5)jlg1H8L+}# zj^B!n^MQr&D>llL75J{)xX4|-af!Qzr)w1!#IN1Bh&b1hPSZv{HsRj9u>K|rwefgPZE@nvSRCP(a-X(1)b=!BbL1W5 zHv}Vnr#beWWR|@D#P*#<#iMyVL%XKu?ofu3CfX zF+Hv#Wp20?SESF4ZpIbKb3;wNB4t4&RLbHg_ljtDxXVoU_5YAaIKN8G7i^O&m-f;aP{Zx-lHdZas7Z0v2xis`rFlNRo~a+lr~Nm*{&V{f~M z+(t4dad*dLLSFBW37^$}On}I6p{e&q@+YtFjk(Q;>JSn-c;BG;jNCVd?sGljy_(+G z+1=8)d|5-HHUmPZwTFj1y$e&yU3Poyz=v06do=BMqz5OelA1;k9<20XWZ;pPgWc5Y z8c`lz?}+x$rXB5}eI&}m>lhIaB%B}#!Bh}*hI$N%6u~AKBC9=SP$bs$9nC#$UBX7o zTAF*?GW1q?sNSb+-LqqBTbH^Mn!PZYo0yDlYwHWYloj-dyp}FLZQ%eJdK-D1(YCv# zvw6GlXN@^~OMiQ3XWRDfNSrw;1+~gD2*OjV2FnQti$s-mUVmG!e4PzPmeSVMDx15h=-YAR?(FS>+>jCW&|!bRije;Sh_w za4MB~P8Eo}fFh5nE7Kc2HZCa(w$jXS(+zs$4E3O@Jj%NIxA!Pz>JZAr5u{9<9%Y_O zDARC4nTGQyQ>RCn22{$_)!N<3CV{fvmbhj?n*_B8Y8BKbXtSU#g0>237t|qWo1jiX z+XZzA>K3#^(0PJ1=3a623F;TLQ_wC!y9MnLv=@}pOVzV;L6S;o>F=SPw#Y-@9vUPa zdP`dmdm~ymbxM3mL5W6OUe~5=N6Rzvz#G1LTT&yVVsA^LHz4-5#5YU!Sc~JUK7}BW zws~WQxWbXL-66DYN03wkd(ypx4~{Y73Wtv#TL>Q+SI9|QpA=zISBS8r?r?&^p_g2A z$0V549SWQp8GnhR+mlIf^@rmK4#&jN9}`DvWMC$Ia7?Bo`nGoWNYSQ7M7iFUI7Mllq5o9JTZ9-k?I*vH-$Jm+fe){ z-XVdK*rMf05{q7UBxF)hyyQuYbSY0l`AAUNQhdVI=&dyJen#~AqQut~ddtVsqL30? zRg`DmiXyJem}Nvf;=84JCwU8rxH6)b5A{hX+9Yq;P{PEBx4a#cZYeSqZlxH!l|YHW zTLr|Gs7ru2GGo^L@JQ|t7iN0YN*_hL%e%t^i5UtO?C85P4rE41l7}{p1}AcQCCaqp>(Qe zMBhXwitrp2EIQHZ=tQfd6Rn9(w5B{Nf|_UwYN9EqiKYOlJd$WlGzB%$6x2jh5L0fo z(G=81Q&1aCL2Wbzwb2yRMpIB5O+jrm1=TT8N0kB7qevE5BZ|I>qCn)Ra85;rin@uS zKqeniPogMb;VAk^GzCmbBJafJRNm2{V@89#k>srysVg*$riPb^#5*{%@!pd46Fd`S z35Baf#HxtU9(0DH$5#Rdedk7;^CQksCy{j(e3OF0xG>%b3rvstUO=FX=rwTe6IEL3 zYu=O~!jfD?BH^0kiAuN!ih$9k4q!9_@2_xe2WDyCZq6m)6P|V$(t-XDFI@>aW zDTMEXDTVH{!YPJ)GD9gxJc1O2JTiimgzmG#6oq}ll!bgULllNQQb?w&wP#OzOLtdF z)F*<(mOVZ50VYsw`rP>$em;&beAeQ2;HQ6((%Lx!^yA+_yT5lesl5i6|4Q`^3^L&^P8*I ztXtq`pN|(a8zM9XH+Ur-y^jxGeZgx&@R}IBvfo(4p~+FNDZwixqWA2Q+Sb<7W!5R) zpm>wwt%|!8_bJ}1_(H`OE51ze6^gG>e3Rl^gJov4Ox`anwIe&iT$4KNfvH=KU9d#T z+qSdQ;7{xVsN#$LCcdtB@dfxFX?(gxeE-kmyTXnRrfOYhqVoU*biH2NJJHd?9f#@ztc^NjD^YBkA6x!Q|BB zs^qQ7&nLf?Qj{_!Y>y((>l{GNV_@hJ86%my^-!u zuSjo5U!Hz$dQbYk^o!F!oqk>Vt?A!M|3Ugg>5r#BpZ>@6H!`qQl98J+K4W^u?2Kg@ zt23U?cqQXsnNDV5W?5!K=90|MW!{(h66W!yWL0FHk##}VN3%YW^|`F;vhK{fKkLz~ zXR}_)dL`@CtT(e$v-7jjBbZ&2JuiD%_Bq)HvhT`1l>KD(K=v!yf$TSOOip^v$ec+z zeK{B8T$Xc1&NVqV<$NvYzMMljhjX6Jc`@hZoY!;Xa`SWjxs!71b2sH4$o)p{J-PSi z9?E?-_l4Y7as#=q=b60Zyh5ykkIkEuHzRL$-lDwKd1vIElh>Npk+&mnXWoT*m*?G( zcSqj6c@O11oi~{G$GpGf{XOr^{J8w|{KEXA{IU6y@@M4F&R>+jI{)1KuKeBk7v*1; ze^ves`CrWca{f2+e~|x3{y_eV`7h`HDgV{{H}c;qa0(I&(hG76h8K)2C@ZKbm|d`} zV0FQUf{ub61s4}wQ*cMYj|*Nbc(u?eEG(QUevskn8^VX_j|H5n9|kyb7LV}qmYlSA^~^jvIf!-WU7TuA z;M9`g%#!4Rcc6vQR>E32L&p1}<)W6eX5L*bexcZ~B||#$2Kp!T{n*sJc!Z+E`ZPW| zJ)sU?^spS)H(S$P$#c<0 zJBjpB(c>X~Q(Bjt@a3fOao$S}_SQko9a0_PIVnylNV`A-2jwt8$w;oGhyDN2B9HCQ ziNX2^OR3V2VrmTSc+|4Uv7)UaSlj5vJD%?c(bJEm`B)z()Q^}+%9wenv@fVdp9M7~ zTA6~h)B9dCkoxkWjOvmCt!KzxG!4g3 zFE$sE@b46>N7erWeB(H^AX;+JvJ)Q5A~`y~Z1G-vJwE&X@$HkFSDkFA0$R%ZJL`MD zWAtW-QBso1g~zXfSotdUE)qk;<;?>lbA`y0W9NU7XR+~m^U7GiNZ5$$Sh@Lw7?F-Y z_C@-=*9&9&X>hy{-omVDFiIkg&DA^Iy?^aHQev^`NnJ7XkHW6Bgz#MWo$g}h61;VT z=vN8G75iRXP*y+#2E0aid|Wig337eWY#}m|gS6zijtzCPJ@8~!Nlq>I2$(WAQu19s4XgrxCYT zm(e)3Od=sqRLhYTC4KeSG`&{mwTWY&q8C~Fn#?i18L1~_$A$Q^J{3tl;uD;YsNUny zEN4(W;R3P_2vcd)YspQqEPxSG)ns3?D)j=$-Fm`p3GQ9WpAz0m z%uk$_cnJ7AD<*zs0>uCtb!`PO12`2abS@xTNf!g_fpfWU23l~paoqx-WgN|W=pN+y zW3K<^`WA46m2mgyeNHyl9LhBp$OH0$r2uv8tOV8on}Mys4*Yw$_Cc3VbTaWx^RPV# zJP14t9K!F!PvWtNgWhj6LOuli40w$DU#sTaWb_(jP)4E)Tgq!ZwKoY6P1qG&X8;ZO zHv-H-%_3k4fOaz@TC16zu74U1|MZ)}s>q}gJ%XN_J@3_9q z_4i!=&bpAxtW9+ECICr5GLS<3r*ci>n$9(Yt7wiy_m|D#ng<}6+hMF1i~vRfqk&TV zCIXXzslYVg6ks;*Nqb~`(l#l2bm!wwec49b%ebD#{XxDGJqSERn|_$e1Y9|NM= zr9FzQVE`AMe$eTp0nq7)1uki?(BnXlGXa}1;BUa+fqwvR0RIHu;@u;_QC2PuU;&5m)&=5#cz}9y z(*f$u%>)VwQ^IvDFb)_G&|lmdu6!|b>wsCfsVjFj*IwGk575?z_Ig^$B%lJA0SI?# z1mJb_uz>3SUcwdrKo1M37Hi?DX9635kMquzz*WH2z%{^iz!!OT3verN8^DSay(vI% z3ecMZ^ris4DL`)u(3=AECh185dQyO%6rd*s=t%*3Qo#HO_z567zWMG&uL;m=2I(~c zdd(ocCP1$lq}K%KHG}k;0KFzauL;m=0`!^yy(U1f3D9c-^qN6>O@LlANUsUdYX<2x z0ea0Ky+(S-AUz~N4;iF~1n41y^pF5OWRM;ry&^!b2+%76^ooET1C#*cfJ)#L!p-J7 z2bc%U=bmz_<`yj1-kk&p(Yaet-%NY)kmQw_f zo>L5v9<4t>>krWS1GN4Ctv^8P4>)B2J(FG#pce$_1p#_NfL;)w7X;`90SCIA`2ch| z3jpeyUV(i(0Q#Jbz_~y(unA}ZT7hlQ)Cp_{`hgGOw+}cUke=}|;Cg`icBpUFQhA6g zvOYZ{pgrRcTwe$N2K*iP2k-{)PaxR(Y4HJCe1H}opv4Dh@c~+VfEFL1#Rq8Z0a|;2 z)*hg>2ZF6VKr0UfTX{fQxqAz6D{ve28;1^@3bfQzIA~CE>TwIF8ia=p!ovpPVT16n zL3r5Ual#7k!hQwM8Mzs?1{t*m(Zth0%+zeS$549V-ttA?9>2Anhb9)1pA1w`*?C!BORDe&cp&~3ops2C37CXduW zfEoyd-gG{N`_sS`z-IyYwo7@tOMx}OdVp5yZUMFe9YCj~5lSH@hUmA0Z=it*?di~T zA2O84PJ_HTKu*!x%=J3xxf?jh^9O;4fkVhmOKJU#g5*x<8gN%Ju1YRNUu82uJkX-K zcDrdQ#f-O7ri1ouV(S9vKa}YpWjRP$4%$nA%Ye&y#+YguOG$muUJu*~d8{Vyy#BBch9QUge- z0jG()p8-(D)cGJSW{}o0NJ|-{bqvxvkiwM`bkeF6%9lZ?!IlBg16%@J23$@`VkzKC z+}8kTdbC}W}p!5$@`iF;5H2_ruP&EKmhoR~)R2_z@gS2I#>>!jK zq^1s2Q-`Uk!?bCk^dRj>+RgwJAB5tA)Yt%D%NXkz$wp_+yC=Wn+ z0LlZwwi5`poiP6ix8$g?8%m_zNSmQI(Pj?PM-GO2{6X9g0uKX+$V;%Nn-oehM9XVo zT8^dTHA>Hm*BgODBgv4FI2gyO*yS3Czd>%(?>1tOCre0?eiY%#;GmcEk?QPF%YHMn5>*pmPz|{Q#pM zvR^=TK|hcGuW-KvFy12b1(5jy&dUJfE;65Rwn5~&LFBpsa$NwqE`Zz?a3=#(05~^X zY|x#_wF;;PYJoZc3gK!Zw+*@!tHBfGYLHwFhI2KR{ww43AR|R=4x~;P-x&o483iIacpQJp z#XC^?uGAf`yhG)j5#|9yX79pdwdZ@h%;T*s_<3XbfHxYPkf$;ZhdHrw;gb&e-%;d< zj39CWJFG)8%!zXrks2a73yyOqO>f$9`{1YOGf=_^Kfnk-5R_D8G#_9zA3(yAQOx5% zcSiA!$VetJ$lISaxe`MRj}V>dGAfI{?q)!!560|va4#cu;t6xGh0sVy?6r(;jZv*H zX2efFVL3|vMB))CEL!3TN;@X`gcSVet-~4NmsPr=)#DDBx#+=UW_&bobO6vRyRhHa zKT0Y5M;iRXx9@}F*w{1;xW@YsIlN_PEXVo`4e_7d$Hx19loAr!asH0)dz^sp>O~I> z{t4|8ua}3Tlsyo_;ZUK_Cv#;EVUFIXaSlY%@!pIrsgsFqXqaPT2<2dC$p7U2c(Ie0 zJ1G&2v6C;w|4GdH_AxEeEBkQiALseWrxi_mwEN^^cyA#Yb#CBykSpyZRMU(@$8Eds z7WYt!De=P+mlvD1$l&PnzVt5{FWPbbZh4duRL6z^M$X!gYtzeG>29a4hw)K3eX=-9=)7W_c>vK^5Q(1a*&W8 zWFCqABum<(`Na5Sb93StVxJ7{tFceLyAP&hB-UX2Kc@d4kBVdchPD8Y&S0E3Furkq z-Z|dTQ;*|D?n16(udy|B?DOOML}-aM0X(O?*N8i2I_=bj;T75s`8yf!y9eZ?o@6-Jjmd#R(LBMy0w8E1yX&kQQo=bi7~W9X=Uar}7SiMHdv5%TrQMCKwPpYYY%c229u z^VKa&-~5s>G7j#n}J(xVb`X^jOyyg@Ew*E^6;*+qs99Kr zIyGnyY9UsjmPJ{3Qrk{y*=dX28e`E(tU2|E>^KGOHi^w9&tlVopsl7Wu+9{*&2*z$ zW%6t?eM#*xi5;f9qbx9eAL~nEd+C88mX{t=%SUSWD9Ywh$i`8IS~ofsi$lw?HPnQ4 zp$*s-+Ke3`&xX(rYzKub2Sr;A+K;^;u?_TDwF-2-+WraI@ewONKgWJg$aYW2a?kTa z?DhNs>pbtpHc!YRk7s|UC}?%Zv$=CTi#uX#=XjQO8r8zi@*%c$#IBBKRmZcaBbIc; zj!v`{oeyLEM(p0)j8=&$wCV!2_%;!nZA-Arwif$qXIZbdw_&@hhdSPaRjy01yM^6x zdjqzm9>m7cFP-Otc7L#kES89&1na$6_*pMjeT=nNNA;IbFPT6uDdTHdsE>%nxLWMR z)nhHr>m`fTDx6q^6MJy$u>%*~XAaP7K7sYO%dqu!^1bIrV!h`bdyrUrdzM}_KtFmu zXpt<^m;NbM*yvAU6HR)QjpF*kkj0UDytr+F%n4Y{&0?9h?H_ z!h%{qcGLFK+s;?}Xpz2l88*?d5U+hrte_p+)4r-U&&1-{$=f@N?sd_&#$x+jo>LgK zBUbV*mcvfPKA2bs6Wd_XJyk4#NpEcr_t*1=*!%K&ZOG2oiF@rKwYe4Qvrl7hYd|e+ z#oE{!+GkH>M=R7F`3_FI86q>pOg>gJ*983ARSYw>PSLjLn;^|jq>>m}YkqPv# z3Unk?@=L-p;|$z0`6aVYrwZGT)%;TFceU7ntmBtX|EnjpQ}|_SKg@<-Ey6D3VtzUF z$mN{bS-~$)xmY%Rvk7aF>-ZJWN7plgY~WXj^~D3w^KpJ+nemgjui)px=dOW<>-Z(Y z=RQwbH}lJa-+i4_?t#Z;!{zP+|A=29{q@JVf5NX2o_C1Ye#S2w-uDRZpYzLx2R@4X zF@D+Da1>2Tzu=b*PkfvdpWrveJju_+mgCb<@(jOhdik@sf5|VK-j22bdi-;^pXV1x z&;J$f7x=}&O@EF1MSk&c)tA7WX8^y~&evzzEZqFq zJ(^>4Og`K@7k8e`!_5zOfi1vYXbahAHp~t)1=x)oj(Y^wBMTUXM&cf2N8v8AMYu=X z(YXEAkH&~%TMQm+$AYKZ=_VcPk>zHXt+1SZ!HQ(1DMUh;fqSN%X)@27~#h!x3g1L4s)XuZ>pmx5UkAH)0z`XzqlPQdCjik8HE+m!3b}_Ln!76znW8E^s zoN3QABd{sC-uSUAd6pTDZOIL06!s<0Hl8NN^UY|+%L~CDK`)pe8D&2h%aS}jU=NrvNGqQ( z#n_g-4EN>saFrr?G4-yRcI(wZN%h-B7?i=lmW*pMY&EPNCFPQOIn!E*! zwMm|S$$km^75f$9yu;ps`>Xb=#EG;+n7iy<#C*5Co7lc>zfE4gW4}Yl@7nJ|&%O3u z!hg?xkGi7vR6pS%}XfXAw`AIJ5-#!BXRgCoBiAbXJ{|${(CR5dW*r ztGxTV^H1=2`A6-l})& z33-Zp3Snluv+|jg6pj^r?_j}HRe>f-v%=W4%iIdu9<4a@=FeKP2rRd^R%gOLE({(az{t`Vy5y%S2<#wazu;O z;s)Z7*;|(K!bD``CAd%HSBB-{Rq(&n{Ib-hb(V6(bgUSk4&Ob4UpCV8nQ&0yk-5qv zbFgcCHeBr@IAwB>Q(g&obd)i@!viU*?z2jPUEY@8Xw*9of4{QTSz+^2;pq zeQd~jTr)@cWe#%g1H}AOep$>J*&~g`*#~hy#4i~;$PeR=@YJj*o|+ZKQ?sIYYL;@- zENmn{#k;~svy_8oDeufuu9>C$GE4cTV}8RgOSz_lh2P)e7T)QY-|@>*4(gcS^UK0Q z^WUk9fAA~APBOC*EG5T-6Kn!F$)dAS`K6=$GE4cTqx>>U`K6=$GE4cTqx>>UIc0(J zNO&XMQLHH!!m)%qrYm>MRPLCr+%Z$RW4dz3Oy!R0${k%h#*Q&b$|GG{VoPufr*!Q& zI}UfLErokcv=hOT?PTy&I~6?5P6G=!jZ%Vja@I`ctm(>GT`V{+f-2#!R{3j=^4Bcv zIiChS!e6HDZ6&xJ=e+h({<3tV=p^4Ces{kGsQoOJ@TzaE|nXDwCETFP8- z4pQC*i-?S&WbH$QvoRqm)znoztDu;jd>nXTU*)YfeBqwI+4u|ZoT$7r2j1BVotvG_ z(7)B$3KkCPCWmFl~X1tryQZ2au}TQ6=)DnnV~!~!}*uz@(_K$f>IAVr!M4xiR1m%bsSVTURcZDMs zvof;Olqg3Ws~mA0>m%#Uc;$%Wl^2c`i^qiNa69l9UN}y<;8^8?Bb5s#C>P9EF6dJ( zm=71cjoFluiG@jam*x0kbZ;+H-P<2E>``XD_9$G#z)MEL|7zf8Yt1HX*k5EmjsEPf z!ATA=D|*?yZVhAVNIQvfDe|6$qmE)eT5A?E>uWLRv4;5>_|(_oJwJmF{NDV{T1Mef zjDoeq?dkO1t2({!RGr>0i%xG_C_26EGSTU6FBF~L_8!scZT}=Xy&b>k^mf*YPH*QE zL5fB9coDO>I{5E8(`tHHJH3K=<2N`f{0MWmSIplLUNafFr!a;}E(?tdPZNe0>bF?NeAaJJW12{jBL;X>Kv!Vg~ydJn?_bKjCFL zaFJ<@?Or-Qq<~^G-OM)2kO;P#ok#&!nOouQKZf7FVE$zOWqr)?is2u#gYP6D$&{FK z){##$XPI`h3#s91a~qPtPnhri+Wgu4AKWqz4pk1{@X|?Sc0LyQW)3s=4W`5FW;T9} zxgE*j0cOW9nt*xJCNh5<3vZgE?-U}j6tKQf$!_))NGRLP9`j*V+O9lr99#0|z{KdQl2QRea;eGRh z^re_#tY6GD^O2x7n(gL8tQB03r1M=Qm8Xyw{>nO=%w|iOcg_!{lq$NNk<=QHx6U

;I9qAl+w%y)=#Qg)mUSiO}9DUe9GL&3j6nv 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/tt_regular.ttf b/assets/fonts/tt_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..09333caddce0c3463f912cafff78ded61a1a0315 GIT binary patch literal 139772 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 P7qvIL$KLFoWRHIVR96k) literal 0 HcmV?d00001 diff --git a/assets/fonts/tt_semi_bold.otf b/assets/fonts/tt_semi_bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..609715d737c2489ed18ab569ebd712684fd0565f GIT binary patch literal 170788 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 TQ_tlVrr*Wm;2QilUGaYbpv^q> literal 0 HcmV?d00001 diff --git a/assets/ic_rn_calendar.png b/assets/ic_rn_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..19564ad1757e5ffc288250bb57634d1b831a0a57 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)IR04cLT!HioFjx)->({S`a3SQ% zl`DY^U4C%^pgQi7AirRS`|lGJ1kUeY&=CKzjNcR}Ji*h&F~s6@vVyeEq^8R&9IAxp zxUudoSI#&jH1X>0zyoH?9TweR@=P{dWYjshLz=mxNp+2(YFU%&rtmdKI;Vst0N%c9 AhyVZp literal 0 HcmV?d00001 diff --git a/assets/images/cross.webp b/assets/images/cross.webp new file mode 100644 index 0000000000000000000000000000000000000000..16eb82e0dee0cb643bc6e07e16b14d21e8f7a514 GIT binary patch literal 426 zcmV;b0agA|Nk&GZ0RRA3MM6+kP&il$0000G0000-002h-06|PpNVWg~00B2ZkZm)6 zo15(f(};*5XNTKJlH3NM^0$xxwf)Ql#RyQ$KZ+N(yGIXJME@DMZQCgA9dBRvBc@#> zy}t=1S%D*q0$f;Jfe(uXIPjnp2(h6;#fjcn7$qtzEsRi94XOxLg(ySR2{j0H2($?F z7&I9)>2>M#7);=p6e%aZ9kxA5eU~!^lEzZXm~;SM5 z31tDJ|C9yr1;*wawHswFz&Db>X3$@J`I+nCiE051n~;svnE)fy(bREs#x{LT_y7R@ z_|A~RNTU8Q>C;8g!V^mhU7>5Cnz9_bHsy(>-37MYnfZ5utO^OR?w7~uM|-r;9?yP? zIX?m>1GB(ai+=Lag*QU^SHTs)hf~nZbu%s3Q?X9E ULwyTK4nkw0=9tX6N#Fng09FOFOaK4? literal 0 HcmV?d00001 diff --git a/assets/images/help.webp b/assets/images/help.webp new file mode 100644 index 0000000000000000000000000000000000000000..c70857afebe1624fe85d8b4e9a97bfc63aa4b7d4 GIT binary patch literal 544 zcmV+*0^j{oNk&E(0ssJ4MM6+kP&il$0000G0001V0027x06|PpNX-BM00Dqi+iu)S z5DY;O0>Kap!4L|;5CTCAS_Xzt2!db;`miD^gW5N)6%i8v|KX;hCfluy%aDrmkjt1I za+$m>9w;i>SjIY_I1eNvIgrdhN=PD%A&JzO_)^+a}8&`7$76FlNngML z!ORXBJP*bT1hgiIrnj14_PU<94W8FUu_h|Ds=!n06vjGnMx(2q9LaeOn9&o31tA!{Obvp+t1^@3mS3%z&Ex457@Z=W@&Fh zVaV`5qN8yMs}|52v*3)f{9i58wm(ADf>HtvZp8oq{`jN8{@SE=Xw|g?4eHq!Wp}a{ z7XldZ&KF)mmYA1A8X8}^SwA4l;tBn05p@TG_c?5z5NllqI=DD~MVy=DSgml{1?=B3 z9{oxqP#+rAh0FS~t-X&2Rh3suX8M+QT#W%QpR?>cim3+xFSGf$ya6^A%zvG{>vZTd zk0&Cve88xuX^kgNsOgAzP;8BgJ%`rK??c9}NG>%ita~u>BX)NHK(Fu2pf!;{sj0Gj i7Wsm{GlmH(J#47XS6c}|_BNJu_Hw#+OyB?j0001mtmgj! literal 0 HcmV?d00001 diff --git a/assets/images/quote_apology_icon.webp b/assets/images/quote_apology_icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..ed52f778e0b00bc66eb7c124854f32aaf41e3534 GIT binary patch literal 2710 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 QJ$1icLNEhifB*mh0I$S3kpKVy literal 0 HcmV?d00001 diff --git a/assets/images/sww.webp b/assets/images/sww.webp new file mode 100644 index 0000000000000000000000000000000000000000..0ee8e16733999b1f8e3c0400e04b7a85a6c4525d GIT binary patch literal 3156 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 Pl}AfL_^S4Q{*eCz{WkEA literal 0 HcmV?d00001 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..efba1c3767 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: ['module:metro-react-native-babel-preset'], + plugins: [ + "react-native-reanimated/plugin", + ] +}; diff --git a/components/AppImage.tsx b/components/AppImage.tsx new file mode 100644 index 0000000000..dcded9c6f4 --- /dev/null +++ b/components/AppImage.tsx @@ -0,0 +1,27 @@ +import { Image, ImageStyle, StyleProp } from "react-native"; +import { ImageName } from "../App/common/constants/StringConstant"; +export const AppImage = (imageCode?: string, style?: StyleProp) => { + switch (imageCode) { + case ImageName.SWW: + return ( + + ); + case ImageName.CROSS: + return ( + + ); + case ImageName.HELP: + return ( + + ); + case ImageName.QUOTE_APOLOGY_ICON: + return ( + + ); + default: + return null; + } +}; diff --git a/components/StyledImage.tsx b/components/StyledImage.tsx new file mode 100644 index 0000000000..f54359cf3c --- /dev/null +++ b/components/StyledImage.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { ImageFieldData } from "../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { Image } from "react-native"; +import { TouchableOpacity } from "react-native-gesture-handler"; +import { CtaData } from "../App/common/interface"; + +export const StyledImage = ({ + imageFieldData, + handleClick, +}: { + imageFieldData: ImageFieldData; + handleClick?: (ctaData: CtaData) => void; +}) => { + return imageFieldData?.cta ? ( + handleClick && handleClick(imageFieldData?.cta!!)} + > + + + ) : ( + + ); +}; diff --git a/components/StyledLottie.tsx b/components/StyledLottie.tsx new file mode 100644 index 0000000000..c2be6c76e1 --- /dev/null +++ b/components/StyledLottie.tsx @@ -0,0 +1,50 @@ +import React, { useRef, useEffect } from "react"; +import LottieView from "lottie-react-native"; +import { LottieFieldData } from "../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyleSheet, TouchableOpacity } from "react-native"; +import { CtaData } from "../App/common/interface"; + +export const StyledLottie = ({ + lottieFieldData, + handleClick, +}: { + lottieFieldData: LottieFieldData; + handleClick?: (ctaData: CtaData) => void; +}) => { + const animationRef = useRef(null); + + useEffect(() => { + setTimeout(() => { + animationRef.current?.play(); + }, lottieFieldData?.delayAnimationBy ?? 0); + }, []); + + return ( + { + lottieFieldData.cta && handleClick && handleClick(lottieFieldData.cta); + }} + style={styles.touchableOpacity} + activeOpacity={1} + > + + + ); +}; + +const styles = StyleSheet.create({ + lottie: { + flex: 1, + width: "100%", + height: "100%", + }, + touchableOpacity: { + flex: 1, + }, +}); diff --git a/components/ThemeContext.js b/components/ThemeContext.js new file mode 100644 index 0000000000..33ec2d2fc4 --- /dev/null +++ b/components/ThemeContext.js @@ -0,0 +1,45 @@ +// ThemeContext.js + +import React, { createContext, useContext, useState } from "react"; + +const ThemeContext = createContext(); + +export const lightTheme = { + primaryColor: "#007BFF", + secondaryColor: "#6C757D", + textColor: "#333333", + backgroundColor: "#FFFFFF", +}; + +export const darkTheme = { + primaryColor: "#00BFFF", + secondaryColor: "#B0B0B0", + textColor: "#FFFFFF", + backgroundColor: "#333333", +}; + +export const ThemeProvider = ({ children }) => { + const [isDarkMode, setIsDarkMode] = useState(false); + + const toggleTheme = () => { + setIsDarkMode((prevMode) => !prevMode); + }; + + const setTheme = (darkTheme) => { + if (darkTheme != isDarkMode) { + setIsDarkMode(newTheme); + } + }; + + const theme = isDarkMode ? darkTheme : lightTheme; + + return ( + + {children} + + ); +}; + +export const useTheme = () => { + return useContext(ThemeContext); +}; diff --git a/components/bottomsheet/BaseBottomSheetComponent.tsx b/components/bottomsheet/BaseBottomSheetComponent.tsx new file mode 100644 index 0000000000..83bb4e2e05 --- /dev/null +++ b/components/bottomsheet/BaseBottomSheetComponent.tsx @@ -0,0 +1,91 @@ +import React, { useEffect, useRef, useState } from "react"; +import { View, findNodeHandle } from "react-native"; +import Modal from "react-native-modal"; +import { sendAsAnalyticsEvent } from "../../App/common/hooks/useAnalyticsEvent"; +import { CtaData, CtaType } from "../../App/common/interface"; +import { ModalView } from "../../App/common/interface/modals/ModalView"; +import { GetModalView } from "../../App/common/modals/modalViewResolver"; +import { NativeDeeplinkNavigatorModule } from "../../App/common/native-module/NativeModules"; +import styles from "../../App/common/styles/BaseBottomSheetComponentStyles"; + +const BaseBottomSheetComponent = ({ + onBottomSheetAnimationEnd, + showModal, + onClose, + modalView, +}: { + onBottomSheetAnimationEnd?: (id: number | null) => void; + showModal: boolean; + onClose: () => void; + modalView: ModalView | undefined; +}) => { + const [isModalVisible, setModalVisible] = useState(showModal); + const modalRef = useRef(null); + + const closeModal = () => { + setModalVisible(false); + setTimeout(() => { + onClose(); + }, 400); + }; + + const handleModalClick = (cta: CtaData) => { + switch (cta?.type) { + case CtaType.DISMISS_MODAL: + if (!!cta?.analyticsEventProperties) { + sendAsAnalyticsEvent(cta?.analyticsEventProperties); + } + closeModal(); + break; + default: + try { + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify(cta) + ); + } catch (error) { + // #TODO: Handle the error gracefully using Sentry. + console.error("Error while navigating to deep link:", error); + } + } + }; + + useEffect(() => { + setModalVisible(showModal); + if (typeof onBottomSheetAnimationEnd === "function") { + const nodeId = findNodeHandle(modalRef?.current); + onBottomSheetAnimationEnd(nodeId); + } + }, [showModal]); + + return ( + { + closeModal(); + }} + onBackButtonPress={() => { + closeModal(); + }} + hasBackdrop={true} + backdropOpacity={0.65} + isVisible={isModalVisible} + swipeDirection="down" + onSwipeComplete={() => closeModal()} + onModalHide={() => onClose()} + animationIn="slideInUp" + animationOut="slideOutDown" + animationInTiming={400} + animationOutTiming={400} + useNativeDriverForBackdrop={true} + style={styles.modal} + > + + {/* + + */} + {GetModalView.getModal(modalView!!, handleModalClick)} + + + ); +}; + +export default BaseBottomSheetComponent; \ No newline at end of file diff --git a/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet.tsx b/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet.tsx new file mode 100644 index 0000000000..37a07b1c62 --- /dev/null +++ b/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheet.tsx @@ -0,0 +1,110 @@ +import React, { useState } from "react"; +import { TouchableOpacity, View } from "react-native"; +import { PillData } from "../../../App/common/interface/components/PillData"; +import { + InfoCardData, + TitleWithFeedbackPillBottomSheetData, +} from "../../../App/common/interface/widgets/modalData/TitleWithFeedbackPillBottomSheetData"; +import { ButtonData } from "../../../App/common/interface/widgets/widgetData/FooterWithCardWidgetData"; +import CtaButton from "../../reusable/cta-button/CtaButton"; +import { StyledText } from "../../widgets/styled-text/StyledText"; +import TitleWidget from "../../widgets/title-widget/TitleWidget"; +import styles from "./TitleWithFeedBackBottomSheetStyle"; +import { CtaData } from "../../../App/common/interface"; + +const ItemComponent = ({ item }: { item: PillData }) => { + const [isSelected, setIsSelected] = useState(false); + + const onItemPress = () => { + setIsSelected(!isSelected); + }; + + const pillStyle = isSelected + ? [item?.defaultPillStyle, item?.selectedState?.pillStyle] + : [item?.defaultPillStyle, item?.unSelectedState?.pillStyle]; + + const title = isSelected + ? item?.selectedState?.title + : item?.unSelectedState?.title; + + return ( + + {title && } + + ); +}; + +const InfoCardComponent = ({ + infoCardData, +}: { + infoCardData?: InfoCardData; +}) => { + return ( + {}} + widgetIndex={0} + /> + ); +}; + +const TitleWithFeedbackPillBottomSheet = ({ + bottomSheetData, + handleModalClick +}: { + bottomSheetData?: TitleWithFeedbackPillBottomSheetData; + handleModalClick: (cta: CtaData) => void; +}) => { + const renderCtaButton = ( + buttonData?: ButtonData, + handleModalFooterButtonClick?: () => void + ) => ( + + {buttonData?.title && } + + ); + + const handleModalFooterLeftButtonClick = () => { + handleModalClick(bottomSheetData?.leftButton?.cta!!); + }; + + const handleModalFooterRightButtonClick = () => { + handleModalClick(bottomSheetData?.rightButton?.cta!!); + }; + + return ( + + {}} + widgetIndex={0} + /> + + + {bottomSheetData?.feedBackList?.map((item, index) => ( + + ))} + + + + + + {renderCtaButton( + bottomSheetData?.leftButton, + handleModalFooterLeftButtonClick + )} + {renderCtaButton( + bottomSheetData?.rightButton, + handleModalFooterRightButtonClick + )} + + + ); +}; + +export default TitleWithFeedbackPillBottomSheet; diff --git a/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheetStyle.ts b/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheetStyle.ts new file mode 100644 index 0000000000..42d489a102 --- /dev/null +++ b/components/bottomsheet/title-with-feed-back-bottom-sheet/TitleWithFeedBackBottomSheetStyle.ts @@ -0,0 +1,29 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + feedbackListContainer: { + marginTop: 24, + display: "flex", + flexDirection: "row", + flexWrap: "wrap", + }, + + rowContainer: { + width: "100%", + flex: 1, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + paddingTop: 16, + }, + + footerContainer: { + marginTop: 32, + flexDirection: "row", + flexWrap: "wrap", + justifyContent: "space-between", + alignItems: "center", + }, +}); + +export default styles; diff --git a/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet.tsx b/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet.tsx new file mode 100644 index 0000000000..9660312570 --- /dev/null +++ b/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheet.tsx @@ -0,0 +1,107 @@ +import React from "react"; +import { View } from "react-native"; +import { FlatList } from "react-native-gesture-handler"; +import { commonStyles } from "../../../App/Container/Navi-Insurance/Styles"; +import { CtaData } from "../../../App/common/interface"; +import { + KeyValueInfoData, + PremiumDetailsBottomSheetData, +} from "../../../App/common/interface/widgets/modalData/PremiumDetailsBottomSheetData"; +import { StyledImage } from "../../StyledImage"; +import CtaButton from "../../reusable/cta-button/CtaButton"; +import { HorizontalDashedSeparator } from "../../reusable/dashed-separator/DashedSeparator"; +import { CardComponent } from "../../widgets/footer-with-card-widget/FooterWithCardWidget"; +import { StyledText } from "../../widgets/styled-text/StyledText"; +import TitleWidget from "../../widgets/title-widget/TitleWidget"; +import styles from "./TitleWithListBottomSheetStyle"; + +const PremiumDetailsRowComponent = ({ item }: { item: KeyValueInfoData }) => { + const rowVisibility = !!item.key?.text; + return rowVisibility ? ( + + + + {item.key && } + {item.displayRightOfKey?.text && ( + + )} + + + {item.displayLeftOfValue && ( + + )} + {item.value && } + + + + ) : ( + <> + ); +}; + +const PremiumDetailsBottomSheet = ({ + bottomSheetData, + handleModalClick, +}: { + bottomSheetData: PremiumDetailsBottomSheetData | undefined; + handleModalClick: (cta: CtaData) => void; +}) => { + const handleFooterButtonClick = () => { + { + if (handleModalClick) { + handleModalClick(bottomSheetData?.button?.cta!!)!!; + } + } + }; + + return ( + + {}} + widgetIndex={0} + /> + {bottomSheetData?.infoTitle?.text && ( + + {bottomSheetData?.infoIcon?.url && ( + + )} + + + )} + + } + keyExtractor={(item, index) => item.key?.text || index.toString()} + /> + {bottomSheetData?.showDivider && ( + + )} + } + keyExtractor={(item, index) => item.key?.text || index.toString()} + /> + + {bottomSheetData?.calloutCardInfo?.title?.text && ( + + )} + + {bottomSheetData?.button?.title && ( + + )} + + + ); +}; + +export default PremiumDetailsBottomSheet; \ No newline at end of file diff --git a/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheetStyle.ts b/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheetStyle.ts new file mode 100644 index 0000000000..2ac3a77c22 --- /dev/null +++ b/components/bottomsheet/title-with-list-bottom-sheet/TitleWithListBottomSheetStyle.ts @@ -0,0 +1,59 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + infoContainer: { + flexDirection: "row", + alignItems: "flex-start", + backgroundColor: "#FAFAFA", + padding: 12, + marginHorizontal: 16, + + borderRadius: 4, + }, + cardContainer: { + marginBottom: 16, + backgroundColor: "#E7F8EE", + flexDirection: "row", + justifyContent: "space-between", + paddingVertical: 8, + paddingHorizontal: 16, + borderRadius: 16, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, + }, + rowContainer: { + width: "100%", + flex: 1, + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + paddingTop: 16, + }, + + columnContainer: { + width: "100%", + flex: 1, + flexDirection: "column", + paddingHorizontal: 16, + }, + + leftContent: { + flexDirection: "row", + justifyContent: "flex-start", + alignItems: "center", + }, + + rightContent: { + flexDirection: "row", + justifyContent: "flex-end", + alignItems: "center", + }, + + dividerStyle: { + marginTop: 24, + marginHorizontal: 16, + width: "92%", + }, +}); + +export default styles; diff --git a/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet.tsx b/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet.tsx new file mode 100644 index 0000000000..ce380df052 --- /dev/null +++ b/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheet.tsx @@ -0,0 +1,174 @@ +import React from "react"; +import { View, ViewStyle } from "react-native"; +import { CtaData } from "../../../App/common/interface"; +import { + Bullet, + Header, + StepData, + TitleWithStepsBottomSheetData, +} from "../../../App/common/interface/widgets/modalData/TitleWithStepsBottomSheetData"; +import { ButtonData } from "../../../App/common/interface/widgets/widgetData/FooterWithCardWidgetData"; +import { StyledImage } from "../../StyledImage"; +import CtaButton from "../../reusable/cta-button/CtaButton"; +import { VerticalDashedSeparator } from "../../reusable/dashed-separator/DashedSeparator"; +import { StyledText } from "../../widgets/styled-text/StyledText"; +import styles from "./TitleWithStepsBottomSheetStyle"; + +const TitleWithStepsBottomSheet = ({ + bottomSheetData, + handleModalClick, +}: { + bottomSheetData: TitleWithStepsBottomSheetData; + handleModalClick: (cta: CtaData) => void; +}) => { + const handleFooterButtonClick = () => { + { + if (handleModalClick) { + handleModalClick(bottomSheetData?.button?.cta!!)!!; + } + } + }; + return ( + + + + + + ); +}; + +const HeaderUI = ({ headerData }: { headerData: Header }) => { + const headerBg = headerData.backgroundColor!!; + return ( + + + + + + + + ); +}; + +const ContentUI = ({ content }: { content: StepData[] }) => { + return ( + + + + ); +}; + +const StepsUI = ({ steps }: { steps: StepData[] }) => { + const totalSteps = steps.length; + return ( + + {steps.map((step, index) => { + return ( + + ); + })} + + ); +}; + +const StepUI = ({ + keyIndex, + stepData, + lastIndex, +}: { + keyIndex: any; + stepData: StepData; + lastIndex: number; +}) => { + let dynamicStyles: ViewStyle = { + position: "absolute", + marginStart: 16, + top: 28, + }; + if (keyIndex === lastIndex - 1) { + dynamicStyles = { + ...dynamicStyles, + height: 28, + top: 0, + }; + } + + return ( + + + + {stepData.image && } + + {stepData.serial && } + + + + + {stepData.bullets && ( + + + + )} + + ); +}; + +const BulletBoxUI = ({ bullets }: { bullets: Bullet[] }) => { + return ( + + {bullets.map((bullet, index) => ( + + ))} + + ); +}; + +const BulletUI = ({ bulletData }: { bulletData: Bullet }) => { + return ( + + + {bulletData.bulletIcon && ( + + )} + + {bulletData.title && } + + {bulletData.tagTitle && ( + + + + + + + )} + + ); +}; + +const FooterUI = ({ + buttonData, + onPress, +}: { + buttonData: ButtonData; + onPress: () => void; +}) => { + return ( + + {buttonData.title && } + + ); +}; + +export default TitleWithStepsBottomSheet; \ No newline at end of file diff --git a/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheetStyle.ts b/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheetStyle.ts new file mode 100644 index 0000000000..ab05f7bc7e --- /dev/null +++ b/components/bottomsheet/title-with-steps-bottom-sheet/TitleWithStepsBottomSheetStyle.ts @@ -0,0 +1,73 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + header: { + marginBottom: 12, + paddingHorizontal: 16, + paddingVertical: 8, + flexDirection: "row", + justifyContent: "space-between", + }, + headerTitleColumn: { + flexDirection: "column", + alignItems: "flex-start", + justifyContent: "space-between", + paddingTop: 16, + paddingBottom: 12, + }, + content: { + paddingStart: 16, + paddingEnd: 20, + }, + stepsRow: { + flexDirection: "row", + paddingVertical: 12, + alignItems: "center", + }, + stepsCircle: { + position: "absolute", + width: 32, + height: 32, + alignItems: "center", + justifyContent: "center", + }, + stepsBulletRow: { + flexDirection: "row", + marginStart: 44, + }, + bulletContainer: { + flex: 1, + borderWidth: 1, + borderRadius: 4, + borderTopLeftRadius: 0, + borderColor: "#BED7FF", + backgroundColor: "#EAF2FF80", + paddingVertical: 10, + paddingStart: 16, + }, + bulletRow: { + flexDirection: "row", + paddingVertical: 6, + }, + bulletRow2: { + flexDirection: "row", + flex: 1, + maxWidth: "90%", + }, + bulletTag: { + justifyContent: "flex-start", + alignItems: "flex-end", + flex: 0.66, + marginEnd: -3, + }, + bulletTagContainer: { + backgroundColor: "#3C7DFF", + paddingHorizontal: 8, + paddingVertical: 1, + borderTopStartRadius: 2, + borderTopEndRadius: 2, + borderBottomStartRadius: 2, + }, +}); + +export default styles; diff --git a/components/reusable/cta-button/CtaButton.tsx b/components/reusable/cta-button/CtaButton.tsx new file mode 100644 index 0000000000..350aed9aae --- /dev/null +++ b/components/reusable/cta-button/CtaButton.tsx @@ -0,0 +1,39 @@ +import { TouchableHighlight, ViewStyle } from "react-native"; +import { Lottie } from "../../../App/common/constants/StringConstant"; +import { ButtonState } from "../../../App/common/interface/widgets/widgetData/FooterWithCardWidgetData"; +import { LottieFieldData } from "../../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyledLottie } from "../../StyledLottie"; +import styles from "./CtaButtonStyle"; + +const CtaButton = ({ + onPress, + style, + children, + state, +}: { + onPress?: () => void; + style?: ViewStyle; + children?: React.ReactNode; + state?: ButtonState; +}) => { + const loaderData: LottieFieldData = { + url: Lottie.FOOTER_LOADER_URL, + loop: true, + lottieStyle: styles.loaderLottieStyle, + }; + return ( + + {state === ButtonState.LOADING ? ( + + ) : ( + children + )} + + ); +}; + +export default CtaButton; diff --git a/components/reusable/cta-button/CtaButtonStyle.ts b/components/reusable/cta-button/CtaButtonStyle.ts new file mode 100644 index 0000000000..548e42f97d --- /dev/null +++ b/components/reusable/cta-button/CtaButtonStyle.ts @@ -0,0 +1,17 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + footerButtonContainer: { + backgroundColor: "#1F002A", + paddingVertical: 16, + borderRadius: 4, + justifyContent: "center", + alignItems: "center", + }, + loaderLottieStyle: { + width: 30, + alignSelf: "center", + }, +}); + +export default styles; diff --git a/components/reusable/dashed-separator/DashedSeparator.tsx b/components/reusable/dashed-separator/DashedSeparator.tsx new file mode 100644 index 0000000000..205d2a084d --- /dev/null +++ b/components/reusable/dashed-separator/DashedSeparator.tsx @@ -0,0 +1,10 @@ +import { View, ViewStyle } from "react-native"; +import styles from "./DashedSeparatorStyle"; + +export const HorizontalDashedSeparator = ({ style }: { style: ViewStyle }) => { + return ; +}; + +export const VerticalDashedSeparator = ({ style }: { style: ViewStyle }) => { + return ; +}; diff --git a/components/reusable/dashed-separator/DashedSeparatorStyle.ts b/components/reusable/dashed-separator/DashedSeparatorStyle.ts new file mode 100644 index 0000000000..f7eece188f --- /dev/null +++ b/components/reusable/dashed-separator/DashedSeparatorStyle.ts @@ -0,0 +1,22 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + horizontalDashedDivider: { + width: "100%", + height: 1, + backgroundColor: "#FFFFFF", + borderStyle: "dashed", + borderBottomColor: "#E3E5E5", + borderBottomWidth: 1, + }, + verticalDashedDivider: { + width: 1, + height: "100%", + backgroundColor: "#FFFFFF", + borderStyle: "dashed", + borderRightColor: "#EBEBEB", + borderRightWidth: 1, + }, +}); + +export default styles; diff --git a/components/reusable/static-header/StaticHeader.tsx b/components/reusable/static-header/StaticHeader.tsx new file mode 100644 index 0000000000..e3f88feee7 --- /dev/null +++ b/components/reusable/static-header/StaticHeader.tsx @@ -0,0 +1,37 @@ +import { TouchableOpacity } from "react-native-gesture-handler"; +import { View } from "react-native"; +import { CtaData } from "../../../App/common/interface"; +import { styles } from "./StaticHeaderStyle"; +import { ImageName } from "../../../App/common/constants/StringConstant"; +import { AppImage } from "../../AppImage"; + +export const StaticHeader = ({ + handleClick, + leftIconCta, + rightIconCta, +}: { + handleClick?: (ctaData: CtaData) => void; + leftIconCta?: CtaData; + rightIconCta?: CtaData; +}) => { + return ( + + { + handleClick && leftIconCta && handleClick(leftIconCta); + }} + activeOpacity={1} + > + {AppImage(ImageName.CROSS, styles.leftImageStyle)} + + { + handleClick && rightIconCta && handleClick(rightIconCta); + }} + activeOpacity={1} + > + {AppImage(ImageName.HELP, styles.rightImageStyle)} + + + ); +}; diff --git a/components/reusable/static-header/StaticHeaderStyle.ts b/components/reusable/static-header/StaticHeaderStyle.ts new file mode 100644 index 0000000000..7f952849cc --- /dev/null +++ b/components/reusable/static-header/StaticHeaderStyle.ts @@ -0,0 +1,20 @@ +import { StyleSheet } from "react-native"; + +export const styles = StyleSheet.create({ + container: { + width: "100%", + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + padding: 16, + backgroundColor: "white", + }, + leftImageStyle: { + width: 24, + height: 24, + }, + rightImageStyle: { + width: 44, + height: 22, + }, +}); diff --git a/components/widgets/BaseWidget.tsx b/components/widgets/BaseWidget.tsx new file mode 100644 index 0000000000..75dfdb933f --- /dev/null +++ b/components/widgets/BaseWidget.tsx @@ -0,0 +1,70 @@ +import React from "react"; +import { View } from "react-native"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { CtaData } from "../../App/common/interface"; +import { Widget } from "../../App/common/interface/widgets/Widget"; +import WidgetActionHandler from "../../App/common/widgets/widget-actions/WidgetActionHandler"; +import { WidgetActionTypes } from "../../App/common/widgets/widget-actions/WidgetActionTypes"; +import { GetWidgetView } from "../../App/common/widgets/widgetResolver"; +import { ScreenState } from "../../App/common/screen/BaseScreen"; + +const BaseWidget = ({ + widget, + handleScreenActions, + screenState, + handleClick, + widgetIndex, +}: { + widget: Widget; + handleScreenActions: (actionPayload?: GenericActionPayload) => void; + screenState?: ScreenState | null; + handleClick?: (ctaData: CtaData) => void; + widgetIndex: number; +}) => { + function handleWidgetActions( + value: any | undefined | null, + actionPayloadList: GenericActionPayload | undefined + ) { + // console.log( + // "handleWidgetActions payload list" + + // JSON.stringify(actionPayloadList) + + // "value " + + // JSON.stringify(value) + // ); + let payload = actionPayloadList; + let needPayloadCompression = false; + actionPayloadList?.metaData?.forEach((actionPayload) => { + if (actionPayload?.actionType === WidgetActionTypes.UPDATE_WIDGET_DATA) { + needPayloadCompression = true; + return; + } + }); + if (!!value && needPayloadCompression) { + payload = WidgetActionHandler.getTargetWidgetActionPayload( + value, + actionPayloadList + ); + } + handleScreenActions(payload); + } + widget = { + ...widget, + widgetVisibility: + widget.widgetVisibility !== undefined ? widget.widgetVisibility : true, + }; + return widget.widgetVisibility ? ( + + {GetWidgetView.getWidget( + widget, + handleWidgetActions, + widgetIndex, + handleClick, + screenState + )} + + ) : ( + <> + ); +}; + +export default BaseWidget; diff --git a/components/widgets/ButtonTestWidget.tsx b/components/widgets/ButtonTestWidget.tsx new file mode 100644 index 0000000000..72fa44abaf --- /dev/null +++ b/components/widgets/ButtonTestWidget.tsx @@ -0,0 +1,64 @@ +import { Text, View, ViewStyle } from "react-native"; +import { TouchableOpacity } from "react-native-gesture-handler"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { TitleWidgetData } from "../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { NativeDeeplinkNavigatorModule } from "../../App/common/native-module/NativeModules"; + +const ButtonTestWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, +}: { + widgetData: TitleWidgetData; + widgetStyle: ViewStyle; + handleActions: ( + value: any | undefined | null, + screenActionPayload: GenericActionPayload + ) => void; + widgetIndex: number; +}) => { + const handleButtonClick = (): void => { + NativeDeeplinkNavigatorModule.navigateToNaviDeeplinkNavigator( + JSON.stringify({ + url: "gi/fresh_policy_form/form", + type: "REDIRECTION_CTA", + parameters: [ + { + key: "type", + value: "FRESH_POLICY", + }, + { + key: "applicationType", + value: "FRESH_POLICY", + }, + { + key: "landingPageVersion", + value: "3", + }, + ], + }) + ); + // handleActions({ + // actionType: WidgetActionTypes.UPDATE_WIDGET_DATA, + // metaData: { + // widgetActionMeta: { + // targetWidgetId: "title_widget_1", + // keyPath: "subtitle.text", + // newValue: "THIS IS THE SUBTITLE" + // } + // } + // } + // ); + }; + + return ( + + + Click me + + + ); +}; + +export default ButtonTestWidget; diff --git a/components/widgets/ComparisonWidget.tsx b/components/widgets/ComparisonWidget.tsx new file mode 100644 index 0000000000..e82eacbad7 --- /dev/null +++ b/components/widgets/ComparisonWidget.tsx @@ -0,0 +1,95 @@ +import React from "react"; +import { StyleSheet, View, ViewStyle } from "react-native"; +import { commonStyles } from "../../App/Container/Navi-Insurance/Styles"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { CtaData } from "../../App/common/interface"; +import { ComparisonWidgetData } from "../../App/common/interface/widgets/widgetData/ComparisonWidgetData"; +import Colors from "../../assets/colors/colors"; +import { StyledImage } from "../StyledImage"; +import TitleWidget from "./title-widget/TitleWidget"; + +const ComparisonWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, +}: { + widgetData: ComparisonWidgetData; + widgetStyle: ViewStyle; + handleActions: (screenActionPayload?: GenericActionPayload) => void; + widgetIndex: number; + handleClick?: (ctaData: CtaData) => void; +}) => { + return ( + + + {widgetData.leftIcon && ( + + )} + {widgetData.leftIcon && widgetData.leftTitle && ( + + )} + {widgetData.leftTitle && ( + + )} + + + + {widgetData.divider && ( + + )} + + + + {widgetData.rightIcon && ( + + )} + {widgetData.rightIcon && widgetData.rightTitle && ( + + )} + {widgetData.rightTitle && ( + + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + borderWidth: 1, + borderColor: Colors.lightGray, + borderRadius: 4, + padding: 16, + backgroundColor: "white", + }, + left_element: { + flex: 0.4, + flexDirection: "row", + justifyContent: "flex-start", + alignItems: "center", + }, + divider: { + flex: 0.2, + flexDirection: "row", + justifyContent: "center", + }, + right_element: { + flex: 0.4, + flexDirection: "row", + justifyContent: "flex-end", + alignItems: "center", + }, +}); + +export default ComparisonWidget; diff --git a/components/widgets/HeaderLottieAnimationWidget.tsx b/components/widgets/HeaderLottieAnimationWidget.tsx new file mode 100644 index 0000000000..bbd559145e --- /dev/null +++ b/components/widgets/HeaderLottieAnimationWidget.tsx @@ -0,0 +1,70 @@ +import React, { useMemo } from "react"; +import { StyleSheet, View, ViewStyle } from "react-native"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { NaviLinearGradient } from "../../App/common/hooks/useGradient"; +import { CtaData } from "../../App/common/interface"; +import { HeaderLottieAnimationWidgetData } from "../../App/common/interface/widgets/widgetData/HeaderLottieAnimationWidgetData"; +import Colors from "../../assets/colors/colors"; +import { StyledLottie } from "../StyledLottie"; +import { StyledText } from "./styled-text/StyledText"; + +const HeaderLottieAnimationWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, +}: { + widgetData: HeaderLottieAnimationWidgetData; + widgetStyle: ViewStyle; + handleActions: (screenActionPayload?: GenericActionPayload) => void; + widgetIndex: number; + handleClick?: (ctaData: CtaData) => void; +}) => { + const MemoizedStyledLottie = useMemo(() => { + return ( + + {widgetData?.backgroundLottie && ( + + )} + + ); + }, [widgetData?.backgroundLottie]); + return ( + + + {MemoizedStyledLottie} + + {widgetData?.title && ( + + )} + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + justifyContent: "flex-start", + alignItems: "center", + position: "relative", + }, + backgroundLottie: { + width: "100%", + height: 233, + top: 0, + left: 0, + }, + title: { + position: "absolute", + zIndex: 1, + marginTop: 84, + }, +}); + +export default HeaderLottieAnimationWidget; diff --git a/components/widgets/HeaderWithAssetsWidget.tsx b/components/widgets/HeaderWithAssetsWidget.tsx new file mode 100644 index 0000000000..3171c200a7 --- /dev/null +++ b/components/widgets/HeaderWithAssetsWidget.tsx @@ -0,0 +1,94 @@ +import { + View, + ViewStyle, + StyleSheet, + BackHandler, + TouchableOpacity, + Image, +} from "react-native"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { StyledImage } from "../StyledImage"; +import { StyledLottie } from "../StyledLottie"; +import { HeaderWithAssetsWidgetData } from "../../App/common/interface/widgets/widgetData/HeaderWithAssetsWidgetData"; +import { CtaData } from "../../App/common/interface"; +import { StyledText } from "./styled-text/StyledText"; +import { useEffect } from "react"; + +const HeaderWithAssetsWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, +}: { + widgetData: HeaderWithAssetsWidgetData; + widgetStyle: ViewStyle; + handleActions: ( + value?: any | undefined | null, + screenActionPayload?: GenericActionPayload + ) => void; + widgetIndex: number; + handleClick?: (ctaData: CtaData) => void; +}) => { + const handleBackButtonClick = () => { + handleActions(null, widgetData?.action); + handleClick && + widgetData?.leftIcon?.cta && + handleClick(widgetData?.leftIcon?.cta); + return true; + }; + + useEffect(() => { + BackHandler.addEventListener("hardwareBackPress", handleBackButtonClick); + return () => { + BackHandler.removeEventListener( + "hardwareBackPress", + handleBackButtonClick + ); + }; + }, [widgetData]); + + return ( + + {widgetData.leftIcon && ( + handleBackButtonClick()}> + + + )} + {widgetData.leftLottie && ( + + )} + {widgetData.centerTitle && ( + + )} + {widgetData.rightIcon && ( + + )} + {widgetData.rightLottie && ( + + )} + + ); +}; +const styles = StyleSheet.create({ + container: { + width: "100%", + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + padding: 16, + }, +}); +export default HeaderWithAssetsWidget; diff --git a/components/widgets/SliderWidget.tsx b/components/widgets/SliderWidget.tsx new file mode 100644 index 0000000000..c098ae1ffb --- /dev/null +++ b/components/widgets/SliderWidget.tsx @@ -0,0 +1,45 @@ +import Slider from "@react-native-community/slider"; +import { View } from "react-native"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { SliderWidgetData } from "../../App/common/interface/widgets/widgetData/SliderWidgetData"; + +const SliderWidget = ({ + widgetData, + handleActions, + widgetIndex, +}: { + widgetData: SliderWidgetData; + handleActions: ( + value: any | undefined | null, + actionPayloadList: GenericActionPayload | undefined + ) => void; + widgetIndex: number; +}) => { + let valueChangeActionPayload: GenericActionPayload | undefined = + widgetData.onValueChangeAction; + let sliderReleaseActionPayloadSequence: GenericActionPayload | undefined = + widgetData.onSliderReleaseActionSequence; + + return ( + + { + handleActions( + value, + !!valueChangeActionPayload ? valueChangeActionPayload : {} + ); + }} + onSlidingComplete={(value) => { + handleActions(value, sliderReleaseActionPayloadSequence); + }} + /> + + ); +}; + +export default SliderWidget; diff --git a/components/widgets/TitleWidget.tsx b/components/widgets/TitleWidget.tsx new file mode 100644 index 0000000000..4b9734c236 --- /dev/null +++ b/components/widgets/TitleWidget.tsx @@ -0,0 +1,30 @@ +import { View, ViewStyle } from "react-native"; +import { TitleWidgetData } from "../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyledText } from "../widgets/styled-text/StyledText"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; + +const TitleWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, +}: { + widgetData: TitleWidgetData; + widgetStyle?: ViewStyle; + handleActions?: (screenActionPayload?: GenericActionPayload) => void; + widgetIndex?: number; +}) => { + return ( + + {widgetData.title && } + {widgetData.subtitle && ( + + )} + {widgetData.rightTitle && ( + + )} + + ); +}; + +export default TitleWidget; diff --git a/components/widgets/TitleWithAssetsWidget.tsx b/components/widgets/TitleWithAssetsWidget.tsx new file mode 100644 index 0000000000..7a8b7e1e8e --- /dev/null +++ b/components/widgets/TitleWithAssetsWidget.tsx @@ -0,0 +1,63 @@ +import { View, ViewStyle, StyleSheet, TouchableOpacity } from "react-native"; +import { GenericActionPayload } from "../../App/common/actions/GenericAction"; +import { StyledImage } from "../StyledImage"; +import { StyledLottie } from "../StyledLottie"; +import { TitleWithAssetsWidgetData } from "../../App/common/interface/widgets/widgetData/TitleWithAssetsWidgetData"; +import { CtaData } from "../../App/common/interface"; +import Colors from "../../assets/colors/colors"; +import { StyledText } from "./styled-text/StyledText"; + +const TitleWithAssetsWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, +}: { + widgetData: TitleWithAssetsWidgetData; + widgetStyle: ViewStyle; + handleActions: (screenActionPayload?: GenericActionPayload) => void; + widgetIndex: number; + handleClick?: (ctaData: CtaData) => void; +}) => { + return ( + { + handleClick && widgetData.cta && handleClick(widgetData.cta); + }} + activeOpacity={1} + > + + {widgetData.leftIcon && ( + + )} + {widgetData.leftLottie && ( + + )} + {widgetData.title && } + {widgetData.rightIcon && ( + + )} + {widgetData.rightLottie && ( + + )} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + borderWidth: 1, + borderColor: Colors.hawkesBlue, + borderRadius: 32, + paddingHorizontal: 16, + paddingVertical: 9, + backgroundColor: Colors.powderBlue, + }, +}); + +export default TitleWithAssetsWidget; diff --git a/components/widgets/fab/FAB.tsx b/components/widgets/fab/FAB.tsx new file mode 100644 index 0000000000..b0e12cdb1c --- /dev/null +++ b/components/widgets/fab/FAB.tsx @@ -0,0 +1,118 @@ +import React, { useEffect, useState } from "react"; + +import { StyledLottie } from "../styled-lottie/StyledLottie"; + +import { NativeEventEmitter, useWindowDimensions } from "react-native"; + +import { + PanGestureHandler, + State, + TapGestureHandler, +} from "react-native-gesture-handler"; + +import Animated, { + clamp, + useAnimatedGestureHandler, + useAnimatedStyle, + useSharedValue, +} from "react-native-reanimated"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { NativeEventNameConstants } from "../../../App/common/constants/EventNameConstants"; +import { CtaData } from "../../../App/common/interface"; +import { FabWidgetData } from "../../../App/common/interface/widgets/widgetData/FabWidgetData"; +import { FAB_HEIGHT, styles } from "./FABStyle"; + +const FAB = ({ + widgetData, + handleActions, + handleClick, +}: { + widgetData: FabWidgetData; + handleActions: ( + value: any | undefined | null, + actionPayloadList: GenericActionPayload | undefined + ) => void; + handleClick?: (cta: CtaData) => void; +}) => { + const [enabled, setEnabled] = useState(true); + const { height } = useWindowDimensions(); + useEffect(() => { + const nativeEventListener = new NativeEventEmitter(); + let reloadPageEventListener = nativeEventListener.addListener( + NativeEventNameConstants.reloadPage, + (event) => { + if (event === true) { + setEnabled(false); + } + } + ); + return () => { + nativeEventListener.removeAllListeners( + NativeEventNameConstants.reloadPage + ); + setEnabled(true); + }; + }, [widgetData]); + + const FAB_STARTING_POSITION = widgetData?.properties?.startingPosition ?? 145; + + const fabPositionY = useSharedValue(-FAB_STARTING_POSITION); + + const _onTapHandlerStateChange = ({ nativeEvent }: { nativeEvent: any }) => { + if ( + handleClick && + widgetData?.callbackCta && + nativeEvent.state === State.ACTIVE + ) { + handleClick(widgetData?.callbackCta); + } + }; + + const _onPanHandlerStateChange = useAnimatedGestureHandler({ + onStart: (_, ctx) => { + ctx.startY = fabPositionY.value; + }, + onActive: (event, ctx: any) => { + const newY = ctx.startY + event.translationY; + const minY = -height + 2 * FAB_HEIGHT; + const maxY = 0; + fabPositionY.value = clamp(newY, minY, maxY); + }, + onEnd: (_) => {}, + }); + + const animatedRootStyles = useAnimatedStyle(() => { + return { + transform: [{ translateY: fabPositionY.value }], + }; + }); + + const isDraggable = widgetData?.properties?.isDraggable ?? true; + + const fabContent = ( + + + + + {widgetData?.lottieData && ( + + )} + + + + + ); + + return isDraggable ? ( + + {fabContent} + + ) : ( + fabContent + ); +}; + +export default FAB; diff --git a/components/widgets/fab/FABStyle.ts b/components/widgets/fab/FABStyle.ts new file mode 100644 index 0000000000..d15bcef555 --- /dev/null +++ b/components/widgets/fab/FABStyle.ts @@ -0,0 +1,28 @@ +import { StyleSheet } from "react-native"; + +export const FAB_WIDTH = 60; +export const FAB_HEIGHT = FAB_WIDTH; +export const FAB_BORDER_RADIUS = FAB_WIDTH / 2; + +export const FAB_MARGIN_BOTTOM = 0; + +export const styles = StyleSheet.create({ + rootStyles: { + borderRadius: FAB_BORDER_RADIUS, + position: "absolute", + bottom: FAB_MARGIN_BOTTOM, + right: 20, + }, + fabButtonStyles: { + alignItems: "center", + justifyContent: "center", + backgroundColor: "#1F002A", + width: FAB_WIDTH, + height: FAB_HEIGHT, + borderRadius: FAB_BORDER_RADIUS, + }, + lottie: { + height: FAB_HEIGHT, + width: "100%", + }, +}); diff --git a/components/widgets/footer-with-card-widget/FooterWithCardWidget.tsx b/components/widgets/footer-with-card-widget/FooterWithCardWidget.tsx new file mode 100644 index 0000000000..9e49363ca7 --- /dev/null +++ b/components/widgets/footer-with-card-widget/FooterWithCardWidget.tsx @@ -0,0 +1,118 @@ +import _ from "lodash"; +import React, { useCallback } from "react"; +import { View, ViewStyle } from "react-native"; +import { + TouchableOpacity, + TouchableWithoutFeedback, +} from "react-native-gesture-handler"; +import { commonStyles } from "../../../App/Container/Navi-Insurance/Styles"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { CtaData } from "../../../App/common/interface"; +import { + ButtonState, + CardInfo, + FooterWithCardWidgetData, +} from "../../../App/common/interface/widgets/widgetData/FooterWithCardWidgetData"; +import { ScreenState } from "../../../App/common/screen/BaseScreen"; +import CtaButton from "../../reusable/cta-button/CtaButton"; +import { StyledText } from "../styled-text/StyledText"; +import TitleWidget from "../title-widget/TitleWidget"; +import styles from "./FooterWithCardWidgetStyle"; + +export const CardComponent = ({ + cardInfo, + style, +}: { + cardInfo: CardInfo | undefined; + style: ViewStyle; +}) => { + return ( + + {cardInfo?.title?.text && } + {cardInfo?.rightTitle?.text && ( + + )} + + ); +}; + +const FooterWithCardWidget = ({ + widgetData, + widgetStyle, + handleActions, + widgetIndex, + handleClick, + screenState, +}: { + widgetData: FooterWithCardWidgetData; + widgetStyle: ViewStyle; + handleActions: ( + value?: any | undefined | null, + screenActionPayload?: GenericActionPayload + ) => void; + widgetIndex: number; + handleClick?: (ctaData: CtaData) => void; + screenState?: ScreenState | null; +}) => { + const handleFooterClick = () => { + handleActions(null, widgetData?.buttonAction); + }; + + const getViewStyle = (): ViewStyle => { + return widgetData.cardInfo?.title?.text + ? styles.rowContainer + : styles.roundedRowContainer; + }; + + const throttledHandleActions = useCallback( + _.throttle(() => handleActions(null, widgetData?.action), 700, { + leading: true, + trailing: false, + }), + [widgetData] + ); + + const buttonState = + screenState === ScreenState.OVERLAY + ? ButtonState.LOADING + : ButtonState.ENABLED; + + return ( + + {widgetData?.cardInfo?.title?.text && + widgetData?.cardInfo?.rightTitle?.text && ( + + + + )} + + + + + + + + + {widgetData?.footerButton?.title && ( + + )} + + + + + ); +}; + +export default FooterWithCardWidget; diff --git a/components/widgets/footer-with-card-widget/FooterWithCardWidgetStyle.ts b/components/widgets/footer-with-card-widget/FooterWithCardWidgetStyle.ts new file mode 100644 index 0000000000..9abf0f6e5d --- /dev/null +++ b/components/widgets/footer-with-card-widget/FooterWithCardWidgetStyle.ts @@ -0,0 +1,52 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + cardContainer: { + backgroundColor: "#E7F8EE", + flexDirection: "row", + justifyContent: "space-between", + paddingVertical: 8, + paddingHorizontal: 16, + borderRadius: 16, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, + shadowColor: "black", + shadowOpacity: 0.26, + shadowOffset: { width: 0, height: 3 }, + shadowRadius: 10, + elevation: 10, + }, + rowContainer: { + backgroundColor: "#FFFFFF", + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 32, + paddingTop: 20, + paddingHorizontal: 16, + }, + roundedRowContainer: { + backgroundColor: "white", + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 32, + paddingTop: 20, + paddingHorizontal: 16, + borderRadius: 16, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, + shadowColor: "black", + shadowOpacity: 0.26, + shadowOffset: { width: 0, height: 3 }, + shadowRadius: 10, + elevation: 10, + }, + titleContainer: { + flexDirection: "column", + justifyContent: "space-between", + alignItems: "flex-start", + paddingTop: 5, + paddingBottom: 2, + }, +}); + +export default styles; diff --git a/components/widgets/grid-with-card-widget/GridWithCardWidget.tsx b/components/widgets/grid-with-card-widget/GridWithCardWidget.tsx new file mode 100644 index 0000000000..470f0b34e2 --- /dev/null +++ b/components/widgets/grid-with-card-widget/GridWithCardWidget.tsx @@ -0,0 +1,105 @@ +import { FlatList, TouchableOpacity, View, ViewStyle } from "react-native"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { CtaData } from "../../../App/common/interface"; +import { + GridCardItemData, + GridWithCardWidgetData, +} from "../../../App/common/interface/widgets/widgetData/GridWithCardWidgetData"; +import { StyledImage } from "../../StyledImage"; +import TitleWidget from "../title-widget/TitleWidget"; +import { StyledText } from "../styled-text/StyledText"; +import styles from "./GridWithCardWidgetStyle"; + +const formatData = ( + data: GridCardItemData[] | undefined, + numColumns: number +): GridCardItemData[] => { + if (!data || data.length === 0 || numColumns <= 0) return []; + + const elementsInLastRow = data.length % numColumns; + + // Ensure numColumns is a positive integer + if (elementsInLastRow === 0 || elementsInLastRow === numColumns) { + return data; + } else { + const fillCount = numColumns - elementsInLastRow; + const fillerData: GridCardItemData = { + id: undefined, + image: undefined, + title: undefined, + cardStyle: undefined, + }; + const filledArray = Array(fillCount).fill(fillerData); + return [...data, ...filledArray]; + } +}; + + +const GridCardItemComponent = ({ + cardItem, + handleClick, +}: { + cardItem: GridCardItemData | undefined; + handleClick?: (cta: CtaData) => void; +}) => { + if (cardItem?.title === undefined) { + return ; + } else { + return ( + { + { + if (handleClick) { + handleClick(cardItem?.cta!!)!!; + } + } + }} + style={[styles.cardItem, cardItem.cardStyle]} + > + {cardItem?.image && ( + + )} + {cardItem?.title && ( + + )} + + ); + } +}; + +const GridWithCardWidget = ({ + widgetData, + widgetStyle, + handleActions, + handleClick, + widgetIndex, +}: { + widgetData: GridWithCardWidgetData; + widgetStyle: ViewStyle; + handleActions: (screenActionPayload?: GenericActionPayload) => void; + handleClick?: (cta: CtaData) => void; + widgetIndex: number; +}) => { + return ( + + + ( + + )} + keyExtractor={(item, index) => item.id || index.toString()} + numColumns={widgetData.numColumns || 3} + /> + + ); +}; + +export default GridWithCardWidget; diff --git a/components/widgets/grid-with-card-widget/GridWithCardWidgetStyle.ts b/components/widgets/grid-with-card-widget/GridWithCardWidgetStyle.ts new file mode 100644 index 0000000000..a5436e8a7b --- /dev/null +++ b/components/widgets/grid-with-card-widget/GridWithCardWidgetStyle.ts @@ -0,0 +1,40 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + gridContainer: { + marginStart: -4, + marginEnd: 8 + }, + cardItem: { + flex: 1, + marginHorizontal: 4, + marginBottom: 8, + backgroundColor: "#FFFFFF", + flexDirection: "column", + justifyContent: "center", + paddingHorizontal: 16, + paddingBottom: 16, + paddingTop: 24, + borderRadius: 4, + borderColor: "#EBEBEB", + borderWidth: 1, + alignItems: "center", + shadowColor: "grey", + shadowOpacity: 1, + shadowRadius: 32, + shadowOffset: { width: 3, height: 3 }, + elevation: 4, + }, + cardItemInvisible: { + elevation: 0, + backgroundColor: "transparent", + borderColor: "transparent", + }, + rowContainer: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 12, + }, +}); + +export default styles; \ No newline at end of file diff --git a/components/widgets/styled-lottie/StyledLottie.tsx b/components/widgets/styled-lottie/StyledLottie.tsx new file mode 100644 index 0000000000..660ea86155 --- /dev/null +++ b/components/widgets/styled-lottie/StyledLottie.tsx @@ -0,0 +1,39 @@ +import LottieView from "lottie-react-native"; +import React, { useEffect, useRef } from "react"; +import { TouchableOpacity } from "react-native"; +import { CtaData } from "../../../App/common/interface"; +import { LottieFieldData } from "../../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import styles from "./StyledLottieComponentStyle"; + + +export const StyledLottie = ({ + lottieFieldData, + handleClick, +}: { + lottieFieldData: LottieFieldData; + handleClick?: (ctaData: CtaData) => void; +}) => { + const animationRef = useRef(null); + + useEffect(() => { + animationRef.current?.play(); + }, []); + + return ( + { + lottieFieldData.cta && handleClick && handleClick(lottieFieldData.cta); + }} + style={styles.touchableOpacity} + activeOpacity={1} + > + + + ); +}; diff --git a/components/widgets/styled-lottie/StyledLottieComponentStyle.ts b/components/widgets/styled-lottie/StyledLottieComponentStyle.ts new file mode 100644 index 0000000000..10ab2fd1dc --- /dev/null +++ b/components/widgets/styled-lottie/StyledLottieComponentStyle.ts @@ -0,0 +1,14 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + lottie: { + flex: 1, + width: "100%", + height: "100%", + }, + touchableOpacity: { + flex: 1, + }, +}); + +export default styles; diff --git a/components/widgets/styled-text/StyledText.tsx b/components/widgets/styled-text/StyledText.tsx new file mode 100644 index 0000000000..5dc7aefb40 --- /dev/null +++ b/components/widgets/styled-text/StyledText.tsx @@ -0,0 +1,84 @@ +import React from "react"; +import { View, Text, StyleSheet, Image } from "react-native"; +import { + ImageFieldData, + LottieFieldData, + SubstringStyle, + TextFieldData, +} from "../../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyledImage } from "../../StyledImage"; +import styles from "./StyledTextComponentStyle"; +import { StyledLottie } from "../styled-lottie/StyledLottie"; +import Animated from "react-native-reanimated"; + +export const StyledText = ({ + textFieldData, +}: { + textFieldData: TextFieldData; +}) => { + let renderedText: string[] = [textFieldData.text]; + + let substringStyleMap: SubstringStyle[] = []; + let textFieldString: string = textFieldData.text || ""; + let topImage: ImageFieldData | undefined = + textFieldData?.textDrawableData?.top; + let bottomImage: ImageFieldData | undefined = + textFieldData?.textDrawableData?.bottom; + let leftImage: ImageFieldData | undefined = + textFieldData?.textDrawableData?.left; + let rightImage: ImageFieldData | undefined = + textFieldData?.textDrawableData?.right; + + let topLottie: LottieFieldData | undefined = + textFieldData?.textDrawableData?.topLottie; + let bottomLottie: LottieFieldData | undefined = + textFieldData?.textDrawableData?.bottomLottie; + let leftLottie: LottieFieldData | undefined = + textFieldData?.textDrawableData?.leftLottie; + let rightLottie: LottieFieldData | undefined = + textFieldData?.textDrawableData?.rightLottie; + + textFieldData.substringStyles?.forEach(({ substring, textStyle }, index) => { + textFieldString = substringStyleMap?.pop()?.substring || textFieldData.text; + const splitArray = textFieldString.split(substring); + const part1: SubstringStyle = { + substring: splitArray[0] || "", + }; + const part2: SubstringStyle = { + substring: substring, + textStyle: textStyle, + }; + const part3: SubstringStyle = { + substring: splitArray[1] || "", + }; + substringStyleMap = [...substringStyleMap, part1, part2, part3]; + }); + return ( + + {topImage && } + {topLottie && } + + {leftImage && } + {leftLottie && } + + {substringStyleMap.length !== 0 + ? substringStyleMap.map((substringStyle, index) => { + return ( + + {substringStyle.substring} + + ); + }) + : textFieldData.text} + + {rightImage && } + {rightLottie && } + + {bottomImage && } + {bottomLottie && } + + ); +}; diff --git a/components/widgets/styled-text/StyledTextComponentStyle.ts b/components/widgets/styled-text/StyledTextComponentStyle.ts new file mode 100644 index 0000000000..9a60073e81 --- /dev/null +++ b/components/widgets/styled-text/StyledTextComponentStyle.ts @@ -0,0 +1,16 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + columnContainer: { + flexDirection: "column", + alignItems: "center", + }, + + rowContainer: { + flexDirection: "row", + alignItems: "center", + justifyContent: "flex-start", + }, +}); + +export default styles; diff --git a/components/widgets/sum-insured-carousel-widget/SumInsuredWidget.tsx b/components/widgets/sum-insured-carousel-widget/SumInsuredWidget.tsx new file mode 100644 index 0000000000..b99d18b9b9 --- /dev/null +++ b/components/widgets/sum-insured-carousel-widget/SumInsuredWidget.tsx @@ -0,0 +1,131 @@ +import _ from "lodash"; +import { useCallback, useEffect, useRef } from "react"; +import { View, ViewStyle, useWindowDimensions } from "react-native"; +import Animated, { + useAnimatedScrollHandler, + useSharedValue, +} from "react-native-reanimated"; +import { AnimatedScrollView } from "react-native-reanimated/lib/typescript/reanimated2/component/ScrollView"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { SumInsuredWidgetData } from "../../../App/common/interface/widgets/widgetData/SumInsuredWidgetData"; +import { getIndexFromOffset } from "../../../App/common/utilities/SizeUtils"; +import CarouselItem from "./component/CarouselItem"; + +const SumInsuredWidget = ({ + widgetData, + handleActions, + widgetIndex, + widgetStyle, +}: { + widgetData: SumInsuredWidgetData; + handleActions: ( + value: any | undefined | null, + actionPayloadList: GenericActionPayload | undefined + ) => void; + widgetIndex: number; + widgetStyle?: ViewStyle; +}) => { + const { width } = useWindowDimensions(); + const SIZE = width * 0.400; + const SPACER_SIZE = (width - SIZE) / 2; + const x = useSharedValue(0); + const isMiddleCard = useSharedValue(false); + const scrollViewRef = useRef(null); + + useEffect(() => { + if (widgetData?.widgetMetaData?.selectedItemIndex === undefined) return; + if (scrollViewRef.current) { + scrollViewRef.current.scrollTo({ + x: SIZE * widgetData?.widgetMetaData?.selectedItemIndex, + animated: true, + }); + } + }, []); + + const onScroll = useAnimatedScrollHandler({ + onScroll: (event) => { + x.value = event.contentOffset.x; + }, + }); + + const handleActionApiCall = (index: number) => { + const actionPayloadList = widgetData?.widgetMetaData?.onCarouselReleaseActionSequence; + + if (!actionPayloadList) { + console.error("Action payload list is not defined."); + return; + } + + // Makes a patch call to update the sumInsured in the backend + const updatedActionPayload: GenericActionPayload = { + ...actionPayloadList, + metaData: actionPayloadList.metaData?.map((actionPayload) => { + return { + ...actionPayload, + data: { + sumInsured: widgetData?.carouselListData?.[index]?.sumInsured, + }, + }; + }), + }; + + handleActions(null, updatedActionPayload); + }; + + // We can use this debounced function to make api calls on scroll + const debouncedHandleActions = useCallback( + _.debounce((index: number) => handleActionApiCall(index), 1000), + [handleActions, handleActionApiCall] + ); + + const onMomentumScrollEnd = (event: any) => { + const index = getIndexFromOffset(event.nativeEvent.contentOffset.x, SIZE); + if (widgetData?.carouselListData) { + handleActions( + widgetData?.carouselListData[index]?.dependentWidgets, + widgetData?.widgetMetaData?.onValueChangeAction + ); + } + }; + + const data = widgetData.carouselListData && [ + { isFirst: true }, + ...widgetData?.carouselListData, + { isLast: true }, + ]; + + return ( + + {data?.map((item, index) => { + if (item?.isFirst || item?.isLast) { + return ; + } + + return ( + + + + ); + })} + + ); +}; + +export default SumInsuredWidget; diff --git a/components/widgets/sum-insured-carousel-widget/SumInsuredWidgetStyles.ts b/components/widgets/sum-insured-carousel-widget/SumInsuredWidgetStyles.ts new file mode 100644 index 0000000000..cc2ed52bc7 --- /dev/null +++ b/components/widgets/sum-insured-carousel-widget/SumInsuredWidgetStyles.ts @@ -0,0 +1,142 @@ +import { StyleSheet } from "react-native"; + +export const selectedStyles = StyleSheet.create({ + cardContainer: { + justifyContent: "center", + alignItems: "center", + borderWidth: 2, + borderColor: "#3C7DFF", + borderRadius: 10, + backgroundColor: "white", + marginTop: 15, + shadowColor: "black", + shadowOpacity: 0.26, + shadowRadius: 10, + elevation: 6 + }, + tagContainer: { + backgroundColor: "#3C7DFF", + borderRadius: 25, + marginTop: -12, + marginBottom: 12, + }, + tagText: { + fontFamily: "tt_medium", + fontSize: 12, + fontWeight: "400", + lineHeight: 18, + textAlign: "center", + color: "white", + paddingHorizontal: 8, + paddingBottom: 2, + }, + title: { + fontFamily: "tt_semi_bold", + fontSize: 16, + color: "#191919", + fontWeight: "600", + lineHeight: 24, + letterSpacing: 0, + textAlign: "center", + paddingTop: 8, + paddingBottom: 24, + }, + subtitleContainer: { + backgroundColor: "#EAF2FF", + width: "100%", + paddingTop: 5, + paddingBottom: 5, + paddingHorizontal: 10, + borderBottomEndRadius: 10, + borderBottomStartRadius: 10, + }, + subtitle: { + fontFamily: "tt_regular", + fontSize: 12, + fontWeight: "400", + lineHeight: 18, + paddingTop: 8, + paddingBottom: 8, + color: "#3C7DFF", + }, + substringStyle: { + fontFamily: "tt_semi_bold", + fontSize: 14, + lineHeight: 22, + fontWeight: "600", + color: "#3C7DFF", + }, +}); + +export const unselectedStyles = StyleSheet.create({ + cardContainer: { + justifyContent: "center", + alignItems: "center", + borderWidth: 1, + borderColor: "#F5F5F5", + borderRadius: 10, + backgroundColor: "white", + marginTop: 12, + shadowColor: "white", + shadowOpacity: 0, + shadowRadius: 0, + elevation: 0, + marginBottom: 10, + + }, + tagContainer: { + backgroundColor: "transparent", + borderRadius: 25, + overflow: "hidden", + marginTop: -12, + marginBottom: 12, + }, + tagText: { + fontFamily: "tt_medium", + fontSize: 12, + fontWeight: "400", + lineHeight: 18, + textAlign: "center", + color: "transparent", + paddingHorizontal: 8, + paddingBottom: 2, + }, + title: { + fontFamily: "tt_medium", + fontSize: 14, + color: "#191919", + fontWeight: "400", + lineHeight: 22, + letterSpacing: 0, + textAlign: "center", + paddingTop: 16, + paddingBottom: 10, + }, + subtitleContainer: { + backgroundColor: "white", + width: "100%", + paddingTop: 0, + paddingBottom: 10, + paddingHorizontal: 10, + borderBottomEndRadius: 10, + borderBottomStartRadius: 10, + }, + subtitle: { + fontFamily: "tt_regular", + fontSize: 12, + fontWeight: "400", + lineHeight: 18, + letterSpacing: 0, + textAlign: "center", + paddingTop: 0, + paddingBottom: 24, + color: "#6B6B6B", + }, + substringStyle: { + fontFamily: "tt_regular", + fontSize: 12, + fontWeight: "400", + lineHeight: 18, + color: "#444444", + }, +}); \ No newline at end of file diff --git a/components/widgets/sum-insured-carousel-widget/component/CarouselItem.tsx b/components/widgets/sum-insured-carousel-widget/component/CarouselItem.tsx new file mode 100644 index 0000000000..c30a272594 --- /dev/null +++ b/components/widgets/sum-insured-carousel-widget/component/CarouselItem.tsx @@ -0,0 +1,113 @@ +import { TextStyle, ViewStyle } from "react-native"; +import Animated, { SharedValue } from "react-native-reanimated"; +import { + SumInsuredData, + SumInsuredWidgetData, +} from "../../../../App/common/interface/widgets/widgetData/SumInsuredWidgetData"; +import { SubstringStyle } from "../../../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyledText } from "../../styled-text/StyledText"; +import getCarouselItemStyles from "./CarouselItemStyles"; + +const CarouselItem = ({ + item, + index, + isMiddleCard, + widgetData, + x, + SIZE, +}: { + item: SumInsuredData; + index: number; + isMiddleCard: SharedValue; + widgetData: SumInsuredWidgetData; + x: any; + SIZE: number; +}) => { + const { + style, + cardContainer, + subtitleStyle, + subtitleContainer, + titleStyle, + tagContainer, + tagText, + substringStyle, + } = getCarouselItemStyles(index, isMiddleCard, widgetData, x, SIZE); + return ( + + + + {item.title?.text} + + + ); +}; + +export default CarouselItem; + +const TagTextComponent = ({ + selectedItemIndex, + recommendItemIndex, + selectedItemTagText, + index, + tagContainer, + tagText, +}: { + selectedItemIndex: number; + recommendItemIndex: number; + selectedItemTagText: string; + index: number; + tagContainer: ViewStyle; + tagText: TextStyle; +}) => { + return ( + + + {recommendItemIndex === index - 1 && selectedItemTagText} + + + ); +}; + +const SubtitleComponent = ({ + item, + subtitleContainer, + subtitleStyle, + substringStyle, +}: { + item: SumInsuredData; + subtitleContainer: ViewStyle; + subtitleStyle: TextStyle; + substringStyle: TextStyle; +}) => { + return ( + + { + return { + substring: sub.substring, + textStyle: substringStyle, + }; + } + ), + }} + /> + + ); +}; diff --git a/components/widgets/sum-insured-carousel-widget/component/CarouselItemStyles.ts b/components/widgets/sum-insured-carousel-widget/component/CarouselItemStyles.ts new file mode 100644 index 0000000000..04b89d672f --- /dev/null +++ b/components/widgets/sum-insured-carousel-widget/component/CarouselItemStyles.ts @@ -0,0 +1,129 @@ +import { interpolate, useAnimatedStyle } from "react-native-reanimated"; +import { SumInsuredWidgetData } from "../../../../App/common/interface/widgets/widgetData/SumInsuredWidgetData"; +import { selectedStyles, unselectedStyles } from "../SumInsuredWidgetStyles"; + +const getCarouselItemStyles = ( + index: number, + isMiddleCard: any, + widgetData: SumInsuredWidgetData, + x: any, + SIZE: number +) => { + const { + selectedStyles: selectedStylesBackend, + unselectedStyles: unselectedStylesBackend, + } = widgetData?.carouselStyles as any; + const style = useAnimatedStyle(() => { + const scale = interpolate( + x.value, + [(index - 2) * SIZE, (index - 1) * SIZE, index * SIZE], + [0.8, 1, 0.8] + ); + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return { + transform: [{ scale }], + borderColor: isMiddleCard.value + ? selectedStyles.cardContainer.borderColor + : unselectedStyles.cardContainer.borderColor, + borderWidth: isMiddleCard.value + ? selectedStyles.cardContainer.borderWidth + : unselectedStyles.cardContainer.borderWidth, + }; + }); + + const cardContainer = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { + ...selectedStyles.cardContainer, + ...selectedStylesBackend?.cardContainer, + } + : { + ...unselectedStyles.cardContainer, + ...unselectedStylesBackend?.cardContainer, + }; + }); + + const tagContainer = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value && + index - 1 === widgetData?.widgetMetaData?.recommendItemIndex + ? { + ...selectedStyles.tagContainer, + ...selectedStylesBackend?.tagContainer, + } + : { + ...unselectedStyles.tagContainer, + ...unselectedStylesBackend?.tagContainer, + }; + }); + + const tagText = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { ...selectedStyles.tagText, ...selectedStylesBackend?.tagText } + : { + ...unselectedStyles.tagText, + ...unselectedStylesBackend?.tagText, + }; + }); + + const titleStyle = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { ...selectedStyles.title, ...selectedStylesBackend?.title } + : { ...unselectedStyles.title, ...unselectedStylesBackend?.title }; + }); + + const subtitleContainer = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { + ...selectedStyles.subtitleContainer, + ...selectedStylesBackend?.subtitleContainer, + } + : { + ...unselectedStyles.subtitleContainer, + ...unselectedStylesBackend?.subtitleContainer, + }; + }); + + const subtitleStyle = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { + ...selectedStyles.subtitle, + ...selectedStylesBackend?.subtitle, + } + : { + ...unselectedStyles.subtitle, + ...unselectedStylesBackend?.subtitle, + }; + }); + + const substringStyle = useAnimatedStyle(() => { + isMiddleCard.value = index - 1 === Math.round(x.value / SIZE); + return isMiddleCard.value + ? { + ...selectedStyles.substringStyle, + ...selectedStylesBackend?.substringStyle, + } + : { + ...unselectedStyles.substringStyle, + ...unselectedStylesBackend?.substringStyle, + }; + }); + + return { + style, + cardContainer, + subtitleStyle, + subtitleContainer, + titleStyle, + tagContainer, + tagText, + substringStyle, + }; +}; + +export default getCarouselItemStyles; diff --git a/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidget.tsx b/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidget.tsx new file mode 100644 index 0000000000..1d337a3970 --- /dev/null +++ b/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidget.tsx @@ -0,0 +1,71 @@ +import _ from "lodash"; +import AnimatedLottieView from "lottie-react-native"; +import { useCallback, useEffect, useMemo, useRef } from "react"; +import { View, ViewStyle } from "react-native"; +import { TouchableWithoutFeedback } from "react-native-gesture-handler"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { CtaData } from "../../../App/common/interface"; +import { TitleSubtitleWithAssetWidgetData } from "../../../App/common/interface/widgets/widgetData/TitleSubtitleWithAssetWidgetData"; +import { StyledImage } from "../../StyledImage"; +import { StyledLottie } from "../styled-lottie/StyledLottie"; +import { StyledText } from "../styled-text/StyledText"; +import styles from "./TitleSubtitleWithAssetWidgetStyle"; + +const TitleSubtitleWithAssetWidget = ({ + widgetData, + widgetStyle, + handleActions, + handleClick, + widgetIndex, +}: { + widgetData: TitleSubtitleWithAssetWidgetData; + widgetStyle: ViewStyle; + handleActions: ( + value?: any | undefined | null, + screenActionPayload?: GenericActionPayload + ) => void; + handleClick?: (cta: CtaData) => void; + widgetIndex: number; + }) => { + const getBackgroundAsset = () => { + return useMemo(() => { + if (widgetData?.backgroundImage?.url) { + return ; + } else if (widgetData?.backgroundLottie?.url) { + return ; + } else { + return ; + } + }, [widgetData?.backgroundImage, widgetData?.backgroundLottie]); + }; + const throttledHandleActions = useCallback( + _.throttle(() => handleActions(null, widgetData?.action), 700, { + leading: true, + trailing: false, + }), + [widgetData] + ); + return ( + + + {getBackgroundAsset()} + + + {widgetData?.title && ( + + )} + {widgetData?.subtitle && ( + + )} + + {widgetData?.image && ( + + )} + + + + ); +}; + +export default TitleSubtitleWithAssetWidget; \ No newline at end of file diff --git a/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidgetStyle.ts b/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidgetStyle.ts new file mode 100644 index 0000000000..155b878418 --- /dev/null +++ b/components/widgets/title-subtitle-with-asset-widget/TitleSubtitleWithAssetWidgetStyle.ts @@ -0,0 +1,25 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + background: { + backgroundColor: "white", + height: 84, + }, + rowContainer: { + margin: 2, + borderRadius: 4, + position: "absolute", + flexDirection: "row", + justifyContent: "space-between", + }, + columnContainer: { + flex: 1, + flexDirection: "column", + justifyContent: "center", + alignItems: "flex-start", + marginVertical: 16, + marginStart: 16, + }, +}); + +export default styles; \ No newline at end of file diff --git a/components/widgets/title-widget/TitleWidget.tsx b/components/widgets/title-widget/TitleWidget.tsx new file mode 100644 index 0000000000..3705f08e59 --- /dev/null +++ b/components/widgets/title-widget/TitleWidget.tsx @@ -0,0 +1,56 @@ +import { View, ViewStyle } from "react-native"; +import { TouchableWithoutFeedback } from "react-native-gesture-handler"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { CtaData } from "../../../App/common/interface"; +import { TitleWidgetData } from "../../../App/common/interface/widgets/widgetData/TitleWidgetData"; +import { StyledText } from "../styled-text/StyledText"; + +const TitleWidget = ({ + widgetData, + widgetStyle, + handleActions, + handleClick, + widgetIndex, +}: { + widgetData: TitleWidgetData; + widgetStyle?: ViewStyle; + handleActions?: (screenActionPayload?: GenericActionPayload) => void; + handleClick?: (cta: CtaData) => void; + widgetIndex?: number; +}) => { + const handleTitleClick = () => { + { + if (handleClick) { + handleClick(widgetData?.title?.cta!!)!!; + } + } + }; + + const handleRightTitleClick = () => { + { + if (handleClick) { + handleClick(widgetData?.rightTitle?.cta!!)!!; + } + } + }; + + return ( + + {widgetData.title && ( + + + + )} + {widgetData.subtitle && ( + + )} + {widgetData.rightTitle && ( + + + + )} + + ); +}; + +export default TitleWidget; diff --git a/components/widgets/title-with-list-widget/TitleWithListWidget.tsx b/components/widgets/title-with-list-widget/TitleWithListWidget.tsx new file mode 100644 index 0000000000..6634d44bc2 --- /dev/null +++ b/components/widgets/title-with-list-widget/TitleWithListWidget.tsx @@ -0,0 +1,57 @@ +import { FlatList, View, ViewStyle } from "react-native"; +import { GenericActionPayload } from "../../../App/common/actions/GenericAction"; +import { CtaData } from "../../../App/common/interface"; +import { + ListItem, + TitleWithListWidgetData, +} from "../../../App/common/interface/widgets/widgetData/TitleWithListWidgetData"; +import TitleWidget from "../title-widget/TitleWidget"; +import styles from "./TitleWithListWidgetStyle"; + +const ListItemComponent = ({ item }: { item: ListItem }) => { + return ( + {}} + widgetIndex={Number(item.id)} + /> + ); +}; + +const TitleWithListWidget = ({ + widgetData, + widgetStyle, + handleActions, + handleClick, + widgetIndex, +}: { + widgetData: TitleWithListWidgetData; + widgetStyle: ViewStyle; + handleActions: (screenActionPayload?: GenericActionPayload) => void; + handleClick?: (cta: CtaData) => void; + widgetIndex: number; +}) => { + return ( + + + + ( + + )} + keyExtractor={(item, index) => item.id || index.toString()} + /> + + + ); +}; + +export default TitleWithListWidget; diff --git a/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts b/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts new file mode 100644 index 0000000000..f6b08fcfe2 --- /dev/null +++ b/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts @@ -0,0 +1,24 @@ +import { StyleSheet } from "react-native"; + +const styles = StyleSheet.create({ + rowContainer: { + flexDirection: "row", + justifyContent: "space-between", + paddingBottom: 12, + }, + listContainer: { + backgroundColor: "white", + paddingHorizontal: 16, + paddingVertical: 14, + borderRadius: 4, + borderWidth: 1, + borderColor: "#EBEBEB", + }, + itemRowContainer: { + flexDirection: "row", + justifyContent: "space-between", + paddingVertical: 10, + }, +}); + +export default styles; \ No newline at end of file diff --git a/index.android.js b/index.android.js new file mode 100644 index 0000000000..c59ffb97f1 --- /dev/null +++ b/index.android.js @@ -0,0 +1,9 @@ +import { AppRegistry } from "react-native"; +import codePush from "react-native-code-push"; +import App from "./App"; + +let codePushOptions = { + installMode: codePush.InstallMode.IMMEDIATE, +}; + +AppRegistry.registerComponent("NaviApp", () => codePush(codePushOptions)(App)); diff --git a/index.ios.js b/index.ios.js new file mode 100644 index 0000000000..c59ffb97f1 --- /dev/null +++ b/index.ios.js @@ -0,0 +1,9 @@ +import { AppRegistry } from "react-native"; +import codePush from "react-native-code-push"; +import App from "./App"; + +let codePushOptions = { + installMode: codePush.InstallMode.IMMEDIATE, +}; + +AppRegistry.registerComponent("NaviApp", () => codePush(codePushOptions)(App)); diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000000..8deac11918 --- /dev/null +++ b/metro.config.js @@ -0,0 +1,19 @@ +const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config"); + +const { + createSentryMetroSerializer +} = require("@sentry/react-native/dist/js/tools/sentryMetroSerializer"); + +/** + * Metro configuration + * https://facebook.github.io/metro/docs/configuration + * + * @type {import('metro-config').MetroConfig} + */ +const config = { + serializer: { + customSerializer: createSentryMetroSerializer() + } +}; + +module.exports = mergeConfig(getDefaultConfig(__dirname), config); \ No newline at end of file diff --git a/network/ApiClient.ts b/network/ApiClient.ts new file mode 100644 index 0000000000..709c62d058 --- /dev/null +++ b/network/ApiClient.ts @@ -0,0 +1,51 @@ +import axios, { AxiosHeaders, AxiosResponse } from "axios"; +import { BASE_URL } from "./NetworkConstant"; +import { NetworkConnectorModule } from "../App/common/native-module/NativeModules"; +import { AxiosRequestConfig } from "axios"; + + +export const getDefaultHeaderData = async () => { + try { + const data = await NetworkConnectorModule.getAllNativeHeaders(); + return data; + } catch (error) { + console.error("Error fetching data:", error); + return null; + } +}; + +export const getXTargetHeaderInfo = (moduleName: string): AxiosRequestConfig => { + return { + headers: { + "X-Target": moduleName + } + } +} + +export const ApiClient = axios.create({ + baseURL: BASE_URL, + timeout: 10000, + headers: { + 'Content-Type': "application/json" + } +}); + +export const handleSuccess = (response: AxiosResponse): T => { + return response.data; +}; + +export const handleError = (error: unknown): never => { + if (axios.isAxiosError(error)) { + if (error.response) { + throw new Error( + `Request failed with status code: ${error.response.status} ` + ); + } else if (error.request) { + throw new Error("No response received from the server"); + } else { + throw new Error("Error setting up the request"); + } + } else { + throw new Error("Unknown error occurred"); + } +}; diff --git a/network/NetworkConstant.ts b/network/NetworkConstant.ts new file mode 100644 index 0000000000..9b8df34fca --- /dev/null +++ b/network/NetworkConstant.ts @@ -0,0 +1,4 @@ +export const BASE_URL = "https://sa.navi.com"; +export const APPLICATION_ID_PATH = "/arc-warden/api/v2/application"; +export const FILL_APPLICATION_PATH = + "/arc-warden/api/v2/application/:applicationId/fill"; diff --git a/network/NetworkService.ts b/network/NetworkService.ts new file mode 100644 index 0000000000..542c794040 --- /dev/null +++ b/network/NetworkService.ts @@ -0,0 +1,76 @@ +import { handleError, handleSuccess, ApiClient, getDefaultHeaderData } from "./ApiClient"; +import { AxiosRequestConfig, InternalAxiosRequestConfig } from "axios"; +import { getDeviceId, getSessionToken } from "./NetworkUtils"; +import { BASE_URL } from "./NetworkConstant"; +import axios from "axios"; +import { getBuildConfigDetails } from "../App/common/utilities/CacheUtils"; + +export const get = async ( + url: string, + config?: AxiosRequestConfig +): Promise => { + try { + let requestConfig: AxiosRequestConfig = config || {} + let baseUrl: string | undefined + await getBuildConfigDetails().then((response) => { + baseUrl = response?.baseUrl + }) + let axiosInstance = axios.create({ + baseURL: baseUrl ? baseUrl : BASE_URL, + timeout: 10000, + headers: requestConfig.headers + }) + const response = await axiosInstance.get(baseUrl + url, requestConfig); + return handleSuccess(response); + } catch (error) { + return handleError(error); + } +}; + +export const post = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + try { + let requestConfig: AxiosRequestConfig = config || {} + let baseUrl: string | undefined + await getBuildConfigDetails().then((response) => { + baseUrl = response?.baseUrl + }) + let axiosInstance = axios.create({ + baseURL: baseUrl ? baseUrl : BASE_URL, + timeout: 10000, + headers: requestConfig.headers + }) + console.log("HeaderDataApiClient:", requestConfig?.headers) + console.log("ApiUrl:", BASE_URL + url) + const response = await axiosInstance.post(baseUrl + url, data, requestConfig); + return handleSuccess(response); + } catch (error) { + return handleError(error); + } +}; + +export const patch = async ( + url: string, + data?: any, + config?: AxiosRequestConfig +): Promise => { + try { + let requestConfig: AxiosRequestConfig = config || {} + let baseUrl: string | undefined + await getBuildConfigDetails().then((response) => { + baseUrl = response?.baseUrl + }) + let axiosInstance = axios.create({ + baseURL: baseUrl ? baseUrl : BASE_URL, + timeout: 10000, + headers: requestConfig.headers + }) + const response = await axiosInstance.patch(baseUrl + url, data, requestConfig); + return handleSuccess(response); + } catch (error) { + return handleError(error); + } +}; diff --git a/network/NetworkUtils.ts b/network/NetworkUtils.ts new file mode 100644 index 0000000000..fc0c664f41 --- /dev/null +++ b/network/NetworkUtils.ts @@ -0,0 +1,11 @@ +import { getStringPreference } from "../App/common/utilities/SharedPreferenceUtils"; + +const getSessionToken = async () => { + return await getStringPreference("SESSION_TOKEN", "string"); +}; + +const getDeviceId = async () => { + return await getStringPreference("DEVICE_ID", "string"); +}; + +export { getSessionToken, getDeviceId }; diff --git a/network/payloads/request/FillApplicationRequest.ts b/network/payloads/request/FillApplicationRequest.ts new file mode 100644 index 0000000000..8ca586a2b1 --- /dev/null +++ b/network/payloads/request/FillApplicationRequest.ts @@ -0,0 +1,24 @@ +interface Field { + key: string; + value: string; +} + +interface ApplicationFields { + fields: Field[]; +} + +interface FillRequest { + applicationFields: ApplicationFields; + applicationType: string; +} + +interface ScreenRequest { + action: string; + isScreenDefinitionRequired: boolean; + sourceScreen: string; +} + +interface AppFormData { + fillRequest: FillRequest; + screenRequest: ScreenRequest; +} diff --git a/network/payloads/request/QuoteOfferRequest.ts b/network/payloads/request/QuoteOfferRequest.ts new file mode 100644 index 0000000000..badafce1b2 --- /dev/null +++ b/network/payloads/request/QuoteOfferRequest.ts @@ -0,0 +1,36 @@ + +interface QuoteOfferRequest { + sumInsured?: string, + term?: Term, + pinCode?: string, + asset?: Asset[], + cover?: Cover[], + quoteId?: string | null, + buyerName?: string, + preQuoteId?: string | null, + policyToBeCopied?: string, + applicationType?: string +} + +interface Term { + unit?: string, + value?: string +} + +interface Asset { + age?: string, + proposerRelationShip?: string, + existingDisease?: boolean, + name?: string, + tagName?: string, + dob?: string, + id?: string, + gender?: string, + assetId?: string +} + +interface Cover { + coverId?: string, + coverVersion?: string, + selectedOption?: string +} \ No newline at end of file diff --git a/network/payloads/response/FillApplicationResponse.ts b/network/payloads/response/FillApplicationResponse.ts new file mode 100644 index 0000000000..14bf8aad0d --- /dev/null +++ b/network/payloads/response/FillApplicationResponse.ts @@ -0,0 +1,33 @@ +interface FillApplicationResponse { + currentScreenCta: CurrentScreenCta; +} + +interface CurrentScreenCta { + cta: Cta; + shouldPoll: boolean; + shouldRender: boolean; + screenMetaData: ScreenMetaData; + screenPollingConfigs: ScreenPollingConfigs; +} + +interface ScreenPollingConfigs { + initialDelay: number; + interval: number; + numOfRetries: number; +} + +interface ScreenMetaData { + screenName: string; + screenType: string; + screenHash: string; +} + +interface Cta { + url: string; + parameters: Parameter[]; +} + +interface Parameter { + key: string; + value: string; +} diff --git a/network/payloads/response/GenericResponse.ts b/network/payloads/response/GenericResponse.ts new file mode 100644 index 0000000000..24d74ff614 --- /dev/null +++ b/network/payloads/response/GenericResponse.ts @@ -0,0 +1,4 @@ +interface ApiResponse { + status: number; + data: T; +} diff --git a/network/repo/BuildConfigDetails.ts b/network/repo/BuildConfigDetails.ts new file mode 100644 index 0000000000..0d9b695922 --- /dev/null +++ b/network/repo/BuildConfigDetails.ts @@ -0,0 +1,7 @@ + +interface BuildConfigDetails { + baseUrl?: string; + appVersionName?: string; + appVersionCode?: string; + flavor: string +} \ No newline at end of file diff --git a/network/repo/GiApplicationRepo.ts b/network/repo/GiApplicationRepo.ts new file mode 100644 index 0000000000..ce26b7428a --- /dev/null +++ b/network/repo/GiApplicationRepo.ts @@ -0,0 +1,39 @@ +import { patch, post } from "../NetworkService"; +import { APPLICATION_ID_PATH, FILL_APPLICATION_PATH } from "../NetworkConstant"; +import { MemberDetailsRootObject } from "../../App/common/interface/MemberDetailsResponse"; + +export const getApplicationId = ( + applicationType: string = "DEMO_11", + applicantType: string = "CUSTOMER" +) => { + const path = APPLICATION_ID_PATH; + const requestBody = JSON.stringify({ + applicantType: applicantType, + applicationType: applicationType, + isScreenCtaRequired: true, + isScreenDefinitionRequired: true, + }); + return post>(path, requestBody); +}; + +export const fillApplication = (applicationId: string, fields: Field[]) => { + const updatedPath = FILL_APPLICATION_PATH.replace( + ":applicationId", + applicationId + ); + + const requestBody: AppFormData = { + fillRequest: { + applicationFields: { + fields: fields, + }, + applicationType: "DEMO_11", + }, + screenRequest: { + action: "NEXT", + isScreenDefinitionRequired: true, + sourceScreen: "home", + }, + }; + return patch>(updatedPath, requestBody); +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..ad806d8ba8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11779 @@ +{ + "name": "NaviApp", + "version": "0.0.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "NaviApp", + "version": "0.0.2", + "dependencies": { + "@babel/core": "^7.23.7", + "@babel/preset-env": "^7.23.7", + "@react-native-async-storage/async-storage": "^1.21.0", + "@react-native-community/slider": "^4.4.3", + "@react-native-masked-view/masked-view": "^0.2.8", + "@react-native/metro-config": "^0.72.9", + "@react-navigation/native": "^6.1.7", + "@react-navigation/stack": "^6.3.17", + "@react-spring/native": "9.5.5", + "@reduxjs/toolkit": "^1.9.5", + "@sentry/react-native": "^5.19.0", + "axios": "^1.4.0", + "lodash": "^4.17.21", + "lottie-react-native": "^5.1.6", + "react": "^18.2.0", + "react-native": "^0.73", + "react-native-code-push": "^8.2.0", + "react-native-gesture-handler": "^2.14.0", + "react-native-linear-gradient": "^2.5.6", + "react-native-modal": "^13.0.1", + "react-native-reanimated": "^3.6.1", + "react-native-safe-area-context": "^4.7.1", + "react-native-screens": "^3.29.0", + "react-native-skeleton-placeholder": "^5.2.4", + "react-native-webp-format": "^1.2.0", + "react-redux": "^8.1.2", + "redux": "^4.2.1", + "redux-persist": "^6.0.0", + "redux-thunk": "^2.4.2" + }, + "devDependencies": { + "@types/jest": "^29.5.3", + "@types/lodash": "^4.14.202", + "@types/react": "^18.2.16", + "@types/react-native": "^0.72.2", + "@types/react-test-renderer": "^18.0.0", + "typescript": "^5.1.6" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", + "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.17.tgz", + "integrity": "sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-default-from": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz", + "integrity": "sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-assign": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.22.5.tgz", + "integrity": "sha512-iDhx9ARkXq4vhZ2CYOSnQXkmxkDgosLi3J8Z17mKz7LyzthtkdVchLD7WZ3aXeCuvJDOW3+1I5TpJmwIbF9MKQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz", + "integrity": "sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz", + "integrity": "sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.6.3.tgz", + "integrity": "sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", + "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz", + "integrity": "sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag==", + "license": "MIT", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.60 <1.0" + } + }, + "node_modules/@react-native-community/cli": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.0.tgz", + "integrity": "sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-clean": "12.3.0", + "@react-native-community/cli-config": "12.3.0", + "@react-native-community/cli-debugger-ui": "12.3.0", + "@react-native-community/cli-doctor": "12.3.0", + "@react-native-community/cli-hermes": "12.3.0", + "@react-native-community/cli-plugin-metro": "12.3.0", + "@react-native-community/cli-server-api": "12.3.0", + "@react-native-community/cli-tools": "12.3.0", + "@react-native-community/cli-types": "12.3.0", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz", + "integrity": "sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "execa": "^5.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.0.tgz", + "integrity": "sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz", + "integrity": "sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ==", + "license": "MIT", + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz", + "integrity": "sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-config": "12.3.0", + "@react-native-community/cli-platform-android": "12.3.0", + "@react-native-community/cli-platform-ios": "12.3.0", + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@react-native-community/cli-hermes": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz", + "integrity": "sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-platform-android": "12.3.0", + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz", + "integrity": "sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.2.4", + "glob": "^7.1.3", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz", + "integrity": "sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "12.3.0", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz", + "integrity": "sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz", + "integrity": "sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-debugger-ui": "12.3.0", + "@react-native-community/cli-tools": "12.3.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz", + "integrity": "sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q==", + "license": "MIT", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli-tools/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@react-native-community/cli-types": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.0.tgz", + "integrity": "sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw==", + "license": "MIT", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native-community/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@react-native-community/slider": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@react-native-community/slider/-/slider-4.4.3.tgz", + "integrity": "sha512-WdjvGtqJfqcCiLwtbzie53Z/H6w6dIfRHhlW832D89ySAdE5DxLAsqRhDOG0eacuAxxEB+T9sGCkVMD0fa3aBg==", + "license": "MIT" + }, + "node_modules/@react-native-masked-view/masked-view": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@react-native-masked-view/masked-view/-/masked-view-0.2.9.tgz", + "integrity": "sha512-Hs4vKBKj+15VxHZHFtMaFWSBxXoOE5Ea8saoigWhahp8Mepssm0ezU+2pTl7DK9z8Y9s5uOl/aPb4QmBZ3R3Zw==", + "peerDependencies": { + "react": ">=16", + "react-native": ">=0.57" + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz", + "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz", + "integrity": "sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw==", + "license": "MIT", + "dependencies": { + "@react-native/codegen": "0.73.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.73.19", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.19.tgz", + "integrity": "sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.2", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/babel-preset/node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz", + "integrity": "sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.73.12", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz", + "integrity": "sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw==", + "license": "MIT", + "dependencies": { + "@react-native-community/cli-server-api": "12.3.0", + "@react-native-community/cli-tools": "12.3.0", + "@react-native/dev-middleware": "0.73.7", + "@react-native/metro-babel-transformer": "0.73.13", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/hermes-estree": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz", + "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==", + "license": "MIT" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/hermes-parser": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz", + "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.18.2" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.4.tgz", + "integrity": "sha512-fBhZKU1z44KdhS6sH6Sk97595A66EOniH+jI9OjKDu6piH1SIEqQgdWAuWfJJMzgBHcJceRRvJY1zzsOT/Zx0g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.18.2", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.4", + "metro-cache": "0.80.4", + "metro-cache-key": "0.80.4", + "metro-config": "0.80.4", + "metro-core": "0.80.4", + "metro-file-map": "0.80.4", + "metro-minify-terser": "0.80.4", + "metro-resolver": "0.80.4", + "metro-runtime": "0.80.4", + "metro-source-map": "0.80.4", + "metro-symbolicate": "0.80.4", + "metro-transform-plugins": "0.80.4", + "metro-transform-worker": "0.80.4", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-babel-transformer": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.4.tgz", + "integrity": "sha512-QP1kjYLap4O3w9tA4bYO8iyuNpR65If5Z97Ku37O4CwQPAwQaTmg67g4OdABS4BVK10fsxdExKp+fC37XirPow==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.18.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.4.tgz", + "integrity": "sha512-Dj+GoYt4PvsnnE4GdXhqV9PxEF7GPilY5NPeoTgptWZLlaDuTT2+cJQoDOOit1SfRjnF0zqABtVvB6GGBWdtaQ==", + "license": "MIT", + "dependencies": { + "metro-core": "0.80.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache-key": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.4.tgz", + "integrity": "sha512-okOOSRFou7Mxaaigoi+KxdFIU/ZJtvDCC6l8BYKsdMx86JDlVdvtIgFU4tFrY1yEkv0wnn7WH0X3xSz4mHKwoQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-config": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.4.tgz", + "integrity": "sha512-X3/3tleFYB4SdoxXg8uJ+qc8eITKiLnXs3Ev6pihM4jIM5JD89riwUsSLKVsovfZs8ETqKtjevzfe6jQ2O5NtQ==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.6.3", + "metro": "0.80.4", + "metro-cache": "0.80.4", + "metro-core": "0.80.4", + "metro-runtime": "0.80.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-core": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.4.tgz", + "integrity": "sha512-HRb+zydAhI7QyLpK4D6ARZsKjaBwEn+kCrJEjnVFij8wjJxIIHVilgNCETgg9NWvKJFUoZZCG7ewHkxQ9Qpd8Q==", + "license": "MIT", + "dependencies": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-file-map": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.4.tgz", + "integrity": "sha512-EvBC31JI5vsyebeQ8PWpGENuAWy2Ka7sLqEW7OInW+aLVWmBq02h0BNl33xRgAMz0gwvMf2nKie82hmefYF6ew==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-minify-terser": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.4.tgz", + "integrity": "sha512-cuxfRZWDWGKjh+Z6t4KJkrvmV4JUKXfvQuAX7Pa7U0Mf1YJdLtoGQ5iVOu/6MkfYGXbppqGk2qmFECrRGRh0cA==", + "license": "MIT", + "dependencies": { + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-resolver": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.4.tgz", + "integrity": "sha512-PCiVWN+d3gtWlobf8jPypwKx9T1QrZmhLJAyqIWLoOsZbpSfj1dn5h0ajCr8rYi9LNzIHm58GGYJK8VFHNn8Cw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-runtime": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.4.tgz", + "integrity": "sha512-CWIvf0zmL4jKHSj81zjUAbEwjTqFQmETI0NIQvN4JNwTSHiz50WPOuHnUUcmwM6Dye/ta6KNTELnERp0tKEYYg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-source-map": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.4.tgz", + "integrity": "sha512-x+0By55ml6IcGqY9x9HE0hyU0S+uDssrTQ0bPvuydG+iKCX85DzGnlT8k0Vs+EYgZl3KMWcvQ9TpGHW4LRL4GQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.4", + "nullthrows": "^1.1.1", + "ob1": "0.80.4", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-symbolicate": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.4.tgz", + "integrity": "sha512-UmtH96G5TrcAgbIqdE4xA8MBS9fbZW9Pln+n7eJ0tQ0Fw0M/jzdpiZzhx3bIB2zzqbdm6Nv/kB1+aEo0WvXdyg==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.80.4", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-plugins": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.4.tgz", + "integrity": "sha512-cvmTLBA9ET64h+tgHt6prHlvOq98zBA1Glc9+wLZihPJo+Qmu9i3nQ1g4O+4aUnHivDlp+4C00BMNC+aC/buRQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-worker": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.4.tgz", + "integrity": "sha512-hLCrlxXyyaV64XQNSiyY/0jMVvGXrgXMkpJ4KwH2t4clxbxyt6TBW+4TqmgAeU9WGclY0OuQ0HzfvIZiONcUOw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "metro": "0.80.4", + "metro-babel-transformer": "0.80.4", + "metro-cache": "0.80.4", + "metro-cache-key": "0.80.4", + "metro-source-map": "0.80.4", + "metro-transform-plugins": "0.80.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ob1": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.4.tgz", + "integrity": "sha512-Lku8OBpq+fhF1ZdKUjbPnTNeqG+3OL0psGAEVJ8zcUiCB5/DPGR/rm3kLcjKDylzC9Rfv540/7I08+oImzfrhw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz", + "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.73.7", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz", + "integrity": "sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.73.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^1.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "open": "^7.0.3", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz", + "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.72.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz", + "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==", + "license": "MIT" + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.73.13", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz", + "integrity": "sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.19", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz", + "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==", + "license": "MIT" + }, + "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz", + "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.15.0" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.72.11", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz", + "integrity": "sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==", + "license": "MIT", + "dependencies": { + "@react-native/js-polyfills": "^0.72.1", + "metro-config": "0.76.8", + "metro-react-native-babel-transformer": "0.76.8", + "metro-runtime": "0.76.8" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz", + "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==", + "license": "MIT" + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", + "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/@react-navigation/core": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.9.tgz", + "integrity": "sha512-G9GH7bP9x0qqupxZnkSftnkn4JoXancElTvFc8FVGfEvxnxP+gBo3wqcknyBi7M5Vad4qecsYjCOa9wqsftv9g==", + "license": "MIT", + "dependencies": { + "@react-navigation/routers": "^6.1.9", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.1.5" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/elements": { + "version": "1.3.18", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.18.tgz", + "integrity": "sha512-/0hwnJkrr415yP0Hf4PjUKgGyfshrvNUKFXN85Mrt1gY49hy9IwxZgrrxlh0THXkPeq8q4VWw44eHDfAcQf20Q==", + "license": "MIT", + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.7.tgz", + "integrity": "sha512-W6E3+AtTombMucCRo6q7vPmluq8hSjS+IxfazJ/SokOe7ChJX7eLvvralIsJkjFj3iWV1KgOSnHxa6hdiFasBw==", + "license": "MIT", + "dependencies": { + "@react-navigation/core": "^6.4.9", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-navigation/routers": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.9.tgz", + "integrity": "sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==", + "license": "MIT", + "dependencies": { + "nanoid": "^3.1.23" + } + }, + "node_modules/@react-navigation/stack": { + "version": "6.3.17", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.17.tgz", + "integrity": "sha512-8/8ZvJROK3fp6PRmQ9MrXd9epBowA8NkfCaWW/N9H5arqwNX9lTXAkmcjicRhjpX+UNlMBR9dTLkWvPRe2vY9A==", + "license": "MIT", + "dependencies": { + "@react-navigation/elements": "^1.3.18", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-spring/animated": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.5.5.tgz", + "integrity": "sha512-glzViz7syQ3CE6BQOwAyr75cgh0qsihm5lkaf24I0DfU63cMm/3+br299UEYkuaHNmfDfM414uktiPlZCNJbQA==", + "license": "MIT", + "dependencies": { + "@react-spring/shared": "~9.5.5", + "@react-spring/types": "~9.5.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.5.5.tgz", + "integrity": "sha512-shaJYb3iX18Au6gkk8ahaF0qx0LpS0Yd+ajb4asBaAQf6WPGuEdJsbsNSgei1/O13JyEATsJl20lkjeslJPMYA==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.5.5", + "@react-spring/rafz": "~9.5.5", + "@react-spring/shared": "~9.5.5", + "@react-spring/types": "~9.5.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/native": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.5.5.tgz", + "integrity": "sha512-kauqmyJ8u7aVy2bBs22vl1SdB2i5uYIL4rP53k1KDWrFSqJh4j3efWkbTt9uzR5cMXuNVbkNo9OYVFUcQBz50A==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.5.5", + "@react-spring/core": "~9.5.5", + "@react-spring/shared": "~9.5.5", + "@react-spring/types": "~9.5.5" + }, + "peerDependencies": { + "react": "^16.8.0 || >=17.0.0 || >=18.0.0", + "react-native": ">=0.58" + } + }, + "node_modules/@react-spring/rafz": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.5.5.tgz", + "integrity": "sha512-F/CLwB0d10jL6My5vgzRQxCNY2RNyDJZedRBK7FsngdCmzoq3V4OqqNc/9voJb9qRC2wd55oGXUeXv2eIaFmsw==", + "license": "MIT" + }, + "node_modules/@react-spring/shared": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.5.5.tgz", + "integrity": "sha512-YwW70Pa/YXPOwTutExHZmMQSHcNC90kJOnNR4G4mCDNV99hE98jWkIPDOsgqbYx3amIglcFPiYKMaQuGdr8dyQ==", + "license": "MIT", + "dependencies": { + "@react-spring/rafz": "~9.5.5", + "@react-spring/types": "~9.5.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/types": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.5.5.tgz", + "integrity": "sha512-7I/qY8H7Enwasxr4jU6WmtNK+RZ4Z/XvSlDvjXFVe7ii1x0MoSlkw6pD7xuac8qrHQRm9BTcbZNyeeKApYsvCg==", + "license": "MIT" + }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", + "license": "MIT", + "dependencies": { + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@sentry-internal/feedback": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz", + "integrity": "sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw==", + "dependencies": { + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz", + "integrity": "sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g==", + "dependencies": { + "@sentry/core": "7.100.1", + "@sentry/replay": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz", + "integrity": "sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg==", + "dependencies": { + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz", + "integrity": "sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA==", + "dependencies": { + "@sentry-internal/feedback": "7.100.1", + "@sentry-internal/replay-canvas": "7.100.1", + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/replay": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/cli": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.30.0.tgz", + "integrity": "sha512-GTO5e98vy2QwEYQvhE/ZtGUiVrUu4XungLioJbazm+ZOen8cyac8YOapZfozN5mtxjWOWMOwhOqoTeCU3Q8YKQ==", + "hasInstallScript": true, + "dependencies": { + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + }, + "bin": { + "sentry-cli": "bin/sentry-cli" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@sentry/cli-darwin": "2.30.0", + "@sentry/cli-linux-arm": "2.30.0", + "@sentry/cli-linux-arm64": "2.30.0", + "@sentry/cli-linux-i686": "2.30.0", + "@sentry/cli-linux-x64": "2.30.0", + "@sentry/cli-win32-i686": "2.30.0", + "@sentry/cli-win32-x64": "2.30.0" + } + }, + "node_modules/@sentry/cli-darwin": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.30.0.tgz", + "integrity": "sha512-JVesQ9PznbHBOOOwuej2X8/onfXdmAEjBH6fTyWxBl6K8mB4KmBX/aHunXWMBX+VR9X32XZghIqj7acwaFUMPA==", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.30.0.tgz", + "integrity": "sha512-MDB3iS31WKg4krCcLo520yxbUERPeA2DCtk9Qs9vSDbQl6Er64dteHllOdx1SDOyX/7GKcxrQEQ6SMmbnOo6wg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.30.0.tgz", + "integrity": "sha512-JNXPkkMubKoZVlcFIoClSmTb9C/I6Bz08DuAZm2jnjRaaOMiCBxI/l50H3dmfVZ6apjEguG9JkjFdb0kqKB90w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-i686": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.30.0.tgz", + "integrity": "sha512-WhVVziFQw/fO0Cc53pY8goPAzJtIs6ORTR89fVbKwa3ZDNkX++mEOECbP7RkmD87kuRxyKzN543RPV971PcAHw==", + "cpu": [ + "x86", + "ia32" + ], + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.30.0.tgz", + "integrity": "sha512-QkiVDeSfspotZ0Au5Yauv2DAm/BC1fL9BwPek/WwddM18I2HqnDp6l4TA4bQeEY++o0KEuNF53cPahpepltPjw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.30.0.tgz", + "integrity": "sha512-xLY9B1EEGuNYPKpK6M9PMmcu2PzofdvRtbraTcU6Ck2zALS5oXB9kmWc4dDKucZ/uu9JB0m+Lo4ebaNlca45qQ==", + "cpu": [ + "x86", + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.30.0.tgz", + "integrity": "sha512-CiXuxnpJI0zho0XE5PVqIS9CwjDEYoMnHQRIr4Jj9OzlGTJ2iSSU6Zp3Ykd7lgo2iK4P6MfxIBm30gFQPnSvVA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@sentry/cli/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sentry/core": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz", + "integrity": "sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q==", + "dependencies": { + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/hub": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.100.1.tgz", + "integrity": "sha512-zdt7f1k+5JE5FAunzBZUEFbvK5YP/LekLMeogTonaRObB07J6fJ9FD4mtNk7pV0utrTDwR+n942qmp+LbWauWA==", + "dependencies": { + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.100.1.tgz", + "integrity": "sha512-RUyZHcsN3Plc8G4hJN3BCMdbwS8ljUY3E3iLjzucA4HroBsGk5AMc6n7Pp/QqFIRgxrPjKEgA52Wgy5Nq6dSvw==", + "dependencies": { + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", + "localforage": "^1.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/react": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.100.1.tgz", + "integrity": "sha512-EdrBtrXVLK2LSx4Rvz/nQP7HZUZQmr+t3GHV8436RAhF6vs5mntACVMBoQJRWiUvtZ1iRo3rIsIdah7DLiFPgQ==", + "dependencies": { + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", + "hoist-non-react-statics": "^3.3.2" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": "15.x || 16.x || 17.x || 18.x" + } + }, + "node_modules/@sentry/react-native": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-5.20.0.tgz", + "integrity": "sha512-1jWqQFRvQeFgYrEXfvr0TTG/kXIGV2KgtkNqlInTTuXFXo6qInFhuu4Ak4zNuitFlfr6Soh2ASlJrpkBKf2pAg==", + "dependencies": { + "@sentry/browser": "7.100.1", + "@sentry/cli": "2.30.0", + "@sentry/core": "7.100.1", + "@sentry/hub": "7.100.1", + "@sentry/integrations": "7.100.1", + "@sentry/react": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "bin": { + "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" + }, + "peerDependencies": { + "expo": ">=49.0.0", + "react": ">=17.0.0", + "react-native": ">=0.65.0" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/@sentry/replay": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz", + "integrity": "sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w==", + "dependencies": { + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/types": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz", + "integrity": "sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.100.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz", + "integrity": "sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A==", + "dependencies": { + "@sentry/types": "7.100.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" + }, + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "license": "MIT" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-native": { + "version": "0.72.2", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.2.tgz", + "integrity": "sha512-/eEjr04Zqo7mTMszuSdrLx90+j5nWhDMMOgtnKZfAYyV3RwmlpSb7F17ilmMMxZWJY81n/JZ4e6wdhMJFpjrCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native/virtualized-lists": "^0.72.4", + "@types/react": "*" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.1.tgz", + "integrity": "sha512-LjEF+jTUCjzd+Qq4eWqsmZvEWPA/l4L0my+YWN5US8Fo3wZOMiyrpBshHDFbkO8usjdO1B430mEWNU/i1MF7Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "license": "MIT" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "license": "MIT", + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appcenter-file-upload-client": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/appcenter-file-upload-client/-/appcenter-file-upload-client-0.1.0.tgz", + "integrity": "sha512-W8lueBBvLuItND2vmvfdIDTbIYHOHXr5ohObhqvBNL3XCOGTqQq1rhWUxBX5Mb5geLBuLDC0HQOtq9pcBgi71w==", + "license": "MIT", + "dependencies": { + "detect-node": "^2.0.4", + "superagent": "5.1.0", + "url-parse": "^1.4.7" + } + }, + "node_modules/appcenter-file-upload-client/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/appcenter-file-upload-client/node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "license": "MIT", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/appcenter-file-upload-client/node_modules/superagent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.1.0.tgz", + "integrity": "sha512-7V6JVx5N+eTL1MMqRBX0v0bG04UjrjAvvZJTF/VDH/SH2GjSLqlrcYepFlpTrXpm37aSY6h3GGVWGxXl/98TKA==", + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.6", + "form-data": "^2.3.3", + "formidable": "^1.2.1", + "methods": "^1.1.2", + "mime": "^2.4.4", + "qs": "^6.7.0", + "readable-stream": "^3.4.0", + "semver": "^6.1.1" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "license": "MIT" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "license": "MIT" + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "license": "MIT", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/code-push": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/code-push/-/code-push-4.2.0.tgz", + "integrity": "sha512-5z+IhqNllGr1AOV2a53gwLawPCfwvLHSBfejU+QBo0w+1Rh8XS/nfGlyf8YDPdslWrtTleBA6Au8npvF9FyJYA==", + "license": "MIT", + "dependencies": { + "appcenter-file-upload-client": "0.1.0", + "proxy-agent": "^6.3.0", + "recursive-fs": "^2.1.0", + "slash": "^3.0.0", + "superagent": "^8.0.0", + "yazl": "^2.5.1" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", + "integrity": "sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecated-react-native-prop-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz", + "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==", + "license": "MIT", + "dependencies": { + "@react-native/normalize-colors": "^0.73.0", + "invariant": "^2.2.4", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.637", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.637.tgz", + "integrity": "sha512-G7j3UCOukFtxVO1vWrPQUoDk3kL70mtvjc/DC/k2o7lE0wAdq+Vwp1ipagOow+BH0uVztFysLWbkM/RTIrbK3w==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/envinfo": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expect": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.3.tgz", + "integrity": "sha512-coV/D1MhrShMvU6D0I+VAK3umz6hUaxxhL0yp/9RjfiYUfAv14rDhGQL+PLForhMdr0wq3PiV07WtkkNjJjNHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", + "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", + "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.12.0" + } + }, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "license": "MIT", + "dependencies": { + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "license": "MIT" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-diff": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", + "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.11.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.1.tgz", + "integrity": "sha512-671acnrx+w96PCcQOzvm0VYQVwNL2PVgZmDRaFuSsx8sIUmGzYElPw5lU8F3Cr0jOuPs1oM56p7W2a1cdDOwcw==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.4", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", + "license": "BSD-2-Clause" + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "license": "0BSD" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/jscodeshift/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "license": "MIT", + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lottie-ios": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lottie-ios/-/lottie-ios-3.5.0.tgz", + "integrity": "sha512-DM6BYLhHTzvUsK89AjY+K9RwVGkOBwbH/iytjyZUmFbXz8DVsoPEyy+c7L5NZmVouZHvLnOQp6NaYTkwMo+iOg==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/lottie-react-native": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-5.1.6.tgz", + "integrity": "sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg==", + "license": "Apache-2.0", + "dependencies": { + "invariant": "^2.2.2", + "react-native-safe-modules": "^1.0.3" + }, + "peerDependencies": { + "lottie-ios": "^3.4.0", + "react": "*", + "react-native": ">=0.46", + "react-native-windows": ">=0.63.x" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "license": "Apache-2.0" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz", + "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "async": "^3.2.2", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.12.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^27.2.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.76.8", + "metro-cache": "0.76.8", + "metro-cache-key": "0.76.8", + "metro-config": "0.76.8", + "metro-core": "0.76.8", + "metro-file-map": "0.76.8", + "metro-inspector-proxy": "0.76.8", + "metro-minify-terser": "0.76.8", + "metro-minify-uglify": "0.76.8", + "metro-react-native-babel-preset": "0.76.8", + "metro-resolver": "0.76.8", + "metro-runtime": "0.76.8", + "metro-source-map": "0.76.8", + "metro-symbolicate": "0.76.8", + "metro-transform-plugins": "0.76.8", + "metro-transform-worker": "0.76.8", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz", + "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.12.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-cache": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz", + "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==", + "license": "MIT", + "dependencies": { + "metro-core": "0.76.8", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-cache-key": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz", + "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-config": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz", + "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.2.1", + "metro": "0.76.8", + "metro-cache": "0.76.8", + "metro-core": "0.76.8", + "metro-runtime": "0.76.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-core": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz", + "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==", + "license": "MIT", + "dependencies": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.76.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-file-map": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz", + "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/metro-file-map/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/metro-file-map/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-file-map/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/metro-file-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-file-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-file-map/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/metro-file-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz", + "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro-inspector-proxy": "src/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-inspector-proxy/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-inspector-proxy/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/metro-minify-terser": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz", + "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==", + "license": "MIT", + "dependencies": { + "terser": "^5.15.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-minify-uglify": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz", + "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==", + "license": "MIT", + "dependencies": { + "uglify-es": "^3.1.9" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-react-native-babel-preset": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", + "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-transformer": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz", + "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.12.0", + "metro-react-native-babel-preset": "0.76.8", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-resolver": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz", + "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-runtime": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", + "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-source-map": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", + "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.76.8", + "nullthrows": "^1.1.1", + "ob1": "0.76.8", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", + "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.76.8", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz", + "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz", + "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.76.8", + "metro-babel-transformer": "0.76.8", + "metro-cache": "0.76.8", + "metro-cache-key": "0.76.8", + "metro-source-map": "0.76.8", + "metro-transform-plugins": "0.76.8", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "license": "MIT" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "license": "MIT" + }, + "node_modules/ob1": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz", + "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "license": "MIT" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-devtools-core": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.0.tgz", + "integrity": "sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==", + "license": "MIT", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-freeze": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz", + "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-native": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.2.tgz", + "integrity": "sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw==", + "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "12.3.0", + "@react-native-community/cli-platform-android": "12.3.0", + "@react-native-community/cli-platform-ios": "12.3.0", + "@react-native/assets-registry": "0.73.1", + "@react-native/codegen": "0.73.2", + "@react-native/community-cli-plugin": "0.73.12", + "@react-native/gradle-plugin": "0.73.4", + "@react-native/js-polyfills": "0.73.1", + "@react-native/normalize-colors": "0.73.2", + "@react-native/virtualized-lists": "0.73.4", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "deprecated-react-native-prop-types": "^5.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^4.27.7", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "18.2.0" + } + }, + "node_modules/react-native-animatable": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz", + "integrity": "sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + } + }, + "node_modules/react-native-code-push": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/react-native-code-push/-/react-native-code-push-8.2.1.tgz", + "integrity": "sha512-YCNDRTcVoK7pBMmm/CqOr+J3Pb7HjjHsWoke/xizv7Xx1NTN90k6jDykzAItiBMxJ0bc+zdFP1qNsZRT1NKHOg==", + "dependencies": { + "code-push": "^4.2.0", + "glob": "^7.1.7", + "hoist-non-react-statics": "^3.3.2", + "inquirer": "^8.1.5", + "plist": "^3.0.4", + "semver": "^7.3.5", + "xcode": "3.0.1" + } + }, + "node_modules/react-native-code-push/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-code-push/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-code-push/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/react-native-gesture-handler": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.15.0.tgz", + "integrity": "sha512-cmMGW8k86o/xgVTBZZOPohvR5re4Vh65PUxH4HbBBJAYTog4aN4wTVTUlnoky01HuSN8/X4h3tI/K3XLPoDnsg==", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-linear-gradient": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.8.3.tgz", + "integrity": "sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-modal": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-13.0.1.tgz", + "integrity": "sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.6.2", + "react-native-animatable": "1.3.3" + }, + "peerDependencies": { + "react": "*", + "react-native": ">=0.65.0" + } + }, + "node_modules/react-native-reanimated": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.6.1.tgz", + "integrity": "sha512-F4vG9Yf9PKmE3GaWtVGUpzj3SM6YY2cx1yRHCwiMd1uY7W0gU017LfcVUorboJnj0y5QZqEriEK1Usq2Y8YZqg==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-object-assign": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "convert-source-map": "^2.0.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0-0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0-0", + "@babel/plugin-transform-arrow-functions": "^7.0.0-0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", + "@babel/plugin-transform-template-literals": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.7.2.tgz", + "integrity": "sha512-5fy/hRNJ7bI/U2SliOeKf0D80J4lXPc1NsRiNS7Xaz8YTnqlzWib1ViItkwKPfufe54YKzVBMmM32RpdzvO2gg==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-safe-modules": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz", + "integrity": "sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==", + "license": "MIT", + "dependencies": { + "dedent": "^0.6.0" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.29.0.tgz", + "integrity": "sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-skeleton-placeholder": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/react-native-skeleton-placeholder/-/react-native-skeleton-placeholder-5.2.4.tgz", + "integrity": "sha512-OZntVq1hU1UX33FltxK2ezT2v9vHIhV8YnEbnMWUCvxT0N9OsgD1qxiHm6qb9YRJVgq2o5z3S7dNPsPnDF/jNg==", + "peerDependencies": { + "@react-native-masked-view/masked-view": "^0.2.8", + "react": ">=0.14.8", + "react-native": ">=0.50.1", + "react-native-linear-gradient": "^2.5.6" + } + }, + "node_modules/react-native-webp-format": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-native-webp-format/-/react-native-webp-format-1.2.0.tgz", + "integrity": "sha512-tUL/AbM6QwUsxsGutJ1bN4RW8JdD2w5Mpj+An4DvYKkm0bKHbODj7U7gI1+8X68GqJWOy+Ps2cbVmgNpSDfRPQ==" + }, + "node_modules/react-native/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/react-native/node_modules/@react-native/js-polyfills": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz", + "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/@react-native/virtualized-lists": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz", + "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/react-native/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-native/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-native/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/react-native/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/metro-runtime": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.4.tgz", + "integrity": "sha512-CWIvf0zmL4jKHSj81zjUAbEwjTqFQmETI0NIQvN4JNwTSHiz50WPOuHnUUcmwM6Dye/ta6KNTELnERp0tKEYYg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/metro-source-map": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.4.tgz", + "integrity": "sha512-x+0By55ml6IcGqY9x9HE0hyU0S+uDssrTQ0bPvuydG+iKCX85DzGnlT8k0Vs+EYgZl3KMWcvQ9TpGHW4LRL4GQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.4", + "nullthrows": "^1.1.1", + "ob1": "0.80.4", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/metro-symbolicate": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.4.tgz", + "integrity": "sha512-UmtH96G5TrcAgbIqdE4xA8MBS9fbZW9Pln+n7eJ0tQ0Fw0M/jzdpiZzhx3bIB2zzqbdm6Nv/kB1+aEo0WvXdyg==", + "license": "MIT", + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.80.4", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/ob1": { + "version": "0.80.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.4.tgz", + "integrity": "sha512-Lku8OBpq+fhF1ZdKUjbPnTNeqG+3OL0psGAEVJ8zcUiCB5/DPGR/rm3kLcjKDylzC9Rfv540/7I08+oImzfrhw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/react-native/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/react-native/node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/react-native/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/react-redux": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", + "integrity": "sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "license": "BSD" + }, + "node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "license": "MIT", + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/recursive-fs/-/recursive-fs-2.1.0.tgz", + "integrity": "sha512-oed3YruYsD52Mi16s/07eYblQOLi5dTtxpIJNdfCEJ7S5v8dDgVcycar0pRWf4IBuPMIkoctC8RTqGJzIKMNAQ==", + "license": "MIT", + "bin": { + "recursive-copy": "bin/recursive-copy", + "recursive-delete": "bin/recursive-delete" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "license": "MIT", + "peerDependencies": { + "redux": ">4.0.0" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "license": "MIT", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT" + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "license": "MIT" + }, + "node_modules/superagent": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/superagent/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "license": "MIT", + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terser": { + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "license": "MIT" + }, + "node_modules/uglify-es/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.6.tgz", + "integrity": "sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "license": "MIT" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..fa5bfbcfbc --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "NaviApp", + "version": "0.0.2", + "private": true, + "scripts": { + "start": "yarn react-native start" + }, + "dependencies": { + "@babel/core": "^7.23.7", + "@babel/preset-env": "^7.23.7", + "@react-native-async-storage/async-storage": "^1.21.0", + "@react-native-community/slider": "^4.4.3", + "@react-native-masked-view/masked-view": "^0.2.8", + "@react-native/metro-config": "^0.72.9", + "@react-navigation/native": "^6.1.7", + "@react-navigation/stack": "^6.3.17", + "@react-spring/native": "9.5.5", + "@reduxjs/toolkit": "^1.9.5", + "@sentry/react-native": "^5.19.0", + "axios": "^1.4.0", + "lodash": "^4.17.21", + "lottie-react-native": "^5.1.6", + "react": "^18.2.0", + "react-native": "^0.73", + "react-native-code-push": "^8.2.0", + "react-native-gesture-handler": "^2.14.0", + "react-native-linear-gradient": "^2.5.6", + "react-native-modal": "^13.0.1", + "react-native-reanimated": "^3.6.1", + "react-native-safe-area-context": "^4.7.1", + "react-native-screens": "^3.29.0", + "react-native-skeleton-placeholder": "^5.2.4", + "react-native-webp-format": "^1.2.0", + "react-redux": "^8.1.2", + "redux": "^4.2.1", + "redux-persist": "^6.0.0", + "redux-thunk": "^2.4.2" + }, + "devDependencies": { + "@types/jest": "^29.5.3", + "@types/lodash": "^4.14.202", + "@types/react": "^18.2.16", + "@types/react-native": "^0.72.2", + "@types/react-test-renderer": "^18.0.0", + "typescript": "^5.1.6" + } +} \ No newline at end of file diff --git a/react-native.config.js b/react-native.config.js new file mode 100644 index 0000000000..5156e7633b --- /dev/null +++ b/react-native.config.js @@ -0,0 +1,3 @@ +module.exports = { + assets: ['./assets/fonts'], +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..9dddf8b8ad --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "isolatedModules": true, + "jsx": "react-native", + "lib": ["esnext","es5", "es6", "dom", "dom.iterable"], + "types": ["react-native", "jest"], + "moduleResolution": "node", + "noEmit": true, + "strict": true, + "target": "esnext", + "noImplicitReturns": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "noUncheckedIndexedAccess": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "allowUnreachableCode": false + }, + "exclude": [ + "node_modules", + "babel.config.js", + "metro.config.js", + "jest.config.js" + ] + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..868400b3c0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5986 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.23.7", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.20.0", "@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.4": + version "0.4.4" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz" + integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz" + integrity sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.20.0", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz" + integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.22.17" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.17.tgz" + integrity sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-default-from" "^7.22.5" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0-0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.0.0-0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz" + integrity sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz" + integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.0.0-0", "@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.7": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz" + integrity sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.23.8": + version "7.23.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz" + integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" + +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz" + integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.23.3" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-assign@^7.16.7": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.22.5.tgz" + integrity sha512-iDhx9ARkXq4vhZ2CYOSnQXkmxkDgosLi3J8Z17mKz7LyzthtkdVchLD7WZ3aXeCuvJDOW3+1I5TpJmwIbF9MKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz" + integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz" + integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz" + integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.0.0-0", "@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.0.0-0", "@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.15", "@babel/plugin-transform-typescript@^7.5.0": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.23.7": + version "7.23.8" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz" + integrity sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.7" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.7" + babel-plugin-polyfill-corejs3 "^0.8.7" + babel-plugin-polyfill-regenerator "^0.5.4" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.13.13": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz" + integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-flow-strip-types" "^7.23.3" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.7": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz" + integrity sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-typescript" "^7.22.15" + +"@babel/register@^7.13.16": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.0.0", "@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.20.0", "@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.4.4": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@jest/create-cache-key-function@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.6.3.tgz" + integrity sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^29.6.4": + version "29.6.4" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz" + integrity sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ== + dependencies: + "@jest/fake-timers" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.6.3" + +"@jest/expect-utils@^29.6.4": + version "29.6.4" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz" + integrity sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg== + dependencies: + jest-get-type "^29.6.3" + +"@jest/fake-timers@^29.6.4": + version "29.6.4" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz" + integrity sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.6.3" + jest-mock "^29.6.3" + jest-util "^29.6.3" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@react-native-async-storage/async-storage@^1.21.0": + version "1.21.0" + resolved "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz" + integrity sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag== + dependencies: + merge-options "^3.0.4" + +"@react-native-community/cli-clean@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz" + integrity sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg== + dependencies: + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + execa "^5.0.0" + +"@react-native-community/cli-config@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.0.tgz" + integrity sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ== + dependencies: + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz" + integrity sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz" + integrity sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA== + dependencies: + "@react-native-community/cli-config" "12.3.0" + "@react-native-community/cli-platform-android" "12.3.0" + "@react-native-community/cli-platform-ios" "12.3.0" + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz" + integrity sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg== + dependencies: + "@react-native-community/cli-platform-android" "12.3.0" + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + +"@react-native-community/cli-platform-android@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz" + integrity sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw== + dependencies: + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.2.4" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-ios@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz" + integrity sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg== + dependencies: + "@react-native-community/cli-tools" "12.3.0" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-plugin-metro@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz" + integrity sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA== + +"@react-native-community/cli-server-api@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz" + integrity sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw== + dependencies: + "@react-native-community/cli-debugger-ui" "12.3.0" + "@react-native-community/cli-tools" "12.3.0" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz" + integrity sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.0.tgz" + integrity sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.0.tgz" + integrity sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg== + dependencies: + "@react-native-community/cli-clean" "12.3.0" + "@react-native-community/cli-config" "12.3.0" + "@react-native-community/cli-debugger-ui" "12.3.0" + "@react-native-community/cli-doctor" "12.3.0" + "@react-native-community/cli-hermes" "12.3.0" + "@react-native-community/cli-plugin-metro" "12.3.0" + "@react-native-community/cli-server-api" "12.3.0" + "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-types" "12.3.0" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native-community/slider@^4.4.3": + version "4.4.3" + resolved "https://registry.npmjs.org/@react-native-community/slider/-/slider-4.4.3.tgz" + integrity sha512-WdjvGtqJfqcCiLwtbzie53Z/H6w6dIfRHhlW832D89ySAdE5DxLAsqRhDOG0eacuAxxEB+T9sGCkVMD0fa3aBg== + +"@react-native-masked-view/masked-view@^0.2.8": + version "0.2.9" + resolved "https://registry.npmjs.org/@react-native-masked-view/masked-view/-/masked-view-0.2.9.tgz" + integrity sha512-Hs4vKBKj+15VxHZHFtMaFWSBxXoOE5Ea8saoigWhahp8Mepssm0ezU+2pTl7DK9z8Y9s5uOl/aPb4QmBZ3R3Zw== + +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== + +"@react-native/babel-plugin-codegen@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz" + integrity sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw== + dependencies: + "@react-native/codegen" "0.73.2" + +"@react-native/babel-preset@0.73.19": + version "0.73.19" + resolved "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.19.tgz" + integrity sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.2" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz" + integrity sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.12": + version "0.73.12" + resolved "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz" + integrity sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw== + dependencies: + "@react-native-community/cli-server-api" "12.3.0" + "@react-native-community/cli-tools" "12.3.0" + "@react-native/dev-middleware" "0.73.7" + "@react-native/metro-babel-transformer" "0.73.13" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.7": + version "0.73.7" + resolved "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz" + integrity sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@^0.72.1": + version "0.72.1" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz" + integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.13": + version "0.73.13" + resolved "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz" + integrity sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.19" + hermes-parser "0.15.0" + nullthrows "^1.1.1" + +"@react-native/metro-config@^0.72.9": + version "0.72.11" + resolved "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz" + integrity sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ== + dependencies: + "@react-native/js-polyfills" "^0.72.1" + metro-config "0.76.8" + metro-react-native-babel-transformer "0.76.8" + metro-runtime "0.76.8" + +"@react-native/normalize-colors@^0.73.0", "@react-native/normalize-colors@0.73.2": + version "0.73.2" + resolved "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== + +"@react-native/virtualized-lists@^0.72.4": + version "0.72.8" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz" + integrity sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@react-navigation/core@^6.4.9": + version "6.4.9" + resolved "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.9.tgz" + integrity sha512-G9GH7bP9x0qqupxZnkSftnkn4JoXancElTvFc8FVGfEvxnxP+gBo3wqcknyBi7M5Vad4qecsYjCOa9wqsftv9g== + dependencies: + "@react-navigation/routers" "^6.1.9" + escape-string-regexp "^4.0.0" + nanoid "^3.1.23" + query-string "^7.1.3" + react-is "^16.13.0" + use-latest-callback "^0.1.5" + +"@react-navigation/elements@^1.3.18": + version "1.3.18" + resolved "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.18.tgz" + integrity sha512-/0hwnJkrr415yP0Hf4PjUKgGyfshrvNUKFXN85Mrt1gY49hy9IwxZgrrxlh0THXkPeq8q4VWw44eHDfAcQf20Q== + +"@react-navigation/native@^6.0.0", "@react-navigation/native@^6.1.7": + version "6.1.7" + resolved "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.7.tgz" + integrity sha512-W6E3+AtTombMucCRo6q7vPmluq8hSjS+IxfazJ/SokOe7ChJX7eLvvralIsJkjFj3iWV1KgOSnHxa6hdiFasBw== + dependencies: + "@react-navigation/core" "^6.4.9" + escape-string-regexp "^4.0.0" + fast-deep-equal "^3.1.3" + nanoid "^3.1.23" + +"@react-navigation/routers@^6.1.9": + version "6.1.9" + resolved "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.9.tgz" + integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== + dependencies: + nanoid "^3.1.23" + +"@react-navigation/stack@^6.3.17": + version "6.3.17" + resolved "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.17.tgz" + integrity sha512-8/8ZvJROK3fp6PRmQ9MrXd9epBowA8NkfCaWW/N9H5arqwNX9lTXAkmcjicRhjpX+UNlMBR9dTLkWvPRe2vY9A== + dependencies: + "@react-navigation/elements" "^1.3.18" + color "^4.2.3" + warn-once "^0.1.0" + +"@react-spring/animated@~9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/animated/-/animated-9.5.5.tgz" + integrity sha512-glzViz7syQ3CE6BQOwAyr75cgh0qsihm5lkaf24I0DfU63cMm/3+br299UEYkuaHNmfDfM414uktiPlZCNJbQA== + dependencies: + "@react-spring/shared" "~9.5.5" + "@react-spring/types" "~9.5.5" + +"@react-spring/core@~9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/core/-/core-9.5.5.tgz" + integrity sha512-shaJYb3iX18Au6gkk8ahaF0qx0LpS0Yd+ajb4asBaAQf6WPGuEdJsbsNSgei1/O13JyEATsJl20lkjeslJPMYA== + dependencies: + "@react-spring/animated" "~9.5.5" + "@react-spring/rafz" "~9.5.5" + "@react-spring/shared" "~9.5.5" + "@react-spring/types" "~9.5.5" + +"@react-spring/native@9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/native/-/native-9.5.5.tgz" + integrity sha512-kauqmyJ8u7aVy2bBs22vl1SdB2i5uYIL4rP53k1KDWrFSqJh4j3efWkbTt9uzR5cMXuNVbkNo9OYVFUcQBz50A== + dependencies: + "@react-spring/animated" "~9.5.5" + "@react-spring/core" "~9.5.5" + "@react-spring/shared" "~9.5.5" + "@react-spring/types" "~9.5.5" + +"@react-spring/rafz@~9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.5.5.tgz" + integrity sha512-F/CLwB0d10jL6My5vgzRQxCNY2RNyDJZedRBK7FsngdCmzoq3V4OqqNc/9voJb9qRC2wd55oGXUeXv2eIaFmsw== + +"@react-spring/shared@~9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/shared/-/shared-9.5.5.tgz" + integrity sha512-YwW70Pa/YXPOwTutExHZmMQSHcNC90kJOnNR4G4mCDNV99hE98jWkIPDOsgqbYx3amIglcFPiYKMaQuGdr8dyQ== + dependencies: + "@react-spring/rafz" "~9.5.5" + "@react-spring/types" "~9.5.5" + +"@react-spring/types@~9.5.5": + version "9.5.5" + resolved "https://registry.npmjs.org/@react-spring/types/-/types-9.5.5.tgz" + integrity sha512-7I/qY8H7Enwasxr4jU6WmtNK+RZ4Z/XvSlDvjXFVe7ii1x0MoSlkw6pD7xuac8qrHQRm9BTcbZNyeeKApYsvCg== + +"@reduxjs/toolkit@^1.9.5": + version "1.9.5" + resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz" + integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ== + dependencies: + immer "^9.0.21" + redux "^4.2.1" + redux-thunk "^2.4.2" + reselect "^4.1.8" + +"@sentry-internal/feedback@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz" + integrity sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw== + dependencies: + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry-internal/replay-canvas@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz" + integrity sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g== + dependencies: + "@sentry/core" "7.100.1" + "@sentry/replay" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry-internal/tracing@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz" + integrity sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg== + dependencies: + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/browser@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz" + integrity sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA== + dependencies: + "@sentry-internal/feedback" "7.100.1" + "@sentry-internal/replay-canvas" "7.100.1" + "@sentry-internal/tracing" "7.100.1" + "@sentry/core" "7.100.1" + "@sentry/replay" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/cli-darwin@2.30.0": + version "2.30.0" + resolved "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.30.0.tgz" + integrity sha512-JVesQ9PznbHBOOOwuej2X8/onfXdmAEjBH6fTyWxBl6K8mB4KmBX/aHunXWMBX+VR9X32XZghIqj7acwaFUMPA== + +"@sentry/cli@2.30.0": + version "2.30.0" + resolved "https://registry.npmjs.org/@sentry/cli/-/cli-2.30.0.tgz" + integrity sha512-GTO5e98vy2QwEYQvhE/ZtGUiVrUu4XungLioJbazm+ZOen8cyac8YOapZfozN5mtxjWOWMOwhOqoTeCU3Q8YKQ== + dependencies: + https-proxy-agent "^5.0.0" + node-fetch "^2.6.7" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + optionalDependencies: + "@sentry/cli-darwin" "2.30.0" + "@sentry/cli-linux-arm" "2.30.0" + "@sentry/cli-linux-arm64" "2.30.0" + "@sentry/cli-linux-i686" "2.30.0" + "@sentry/cli-linux-x64" "2.30.0" + "@sentry/cli-win32-i686" "2.30.0" + "@sentry/cli-win32-x64" "2.30.0" + +"@sentry/core@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz" + integrity sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q== + dependencies: + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/hub@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-7.100.1.tgz" + integrity sha512-zdt7f1k+5JE5FAunzBZUEFbvK5YP/LekLMeogTonaRObB07J6fJ9FD4mtNk7pV0utrTDwR+n942qmp+LbWauWA== + dependencies: + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/integrations@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.100.1.tgz" + integrity sha512-RUyZHcsN3Plc8G4hJN3BCMdbwS8ljUY3E3iLjzucA4HroBsGk5AMc6n7Pp/QqFIRgxrPjKEgA52Wgy5Nq6dSvw== + dependencies: + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + localforage "^1.8.1" + +"@sentry/react-native@^5.19.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@sentry/react-native/-/react-native-5.20.0.tgz" + integrity sha512-1jWqQFRvQeFgYrEXfvr0TTG/kXIGV2KgtkNqlInTTuXFXo6qInFhuu4Ak4zNuitFlfr6Soh2ASlJrpkBKf2pAg== + dependencies: + "@sentry/browser" "7.100.1" + "@sentry/cli" "2.30.0" + "@sentry/core" "7.100.1" + "@sentry/hub" "7.100.1" + "@sentry/integrations" "7.100.1" + "@sentry/react" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/react@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/react/-/react-7.100.1.tgz" + integrity sha512-EdrBtrXVLK2LSx4Rvz/nQP7HZUZQmr+t3GHV8436RAhF6vs5mntACVMBoQJRWiUvtZ1iRo3rIsIdah7DLiFPgQ== + dependencies: + "@sentry/browser" "7.100.1" + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + hoist-non-react-statics "^3.3.2" + +"@sentry/replay@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz" + integrity sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w== + dependencies: + "@sentry-internal/tracing" "7.100.1" + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" + +"@sentry/types@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz" + integrity sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw== + +"@sentry/utils@7.100.1": + version "7.100.1" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz" + integrity sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A== + dependencies: + "@sentry/types" "7.100.1" + +"@sideway/address@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + +"@types/hammerjs@^2.0.36": + version "2.0.41" + resolved "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz" + integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== + +"@types/hoist-non-react-statics@^3.3.1": + version "3.3.1" + resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.3": + version "29.5.4" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz" + integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/lodash@^4.14.202": + version "4.14.202" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + +"@types/node@*": + version "20.6.0" + resolved "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz" + integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-native@^0.72.2": + version "0.72.2" + resolved "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.2.tgz" + integrity sha512-/eEjr04Zqo7mTMszuSdrLx90+j5nWhDMMOgtnKZfAYyV3RwmlpSb7F17ilmMMxZWJY81n/JZ4e6wdhMJFpjrCg== + dependencies: + "@react-native/virtualized-lists" "^0.72.4" + "@types/react" "*" + +"@types/react-test-renderer@^18.0.0": + version "18.0.1" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.1.tgz" + integrity sha512-LjEF+jTUCjzd+Qq4eWqsmZvEWPA/l4L0my+YWN5US8Fo3wZOMiyrpBshHDFbkO8usjdO1B430mEWNU/i1MF7Qg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.8 || ^17.0 || ^18.0", "@types/react@^18.2.16": + version "18.2.21" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/use-sync-external-store@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" + integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^15.0.0": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.5" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.8.2: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appcenter-file-upload-client@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/appcenter-file-upload-client/-/appcenter-file-upload-client-0.1.0.tgz" + integrity sha512-W8lueBBvLuItND2vmvfdIDTbIYHOHXr5ohObhqvBNL3XCOGTqQq1rhWUxBX5Mb5geLBuLDC0HQOtq9pcBgi71w== + dependencies: + detect-node "^2.0.4" + superagent "5.1.0" + url-parse "^1.4.7" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asap@^2.0.0, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^3.2.2: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz" + integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-polyfill-corejs2@^0.4.5, babel-plugin-polyfill-corejs2@^0.4.7: + version "0.4.7" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz" + integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.4" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.3, babel-plugin-polyfill-corejs3@^0.8.7: + version "0.8.7" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz" + integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.4" + core-js-compat "^3.33.1" + +babel-plugin-polyfill-regenerator@^0.5.2, babel-plugin-polyfill-regenerator@^0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz" + integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.4" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +basic-ftp@^5.0.2: + version "5.0.3" + resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz" + integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== + +big-integer@1.6.x: + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bplist-creator@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz" + integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== + dependencies: + stream-buffers "2.2.x" + +bplist-parser@0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz" + integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== + dependencies: + big-integer "1.6.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.22.2, "browserslist@>= 4.21.0": + version "4.22.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== + dependencies: + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001565: + version "1.0.30001579" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz" + integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +code-push@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/code-push/-/code-push-4.2.0.tgz" + integrity sha512-5z+IhqNllGr1AOV2a53gwLawPCfwvLHSBfejU+QBo0w+1Rh8XS/nfGlyf8YDPdslWrtTleBA6Au8npvF9FyJYA== + dependencies: + appcenter-file-upload-client "0.1.0" + proxy-agent "^6.3.0" + recursive-fs "^2.1.0" + slash "^3.0.0" + superagent "^8.0.0" + yazl "^2.5.1" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@^1.0.0, color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +combined-stream@^1.0.6, combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookiejar@^2.1.2, cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.35.0" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz" + integrity sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw== + dependencies: + browserslist "^4.22.2" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +data-uri-to-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz" + integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== + +dayjs@^1.8.15: + version "1.11.10" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +dedent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz" + integrity sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g== + +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== + dependencies: + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.601: + version "1.4.637" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.637.tgz" + integrity sha512-G7j3UCOukFtxVO1vWrPQUoDk3kL70mtvjc/DC/k2o7lE0wAdq+Vwp1ipagOow+BH0uVztFysLWbkM/RTIrbK3w== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encoding@^0.1.0: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +envinfo@^7.10.0: + version "7.11.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz" + integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +expect@^29.0.0: + version "29.6.4" + resolved "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz" + integrity sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA== + dependencies: + "@jest/expect-utils" "^29.6.4" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.6.4" + jest-message-util "^29.6.3" + jest-util "^29.6.3" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: + version "4.3.3" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.3.tgz" + integrity sha512-coV/D1MhrShMvU6D0I+VAK3umz6hUaxxhL0yp/9RjfiYUfAv14rDhGQL+PLForhMdr0wq3PiV07WtkkNjJjNHg== + dependencies: + strnum "^1.0.5" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@^0.206.0, flow-parser@0.*: + version "0.206.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz" + integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^2.3.3: + version "2.5.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formidable@^1.2.1: + version "1.2.6" + resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" + integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== + +formidable@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz" + integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== + dependencies: + dezalgo "^1.0.4" + hexoid "^1.0.0" + once "^1.4.0" + qs "^6.11.0" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-uri@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz" + integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^5.0.1" + debug "^4.3.4" + fs-extra "^8.1.0" + +glob@^7.1.1, glob@^7.1.3, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +hermes-estree@0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz" + integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.18.2: + version "0.18.2" + resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz" + integrity sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ== + +hermes-parser@0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz" + integrity sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw== + dependencies: + hermes-estree "0.12.0" + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.18.2: + version "0.18.2" + resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz" + integrity sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew== + dependencies: + hermes-estree "0.18.2" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +hexoid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + dependencies: + agent-base "^7.0.2" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +image-size@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz" + integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== + dependencies: + queue "6.0.2" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +immer@^9.0.21: + version "9.0.21" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^8.1.5: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip@^1.1.5, ip@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-diff@^29.6.4: + version "29.6.4" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz" + integrity sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.6.3" + +jest-environment-node@^29.6.3: + version "29.6.4" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz" + integrity sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ== + dependencies: + "@jest/environment" "^29.6.4" + "@jest/fake-timers" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.6.3" + jest-util "^29.6.3" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-matcher-utils@^29.6.4: + version "29.6.4" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz" + integrity sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.6.4" + jest-get-type "^29.6.3" + pretty-format "^29.6.3" + +jest-message-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz" + integrity sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz" + integrity sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.6.3" + +jest-regex-util@^27.0.6: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-util@^27.2.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.6.3, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.2.1, jest-validate@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz" + integrity sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.6.3" + +jest-worker@^27.2.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.6.3: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.2.1: + version "17.11.1" + resolved "https://registry.npmjs.org/joi/-/joi-17.11.1.tgz" + integrity sha512-671acnrx+w96PCcQOzvm0VYQVwNL2PVgZmDRaFuSsx8sIUmGzYElPw5lU8F3Cr0jOuPs1oM56p7W2a1cdDOwcw== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.4" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lie@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz" + integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== + dependencies: + immediate "~3.0.5" + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +localforage@^1.8.1: + version "1.10.0" + resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz" + integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== + dependencies: + lie "3.1.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lottie-ios@^3.4.0: + version "3.5.0" + resolved "https://registry.npmjs.org/lottie-ios/-/lottie-ios-3.5.0.tgz" + integrity sha512-DM6BYLhHTzvUsK89AjY+K9RwVGkOBwbH/iytjyZUmFbXz8DVsoPEyy+c7L5NZmVouZHvLnOQp6NaYTkwMo+iOg== + +lottie-react-native@^5.1.6: + version "5.1.6" + resolved "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-5.1.6.tgz" + integrity sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg== + dependencies: + invariant "^2.2.2" + react-native-safe-modules "^1.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +metro-babel-transformer@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz" + integrity sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.12.0" + nullthrows "^1.1.1" + +metro-babel-transformer@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.4.tgz" + integrity sha512-QP1kjYLap4O3w9tA4bYO8iyuNpR65If5Z97Ku37O4CwQPAwQaTmg67g4OdABS4BVK10fsxdExKp+fC37XirPow== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.18.2" + nullthrows "^1.1.1" + +metro-cache-key@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz" + integrity sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw== + +metro-cache-key@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.4.tgz" + integrity sha512-okOOSRFou7Mxaaigoi+KxdFIU/ZJtvDCC6l8BYKsdMx86JDlVdvtIgFU4tFrY1yEkv0wnn7WH0X3xSz4mHKwoQ== + +metro-cache@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz" + integrity sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ== + dependencies: + metro-core "0.76.8" + rimraf "^3.0.2" + +metro-cache@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.4.tgz" + integrity sha512-Dj+GoYt4PvsnnE4GdXhqV9PxEF7GPilY5NPeoTgptWZLlaDuTT2+cJQoDOOit1SfRjnF0zqABtVvB6GGBWdtaQ== + dependencies: + metro-core "0.80.4" + rimraf "^3.0.2" + +metro-config@^0.80.3, metro-config@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.80.4.tgz" + integrity sha512-X3/3tleFYB4SdoxXg8uJ+qc8eITKiLnXs3Ev6pihM4jIM5JD89riwUsSLKVsovfZs8ETqKtjevzfe6jQ2O5NtQ== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.4" + metro-cache "0.80.4" + metro-core "0.80.4" + metro-runtime "0.80.4" + +metro-config@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz" + integrity sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.2.1" + metro "0.76.8" + metro-cache "0.76.8" + metro-core "0.76.8" + metro-runtime "0.76.8" + +metro-core@^0.80.3, metro-core@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.80.4.tgz" + integrity sha512-HRb+zydAhI7QyLpK4D6ARZsKjaBwEn+kCrJEjnVFij8wjJxIIHVilgNCETgg9NWvKJFUoZZCG7ewHkxQ9Qpd8Q== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.4" + +metro-core@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz" + integrity sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.76.8" + +metro-file-map@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz" + integrity sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-regex-util "^27.0.6" + jest-util "^27.2.0" + jest-worker "^27.2.0" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-file-map@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.4.tgz" + integrity sha512-EvBC31JI5vsyebeQ8PWpGENuAWy2Ka7sLqEW7OInW+aLVWmBq02h0BNl33xRgAMz0gwvMf2nKie82hmefYF6ew== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-inspector-proxy@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz" + integrity sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + ws "^7.5.1" + yargs "^17.6.2" + +metro-minify-terser@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz" + integrity sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA== + dependencies: + terser "^5.15.0" + +metro-minify-terser@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.4.tgz" + integrity sha512-cuxfRZWDWGKjh+Z6t4KJkrvmV4JUKXfvQuAX7Pa7U0Mf1YJdLtoGQ5iVOu/6MkfYGXbppqGk2qmFECrRGRh0cA== + dependencies: + terser "^5.15.0" + +metro-minify-uglify@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz" + integrity sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ== + dependencies: + uglify-es "^3.1.9" + +metro-react-native-babel-preset@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz" + integrity sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz" + integrity sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A== + dependencies: + "@babel/core" "^7.20.0" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.12.0" + metro-react-native-babel-preset "0.76.8" + nullthrows "^1.1.1" + +metro-resolver@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz" + integrity sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ== + +metro-resolver@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.4.tgz" + integrity sha512-PCiVWN+d3gtWlobf8jPypwKx9T1QrZmhLJAyqIWLoOsZbpSfj1dn5h0ajCr8rYi9LNzIHm58GGYJK8VFHNn8Cw== + +metro-runtime@^0.80.3: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.4.tgz" + integrity sha512-CWIvf0zmL4jKHSj81zjUAbEwjTqFQmETI0NIQvN4JNwTSHiz50WPOuHnUUcmwM6Dye/ta6KNTELnERp0tKEYYg== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-runtime@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz" + integrity sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg== + dependencies: + "@babel/runtime" "^7.0.0" + react-refresh "^0.4.0" + +metro-runtime@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.4.tgz" + integrity sha512-CWIvf0zmL4jKHSj81zjUAbEwjTqFQmETI0NIQvN4JNwTSHiz50WPOuHnUUcmwM6Dye/ta6KNTELnERp0tKEYYg== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@^0.80.3, metro-source-map@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.4.tgz" + integrity sha512-x+0By55ml6IcGqY9x9HE0hyU0S+uDssrTQ0bPvuydG+iKCX85DzGnlT8k0Vs+EYgZl3KMWcvQ9TpGHW4LRL4GQ== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.4" + nullthrows "^1.1.1" + ob1 "0.80.4" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-source-map@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz" + integrity sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.76.8" + nullthrows "^1.1.1" + ob1 "0.76.8" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz" + integrity sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w== + dependencies: + invariant "^2.2.4" + metro-source-map "0.76.8" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-symbolicate@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.4.tgz" + integrity sha512-UmtH96G5TrcAgbIqdE4xA8MBS9fbZW9Pln+n7eJ0tQ0Fw0M/jzdpiZzhx3bIB2zzqbdm6Nv/kB1+aEo0WvXdyg== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.4" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz" + integrity sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-plugins@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.4.tgz" + integrity sha512-cvmTLBA9ET64h+tgHt6prHlvOq98zBA1Glc9+wLZihPJo+Qmu9i3nQ1g4O+4aUnHivDlp+4C00BMNC+aC/buRQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz" + integrity sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + babel-preset-fbjs "^3.4.0" + metro "0.76.8" + metro-babel-transformer "0.76.8" + metro-cache "0.76.8" + metro-cache-key "0.76.8" + metro-source-map "0.76.8" + metro-transform-plugins "0.76.8" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.4.tgz" + integrity sha512-hLCrlxXyyaV64XQNSiyY/0jMVvGXrgXMkpJ4KwH2t4clxbxyt6TBW+4TqmgAeU9WGclY0OuQ0HzfvIZiONcUOw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.4" + metro-babel-transformer "0.80.4" + metro-cache "0.80.4" + metro-cache-key "0.80.4" + metro-source-map "0.80.4" + metro-transform-plugins "0.80.4" + nullthrows "^1.1.1" + +metro@^0.80.3, metro@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/metro/-/metro-0.80.4.tgz" + integrity sha512-fBhZKU1z44KdhS6sH6Sk97595A66EOniH+jI9OjKDu6piH1SIEqQgdWAuWfJJMzgBHcJceRRvJY1zzsOT/Zx0g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.18.2" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.4" + metro-cache "0.80.4" + metro-cache-key "0.80.4" + metro-config "0.80.4" + metro-core "0.80.4" + metro-file-map "0.80.4" + metro-minify-terser "0.80.4" + metro-resolver "0.80.4" + metro-runtime "0.80.4" + metro-source-map "0.80.4" + metro-symbolicate "0.80.4" + metro-transform-plugins "0.80.4" + metro-transform-worker "0.80.4" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +metro@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz" + integrity sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + async "^3.2.2" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.12.0" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^27.2.0" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.76.8" + metro-cache "0.76.8" + metro-cache-key "0.76.8" + metro-config "0.76.8" + metro-core "0.76.8" + metro-file-map "0.76.8" + metro-inspector-proxy "0.76.8" + metro-minify-terser "0.76.8" + metro-minify-uglify "0.76.8" + metro-react-native-babel-preset "0.76.8" + metro-resolver "0.76.8" + metro-runtime "0.76.8" + metro-source-map "0.76.8" + metro-symbolicate "0.76.8" + metro-transform-plugins "0.76.8" + metro-transform-worker "0.76.8" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.4.1, mime@^2.4.4, mime@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.1.23: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.76.8: + version "0.76.8" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz" + integrity sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g== + +ob1@0.80.4: + version "0.80.4" + resolved "https://registry.npmjs.org/ob1/-/ob1-0.80.4.tgz" + integrity sha512-Lku8OBpq+fhF1ZdKUjbPnTNeqG+3OL0psGAEVJ8zcUiCB5/DPGR/rm3kLcjKDylzC9Rfv540/7I08+oImzfrhw== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pac-proxy-agent@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz" + integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.2" + +pac-resolver@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz" + integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== + dependencies: + degenerator "^5.0.0" + ip "^1.1.8" + netmask "^2.0.2" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +plist@^3.0.4, plist@^3.0.5: + version "3.1.0" + resolved "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== + dependencies: + "@xmldom/xmldom" "^0.8.8" + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +pretty-format@^26.5.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^29.0.0, pretty-format@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz" + integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-agent@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz" + integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +qs@^6.11.0, qs@^6.7.0: + version "6.11.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-devtools-core@^4.27.7: + version "4.28.0" + resolved "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.0.tgz" + integrity sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-freeze@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz" + integrity sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g== + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-native-animatable@1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz" + integrity sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w== + dependencies: + prop-types "^15.7.2" + +react-native-code-push@^8.2.0: + version "8.2.1" + resolved "https://registry.npmjs.org/react-native-code-push/-/react-native-code-push-8.2.1.tgz" + integrity sha512-YCNDRTcVoK7pBMmm/CqOr+J3Pb7HjjHsWoke/xizv7Xx1NTN90k6jDykzAItiBMxJ0bc+zdFP1qNsZRT1NKHOg== + dependencies: + code-push "^4.2.0" + glob "^7.1.7" + hoist-non-react-statics "^3.3.2" + inquirer "^8.1.5" + plist "^3.0.4" + semver "^7.3.5" + xcode "3.0.1" + +react-native-gesture-handler@^2.14.0, "react-native-gesture-handler@>= 1.0.0": + version "2.15.0" + resolved "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.15.0.tgz" + integrity sha512-cmMGW8k86o/xgVTBZZOPohvR5re4Vh65PUxH4HbBBJAYTog4aN4wTVTUlnoky01HuSN8/X4h3tI/K3XLPoDnsg== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + lodash "^4.17.21" + prop-types "^15.7.2" + +react-native-linear-gradient@^2.5.6: + version "2.8.3" + resolved "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.8.3.tgz" + integrity sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA== + +react-native-modal@^13.0.1: + version "13.0.1" + resolved "https://registry.npmjs.org/react-native-modal/-/react-native-modal-13.0.1.tgz" + integrity sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw== + dependencies: + prop-types "^15.6.2" + react-native-animatable "1.3.3" + +react-native-reanimated@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.6.1.tgz" + integrity sha512-F4vG9Yf9PKmE3GaWtVGUpzj3SM6YY2cx1yRHCwiMd1uY7W0gU017LfcVUorboJnj0y5QZqEriEK1Usq2Y8YZqg== + dependencies: + "@babel/plugin-transform-object-assign" "^7.16.7" + "@babel/preset-typescript" "^7.16.7" + convert-source-map "^2.0.0" + invariant "^2.2.4" + +react-native-safe-area-context@^4.7.1, "react-native-safe-area-context@>= 3.0.0": + version "4.7.2" + resolved "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.7.2.tgz" + integrity sha512-5fy/hRNJ7bI/U2SliOeKf0D80J4lXPc1NsRiNS7Xaz8YTnqlzWib1ViItkwKPfufe54YKzVBMmM32RpdzvO2gg== + +react-native-safe-modules@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz" + integrity sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA== + dependencies: + dedent "^0.6.0" + +react-native-screens@^3.29.0, "react-native-screens@>= 3.0.0": + version "3.29.0" + resolved "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.29.0.tgz" + integrity sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg== + dependencies: + react-freeze "^1.0.0" + warn-once "^0.1.0" + +react-native-skeleton-placeholder@^5.2.4: + version "5.2.4" + resolved "https://registry.npmjs.org/react-native-skeleton-placeholder/-/react-native-skeleton-placeholder-5.2.4.tgz" + integrity sha512-OZntVq1hU1UX33FltxK2ezT2v9vHIhV8YnEbnMWUCvxT0N9OsgD1qxiHm6qb9YRJVgq2o5z3S7dNPsPnDF/jNg== + +react-native-webp-format@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/react-native-webp-format/-/react-native-webp-format-1.2.0.tgz" + integrity sha512-tUL/AbM6QwUsxsGutJ1bN4RW8JdD2w5Mpj+An4DvYKkm0bKHbODj7U7gI1+8X68GqJWOy+Ps2cbVmgNpSDfRPQ== + +react-native@*, "react-native@^0.0.0-0 || >=0.60 <1.0", react-native@^0.73, react-native@>=0.46, react-native@>=0.50.1, react-native@>=0.57, react-native@>=0.58, react-native@>=0.59, react-native@>=0.65.0: + version "0.73.2" + resolved "https://registry.npmjs.org/react-native/-/react-native-0.73.2.tgz" + integrity sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.0" + "@react-native-community/cli-platform-android" "12.3.0" + "@react-native-community/cli-platform-ios" "12.3.0" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.2" + "@react-native/community-cli-plugin" "0.73.12" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + deprecated-react-native-prop-types "^5.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + +"react-redux@^7.2.1 || ^8.0.2", react-redux@^8.1.2: + version "8.1.2" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz" + integrity sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw== + dependencies: + "@babel/runtime" "^7.12.1" + "@types/hoist-non-react-statics" "^3.3.1" + "@types/use-sync-external-store" "^0.0.3" + hoist-non-react-statics "^3.3.2" + react-is "^18.0.0" + use-sync-external-store "^1.0.0" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-refresh@^0.4.0: + version "0.4.3" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz" + integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +react@*, "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || >=17.0.0 || >=18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", react@^18.2.0, react@>=0.14.8, react@>=16, react@>=16.8, react@>=17.0.0, "react@15.x || 16.x || 17.x || 18.x", react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +recursive-fs@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/recursive-fs/-/recursive-fs-2.1.0.tgz" + integrity sha512-oed3YruYsD52Mi16s/07eYblQOLi5dTtxpIJNdfCEJ7S5v8dDgVcycar0pRWf4IBuPMIkoctC8RTqGJzIKMNAQ== + +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + +redux-thunk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz" + integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== + +redux@^4, "redux@^4 || ^5.0.0-beta.0", redux@^4.2.1, redux@>4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== + dependencies: + "@babel/runtime" "^7.9.2" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reselect@^4.1.8: + version "4.1.8" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz" + integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@^1.14.2: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.1.1, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.8: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.2: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-plist@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz" + integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== + dependencies: + bplist-creator "0.1.0" + bplist-parser "0.3.1" + plist "^3.0.5" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz" + integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +source-map-support@^0.5.16, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-buffers@2.2.x: + version "2.2.0" + resolved "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" + integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +superagent@^8.0.0: + version "8.1.2" + resolved "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz" + integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.4" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.1.2" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.0" + semver "^7.3.8" + +superagent@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/superagent/-/superagent-5.1.0.tgz" + integrity sha512-7V6JVx5N+eTL1MMqRBX0v0bG04UjrjAvvZJTF/VDH/SH2GjSLqlrcYepFlpTrXpm37aSY6h3GGVWGxXl/98TKA== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.2" + debug "^4.1.1" + fast-safe-stringify "^2.0.6" + form-data "^2.3.3" + formidable "^1.2.1" + methods "^1.1.2" + mime "^2.4.4" + qs "^6.7.0" + readable-stream "^3.4.0" + semver "^6.1.1" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terser@^5.15.0: + version "5.19.4" + resolved "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz" + integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^2.0.1, tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +typescript@^5.1.6: + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +url-parse@^1.4.7: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +use-latest-callback@^0.1.5: + version "0.1.6" + resolved "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.6.tgz" + integrity sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg== + +use-sync-external-store@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +warn-once@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz" + integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.0.0: + version "3.6.18" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz" + integrity sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xcode@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz" + integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== + dependencies: + simple-plist "^1.1.0" + uuid "^7.0.3" + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1: + version "2.3.4" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yazl@^2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz" + integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== + dependencies: + buffer-crc32 "~0.2.3" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==

;I9qAl+w%y)=#Qg)mUSiO}9DUe9GL&3j6nv zgPuVedCeR}niv5euZE{Kwp3tq;daGeQ+$`=dllcW_@LrP6hE%`S;a3X9#s5C#eY%! z_ZBfn_om>)IK}CT3l$eDo}#!)@f^iV6t7i$j^eF~vHDCr`^4l`;>C(DQ+$QuYZTw4 z_*TVtD85ticNG6X@dJtvDL$6Vu5I})E){F35V6bBT)uJ~Vyj|fhRQ=F_gQ*plH zk&25IPiXCI-;z|Oc!uIS#d8!lDqf~|wc;}rpQE_-|Eum?fTOC;IDXG}md$22EFmC* zMhGz?kDw64!}yp0sUi|kWQ1aYfH68Lj|{;WX~2LsV8nmys*UHRL*S1Nl0+h1`~h&2nNJ$lc@t@+jG;3ut|vExA z1=A6PipUaj9=U+5Agjn~atXPNTuH7W*O42@*Qd|Oofg_cZX+AWUF1jPe)14`lsut~ zb4WiKM<$RR3vi!toyiokC)tPWPhLw7CWn$E$kF6DGKb6~rxc>*#$oeUu$Y`fK17z2 zi^!+Q8nTvLPOc)?lCO}jVoSTcxXt8S_(=NY2-lidNPX~M&3f+PX2_POx{yi*r#vnY2-|D7FkM`kqgO6@@aB0Sx2rQ zSCjSRdN8f^Ch`q(E4hQ*N$w{1kq61cCA26PIMwiHv^(dNb z$2_A;)$JP0bfd{Q<`!ML)`sY^J?}HRynuN|mmQdAbg4EOL(5F`*pYcgm#vv+blH}9 zMvp19+~mNfQUGhmL$EsCE%IGbTzX@K2hAFL6_U?uRw&ZX9mRJBRKT0R<< z@m%uEF{bmnrioI~T7p|s#%$RjN+nRmmgoNGCU=e0pY4P7}^*j1j zIqY%$MW==0FY?cE&+wOc;Vds)=!NB8sCy(KC;uuh+~I{M+%P7|3%x4_ygLY_xZfo( zD^L-r4b;2$66Z^n)wmaQ>a8%dLwn5O-ngw}-C;U3rUn_wpZrmYCo zAr1Q=;wX|<6Iz5c{3l|jNvOj4NH)US{Ti&?f0WHo&%GgkmMzd1z6B5QR(ZQgWvGg! z259Tvm%mcCv`hXbAHcHxcftRRkv+0k_QArvUp|!s@|hfz&*hMO0l)A+&Z$8>W#O=b z#oJn+ZKZx;8?do9XhSv*7VxlbgM9(p+63Fqwzn794)#J=#3OpAOW-f=Vv}rFo9yWn zyTNPR-S&W``~mDBI2*R|RNEW2@+)m0+t;SSUJh?GEam;}0NBD+yO;qhc`0n<*TE{D z<0+wX?Oirct=>>4=2M?I)zcCVv03&W4sPLM7$0|FGs{R zM}BUvc0Xt6eU7+yMR+hGv1{DF32t@vo>wV7U0wIzme59cWpJba&ob(j(9_H3^(dj4 zc90zmMZ@`)!fz|#Ei|}z$`O6>d#L9v>-R}`s@&%hshwIQUA3^*N4LhMqi$)P%7nK~ z70i|PHhIF{t>qaWq(Z6J(yHxGc(WI7Lx?$ZSo;VK52HVs291#T;Q=)7!U8|jxz}tr zJIs5g!TiPGJpTwm+vXn%<%wMQ>F}p zmv)F`!ApCC`e@;yRW<8y$%bckB>b|s$|(3{N5d<7JAATZ;foz7cfc1r9zNKKa;M}< z*;!hnNE_7LD&@!|nT-2)oFw>a@1{C7-_yrVlj-o*o~e;Nv*n7kTXP+WZFB;5S#vLl zvQz4q*pny;39xxwffj8Te1grrp|&4!4*Nqv>mW(`nb#}wGq+!qvZl}K5qpzoxiR*R zzEWQqMnJe0dctJ4$MhBZFskwupO%*IgJRs5-!d(BhHn_|(H(&$BbEz4WD5L?k(PG> zyk_g2-SC+m#fUE1q@phm!eiJ0TEK760;a%!FHS%6FK~cq1kv{C_cEstcE|8T;33oR zW%QUaK`eza%b5FJbywXhpp4V=Tj9ARpgeYl7R|5cNDSCRbf@H0i3P93ON-mNe&U$GEeM0~&$YO3sHeoa$<~3xr4yJ9PqH{8pRFo7fO5GjW|Mc8 ziPitpo&aBB8oaO*Fpk$}ABLjQ;+@8uO*oF%Zw3{k`gq$i{xwqd|8Pa#`*9p67)|YB zPJmqvQp`I%SC5nMt0mwd!Wm=--%NIlMp2h4mJCS;e-Ye6jRs9dUEeXuSlbQm* zss5TkDZY6eYD@j$1_m^a-cPsiaVJNKkri1^^H(6y#ig& z2Cfcz+iZiz)L?9%2<1VN=_-S9mnZw98RL zblp}j{FS?Qs}KC_E!U8m=wS6l{eb{#}e18=zy@3D19IwaGqc4GzFRe+b^}!)VzeE4do=_Mt)W!*3si zmpcsIgS(ciBRt-T&_E=i4NQTTy*u<9sn997tGoKauid=bWC;2IUE_6gi#1*o%tVs| z9oS^3z;dAh%kx(M4=6P$s%Ajg~ z*`1ehE!W3pkJ*bE@+W4$Ibc3RUmWRuBmL`t_MhL?RB)InddjJYtF3?i%ZK7_L2W8Bv#(1v^lHN_WD9~^=5@hhwx_y(&4PC-Xwp&5yR$|3|+LK~=5 z+CkZIA(Rjoqm*}nmgG`%8B`HHptb1@T}fXkG5SMCm;vQrCM+3QnD-9lDxz#C@)nqf zy>)nxLe>75S!5oE67LC91ts27E!O4LK+nF|Ja3jj%U%m5J5=mu8T5F|xkm3-W~KSH zS;h53zl9F(MY9$Pymek(+<3;ws=M@%p3+NF@h+eOhrX?^q(K9oF8!qcIYv@9aujv0 zF;f}G8sfGd7$=sawby={tqDebweB&-mQ{|^bZl@Yj!_QA!{VQcvY=%k8*hIM-gBh3 zwtUxrfS$&Edy)4PsfYTGn%|K74z4oS@|o+?9tTU&MAV>M)R?KPDf78rPM>x)o}xZG zeQp~C8bNspGk0Wb%yohTypQUYu{%Gi6j_Lj)aN@RSr*F^hN2dQ9wOZw? literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/tt_regular.ttf b/android/app/src/main/assets/fonts/tt_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..09333caddce0c3463f912cafff78ded61a1a0315 GIT binary patch literal 139772 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 P7qvIL$KLFoWRHIVR96k) literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/tt_semi_bold.otf b/android/app/src/main/assets/fonts/tt_semi_bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..609715d737c2489ed18ab569ebd712684fd0565f GIT binary patch literal 170788 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 TQ_tlVrr*Wm;2QilUGaYbpv^q> literal 0 HcmV?d00001 diff --git a/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt b/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt index 6d8ff9997d..5fc3ff2c7a 100644 --- a/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt +++ b/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt @@ -6367,5 +6367,6 @@ class NaviAnalytics private constructor() { const val PROFILE_BASIC_DETAILS = "profile_basic_details" const val MANDATE_SUCCESS_EVENT = "pl_pre_mandate_auth_success" const val NORMAL_FLOW = "normal_flow" + const val REACT_NATIVE_SCREEN = "react_native_screen" } } diff --git a/android/app/src/main/java/com/naviapp/app/NaviApplication.kt b/android/app/src/main/java/com/naviapp/app/NaviApplication.kt index 3745521e06..0728c63f81 100644 --- a/android/app/src/main/java/com/naviapp/app/NaviApplication.kt +++ b/android/app/src/main/java/com/naviapp/app/NaviApplication.kt @@ -18,17 +18,29 @@ import androidx.multidex.MultiDexApplication import coil.ImageLoader import coil.ImageLoaderFactory import coil.request.CachePolicy +import com.BV.LinearGradient.LinearGradientPackage +import com.chuckerteam.chucker.api.ChuckerCollector +import com.chuckerteam.chucker.api.ChuckerInterceptor +import com.facebook.react.ReactApplication +import com.facebook.react.ReactPackage +import com.facebook.react.PackageList +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.modules.network.NetworkingModule +import com.facebook.soloader.SoLoader import com.github.anrwatchdog.ANRWatchDog import com.google.android.play.core.splitcompat.SplitCompat +import com.microsoft.codepush.react.CodePush import com.navi.alfred.AlfredManager import com.navi.alfred.network.AlfredApiLogsManager import com.navi.alfred.utils.AlfredConstants import com.navi.alfred.utils.log import com.navi.analytics.utils.NaviTrackEvent +import com.navi.base.security.interceptor.EncryptionHashInterceptor import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.AppLaunchUtils import com.navi.base.utils.NetWatchManger import com.navi.chat.base.ChatBaseActivity +import com.navi.common.CommonLibManager import com.navi.common.ui.activity.BaseActivity import com.navi.common.uitron.util.UiTronDependencyProvider import com.navi.common.utils.CommonUtils.isQaRelease @@ -52,19 +64,25 @@ import com.naviapp.analytics.utils.NaviSDKHelper import com.naviapp.common.transformer.AppLoadTimerMapper import com.naviapp.home.activity.NewDashboardActivity import com.naviapp.home.common.setup.NotificationManager +import com.naviapp.react_native.native_bridge.NativePackage import com.naviapp.releaselog.utils.NetWatchUtil import com.naviapp.utils.Constants import com.naviapp.utils.DEV import com.naviapp.utils.QA import com.naviapp.utils.isDifferentPackage import dagger.hilt.android.HiltAndroidApp +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject import javax.inject.Provider import com.navi.insurance.health.activity.BaseActivity as InsuranceBaseActivity @HiltAndroidApp -open class NaviApplication : MultiDexApplication(), Application.ActivityLifecycleCallbacks, ImageLoaderFactory { +open class NaviApplication : MultiDexApplication(), Application.ActivityLifecycleCallbacks, ImageLoaderFactory, ReactApplication { private var appForegroundCounter: Int = 0 private var enableAppUpdate = true @@ -77,6 +95,23 @@ open class NaviApplication : MultiDexApplication(), Application.ActivityLifecycl @Inject lateinit var notificationManager: Provider + private var rnJob = Job() + private val applicationScope = CoroutineScope(Dispatchers.IO + rnJob) + + override val reactNativeHost = object : DefaultReactNativeHost(this) { + override fun getUseDeveloperSupport() = false + override fun getPackages(): List { + val packages = PackageList(this).packages.toMutableList() + packages.add(NativePackage()) + packages.add(LinearGradientPackage()) + return packages + } + + override fun getJSBundleFile(): String? { + return CodePush.getJSBundleFile() + } + } + override fun onCreate() { AppLoadTimerMapper.onAppLoadingStart() if (TextUtils.equals(BuildConfig.FLAVOR, DEV) && BuildConfig.DEBUG) { @@ -170,6 +205,30 @@ open class NaviApplication : MultiDexApplication(), Application.ActivityLifecycl defaultHandler?.uncaughtException(thread, exception) } } + rnJob.invokeOnCompletion { cause -> + if (cause is CancellationException) { + cause.log() + } + } + + applicationScope.launch { + SoLoader.init(this@NaviApplication, false) + NetworkingModule.setCustomClientBuilder { builder -> + builder.addInterceptor(CommonLibManager.getHeaderInterceptorForReact()) + builder.addInterceptor(EncryptionHashInterceptor(applicationContext)) + if (BuildConfig.DEBUG) { + builder.addInterceptor( + ChuckerInterceptor.Builder(applicationContext) + .collector(ChuckerCollector(applicationContext)) + .maxContentLength(250000L) + .redactHeaders(arrayListOf("X-Click-Stream-Data")) + .alwaysReadResponseBody(false) + .build() + ) + } + } + } + } companion object { diff --git a/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt b/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt index dcf0cb7055..e12a3d01bc 100644 --- a/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt +++ b/android/app/src/main/java/com/naviapp/common/navigator/NaviDeepLinkNavigator.kt @@ -23,6 +23,7 @@ import android.os.Bundle import android.provider.MediaStore import androidx.appcompat.app.AppCompatActivity import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.google.gson.Gson import com.navi.amc.navigator.NaviAmcDeeplinkNavigator import com.navi.amc.utils.Constant import com.navi.analytics.utils.NaviTrackEvent @@ -76,6 +77,7 @@ import com.navi.naviwidgets.utils.CHAT_IDEMPOTENCY_KEY import com.navi.ap.common.ui.StandardLauncherApActivity import com.navi.chat.ui.activities.NaviTicketViewActivity import com.navi.common.utils.Constants.APP_PLATFORM_APPLICATION_TYPE +import com.navi.common.utils.Constants.KEY_CTA_DATA import com.navi.naviwidgets.utils.CHOOSER_TITLE_PARAM import com.navi.naviwidgets.utils.EMAIL_BODY_PARAM import com.navi.naviwidgets.utils.EMAIL_ID_PARAM @@ -148,6 +150,7 @@ import com.naviapp.personalloanrevamp.getloanRevamp.activities.SkipMandateV2Acti import com.naviapp.personalloanrevamp.useridentificationv2.activities.PermissionV2Activity import com.naviapp.personalloanrevamp.useridentificationv2.activities.PermissionV2LocExpActivity import com.naviapp.personalloanrevamp.useridentificationv2.activities.PlMandatePermissionActivity +import com.naviapp.react_native.ReactActivity import com.naviapp.registration.RegistrationActivity import com.naviapp.releaselog.activity.ReleaseLogActivity import com.naviapp.status_tracker.StatusTrackerActivity @@ -288,6 +291,7 @@ object NaviDeepLinkNavigator : DeepLinkListener { private const val NAVIPAY_DELETE_USER_DATA = "NAVIPAY_DELETE" private const val AP_FINISH_OK = "AP_FINISH_OK" private const val AP_FINISH = "AP_FINISH" + const val REACT_NATIVE_ACTIVITY = "react_native" private const val PERSONAL_LOAN_TRACKER_DYNAMIC_FEATURE_MODULE_ACTIVITY_CLASS_PATH = "com.navi.pl.dynamic.activity.PersonalLoanTrackerActivity" private const val ELIGIBILITY_V2_DYNAMIC_FEATURE_MODULE_ACTIVITY_CLASS_PATH = @@ -981,6 +985,12 @@ object NaviDeepLinkNavigator : DeepLinkListener { activity?.finish() return } + REACT_NATIVE_ACTIVITY -> { + intent = Intent(activity, ReactActivity::class.java) + val gson = Gson() + val cta = gson.toJson(ctaData) + bundle.putString(KEY_CTA_DATA, cta) + } } ctaData.parameters?.forEach { keyValue -> bundle.putString(keyValue.key, keyValue.value) diff --git a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt index 40b329e91c..caf1e5ab1f 100644 --- a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt +++ b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabFragment.kt @@ -39,13 +39,13 @@ import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse import com.navi.base.utils.orZero import com.navi.common.analytics.NaviAnalytics +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.listeners.DashboardFragmentListener import com.navi.common.listeners.NewBottomSheetListener import com.navi.common.ui.fragment.BaseFragment import com.navi.insurance.R import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.Constants -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.extensions.FloatingButtonOverlay import com.navi.naviwidgets.extensions.isScrollingDown @@ -86,7 +86,7 @@ class InsuranceTabFragment : BaseFragment(), WidgetCallback, NewBottomSheetListe it, finish = it.finish.orFalse(), clearTask = it.clearTask.orFalse(), - callbackHandler = object: RequestToCallbackHAndler { + callbackHandler = object: RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchInsuranceTabDetails() } @@ -108,7 +108,7 @@ class InsuranceTabFragment : BaseFragment(), WidgetCallback, NewBottomSheetListe naviClickAction, finish = naviClickAction.finish.orFalse(), clearTask = naviClickAction.clearTask.orFalse(), - callbackHandler = object: RequestToCallbackHAndler { + callbackHandler = object: RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchInsuranceTabDetails() } diff --git a/android/app/src/main/java/com/naviapp/common/tab/insurance/ui/TrialInsuranceDashboardFragment.kt b/android/app/src/main/java/com/naviapp/common/tab/insurance/ui/TrialInsuranceDashboardFragment.kt index a3222447cc..c97e01d253 100644 --- a/android/app/src/main/java/com/naviapp/common/tab/insurance/ui/TrialInsuranceDashboardFragment.kt +++ b/android/app/src/main/java/com/naviapp/common/tab/insurance/ui/TrialInsuranceDashboardFragment.kt @@ -39,13 +39,13 @@ import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse import com.navi.base.utils.orZero import com.navi.common.analytics.NaviAnalytics +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.listeners.DashboardFragmentListener import com.navi.common.listeners.NewBottomSheetListener import com.navi.common.ui.fragment.BaseFragment import com.navi.insurance.R import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.Constants -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.GenericComposableWidgetFactory import com.navi.naviwidgets.extensions.FloatingButtonOverlay @@ -109,7 +109,7 @@ class TrialInsuranceDashboardFragment : BaseFragment(), WidgetCallback, NewBotto naviClickAction, finish = naviClickAction?.finish.orFalse(), clearTask = naviClickAction?.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { fetchTrialInsuranceTabData() } @@ -255,7 +255,7 @@ class TrialInsuranceDashboardFragment : BaseFragment(), WidgetCallback, NewBotto naviClickAction, finish = naviClickAction?.finish.orFalse(), clearTask = naviClickAction?.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { fetchTrialInsuranceTabData() } diff --git a/android/app/src/main/java/com/naviapp/react_native/ReactActivity.kt b/android/app/src/main/java/com/naviapp/react_native/ReactActivity.kt new file mode 100644 index 0000000000..40219915b7 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/ReactActivity.kt @@ -0,0 +1,115 @@ +package com.naviapp.react_native + +import android.annotation.SuppressLint +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.provider.Settings +import android.text.TextUtils +import android.view.KeyEvent +import androidx.appcompat.app.AppCompatActivity +import com.facebook.react.ReactApplication +import com.facebook.react.ReactInstanceManager +import com.facebook.react.ReactRootView +import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler +import com.facebook.react.modules.core.DeviceEventManagerModule +import com.navi.base.utils.PROD +import com.navi.base.utils.orFalse +import com.navi.common.CommonLibManager +import com.navi.common.callback.RequestToCallbackHandler +import com.navi.common.model.ModuleNameV2 +import com.navi.common.ui.activity.BaseActivity +import com.navi.common.utils.Constants +import com.naviapp.BuildConfig +import com.naviapp.analytics.utils.NaviAnalytics +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class ReactActivity : BaseActivity() , DefaultHardwareBackBtnHandler, RequestToCallbackHandler { + private lateinit var reactRootView: ReactRootView + private lateinit var reactInstanceManager: ReactInstanceManager + private val RELOAD_PAGE = "reloadPage" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(null) + overridePendingTransition(0, 0) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BuildConfig.DEBUG && !TextUtils.equals(CommonLibManager.buildConfigDetails.flavor, PROD).orFalse()) { + if(!Settings.canDrawOverlays(this)) { + val intent = Intent( + Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package: $packageName") + ) + startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); + } + } + reactRootView = ReactRootView(this) + val reactApplication = application as ReactApplication + reactInstanceManager = reactApplication.reactNativeHost.reactInstanceManager + val ctaData = intent.extras?.getString(Constants.KEY_CTA_DATA) + val bundle: Bundle? = if (ctaData != null) Bundle() else null + bundle?.putString(Constants.KEY_CTA_DATA, ctaData.toString()) + reactRootView.startReactApplication(reactInstanceManager, + "NaviApp", bundle ?: intent.extras + ) + setContentView(reactRootView) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!Settings.canDrawOverlays(this)) { + // SYSTEM_ALERT_WINDOW permission not granted + } + } + } + reactInstanceManager.onActivityResult(this, requestCode, resultCode, data) + } + override fun onPause() { + super.onPause() + reactInstanceManager.onHostPause(this) + } + + override fun onResume() { + super.onResume() + reactInstanceManager.onHostResume(this, this) + } + + override fun onDestroy() { + super.onDestroy() + reactInstanceManager.onHostDestroy(this) + reactRootView.unmountReactApplication() + } + + override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { + if (keyCode == KeyEvent.KEYCODE_MENU) { + reactInstanceManager.showDevOptionsDialog() + return true + } + return super.onKeyUp(keyCode, event) + } + + override fun onBackPressed() { + reactInstanceManager.onBackPressed() + } + + override fun invokeDefaultOnBackPressed() { + super.onBackPressed() + } + + companion object { + const val OVERLAY_PERMISSION_REQ_CODE = 1 // Choose any value + } + + override val screenName: String + get() = NaviAnalytics.REACT_NATIVE_SCREEN + + override val moduleName: ModuleNameV2 + get() = ModuleNameV2.COMMON + + @SuppressLint("VisibleForTests") + override fun onCallbackRaised() { + reactInstanceManager?.currentReactContext?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)?.emit(RELOAD_PAGE, true) + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/NativePackage.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/NativePackage.kt new file mode 100644 index 0000000000..e9d17359fc --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/NativePackage.kt @@ -0,0 +1,32 @@ +package com.naviapp.react_native.native_bridge + +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.uimanager.ViewManager +import com.naviapp.react_native.native_bridge.connectors.AlfredModuleConnector +import com.naviapp.react_native.native_bridge.connectors.ApiConnector +import com.naviapp.react_native.native_bridge.connectors.NativeAnalyticsConnector +import com.naviapp.react_native.native_bridge.connectors.NativeNavigatorConnector +import com.naviapp.react_native.native_bridge.connectors.NetworkModuleConnector +import com.naviapp.react_native.native_bridge.connectors.PreferenceManagerConnector + + +class NativePackage : ReactPackage { + override fun createViewManagers(reactContext: ReactApplicationContext): List> { + return emptyList() + } + + override fun createNativeModules( + reactContext: ReactApplicationContext + ): List { + val modules: MutableList = ArrayList() + modules.add(NativeNavigatorConnector(reactContext)) + modules.add(PreferenceManagerConnector(reactContext)) + modules.add(ApiConnector(reactContext)) + modules.add(NetworkModuleConnector(reactContext)) + modules.add(NativeAnalyticsConnector(reactContext)) + modules.add(AlfredModuleConnector(reactContext)) + return modules + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt new file mode 100644 index 0000000000..dd02336d57 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/AlfredModuleConnector.kt @@ -0,0 +1,40 @@ +package com.naviapp.react_native.native_bridge.connectors + +import android.view.View +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.uimanager.NativeViewHierarchyManager +import com.facebook.react.uimanager.UIManagerModule +import com.navi.alfred.AlfredManager +import com.navi.alfred.AlfredManager.clearBottomSheetView +import timber.log.Timber + + +class AlfredModuleConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + override fun getName(): String = "AlfredModuleConnector" + + @ReactMethod + fun setBottomSheetView(refID: Int?) { + if (refID != null) { + val uiManagerModule: UIManagerModule? = + reactApplicationContext.getNativeModule(UIManagerModule::class.java) + if (uiManagerModule != null) { + try { + uiManagerModule.addUIBlock { nativeViewHierarchyManager: NativeViewHierarchyManager -> + val view: View = nativeViewHierarchyManager.resolveView(refID) + AlfredManager.setBottomSheetView(view) + } + } catch (error: Exception) { + Timber.d("Alfred", "setBottomSheetView error:$error") + } + } + } + } + + @ReactMethod + fun clearBottomSheet() { + AlfredManager.clearBottomSheetView() + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/ApiConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/ApiConnector.kt new file mode 100644 index 0000000000..1a8d04fce0 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/ApiConnector.kt @@ -0,0 +1,22 @@ +package com.naviapp.react_native.native_bridge.connectors + +import com.facebook.react.bridge.Promise +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod + + +class ApiConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + + override fun getName(): String = "ApiConnector" + + @ReactMethod + fun getApplicationId(promise: Promise) {} + + @ReactMethod + fun getScreenDefinition(promise: Promise) {} + + @ReactMethod + fun fillApplication(promise: Promise) {} +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt new file mode 100644 index 0000000000..5207d6c7a2 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt @@ -0,0 +1,89 @@ +package com.naviapp.react_native.native_bridge.connectors + +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.bridge.ReadableMap +import com.navi.common.utils.CommonNaviAnalytics +import com.naviapp.utils.toMap + +class NativeAnalyticsConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + + override fun getName(): String { + return "NativeAnalyticsModule" + } + + @ReactMethod + fun sendAsAnalyticsEvent(eventName: String, eventProperties: ReadableMap?) { + if (eventProperties != null) { + CommonNaviAnalytics.naviAnalytics.sendEvent(eventName, eventProperties.toMap()) + } else { + CommonNaviAnalytics.naviAnalytics.sendEvent(eventName, mapOf()) + } + } + + @ReactMethod + fun sendAsAppDowntimeEvent( + eventProps: ReadableMap? + ) { + val propsMap = eventProps?.toHashMap() ?: HashMap() + + val reason = propsMap["reason"] as? String + val screenName = propsMap["screenName"] as? String + val moduleName = propsMap["moduleName"] as? String + val statusCode = propsMap["statusCode"] as? Double + val networkType = propsMap["networkType"] as? String + val flowName = propsMap["flowName"] as? String + val methodName = propsMap["methodName"] as? String + val vendorName = propsMap["vendorName"] as? String + val extras: HashMap = propsMap["extras"] as? HashMap ?: hashMapOf() + val eventName = propsMap["eventName"] as? String ?: "global_app_downtime" + + CommonNaviAnalytics.naviAnalytics.Errors().onAppDowntime( + reason = reason, + screenName = screenName, + moduleName = moduleName, + statusCode = statusCode?.toInt(), + networkType = networkType, + flowName = flowName, + methodName = methodName, + vendorName = vendorName, + extras = extras.toMutableMap(), + eventName = eventName + ) + } + + @ReactMethod + fun sendAsGlobalErrorEvent( + eventProps: ReadableMap? + ) { + val propsMap = eventProps?.toHashMap() ?: HashMap() + + val reason = propsMap["reason"] as? String + val source = propsMap["source"] as? String + val moduleName = propsMap["moduleName"] as String + val globalErrorType = propsMap["globalErrorType"] as String + val statusCode = propsMap["statusCode"] as? Double + val networkType = propsMap["networkType"] as? String + val flowName = propsMap["flowName"] as? String + val methodName = propsMap["methodName"] as? String + val vendorName = propsMap["vendorName"] as? String + val extras: HashMap = propsMap["extras"] as? HashMap ?: hashMapOf() + val journeySource = propsMap["journeySource"] as? String + + CommonNaviAnalytics.naviAnalytics.ErrorBottomSheet().onGlobalError( + reason = reason, + source = source, + moduleName = moduleName, + globalErrorType = globalErrorType, + statusCode = statusCode?.toInt(), + networkType = networkType, + flowName = flowName, + methodName = methodName, + vendorName = vendorName, + extras = extras.toMutableMap(), + journeySource = journeySource + ) + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeNavigatorConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeNavigatorConnector.kt new file mode 100644 index 0000000000..af5a9be3a0 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeNavigatorConnector.kt @@ -0,0 +1,62 @@ +package com.naviapp.react_native.native_bridge.connectors + +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.google.gson.reflect.TypeToken +import com.navi.base.model.CtaData +import com.navi.base.utils.orTrue +import com.navi.insurance.analytics.NaviInsuranceAnalytics +import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator +import com.navi.naviwidgets.extensions.getJsonObject +import com.naviapp.common.navigator.NaviDeepLinkNavigator +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +class NativeNavigatorConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + + override fun getName(): String { + return "NativeDeeplinkNavigatorModule" + } + + @ReactMethod + fun navigateToNaviDeeplinkNavigator(ctaDataString: String?) { + CoroutineScope(Dispatchers.Main).launch { + ctaDataString?.let { + val dataType = object : TypeToken() {}.type + val ctaData = getJsonObject( + dataType, + ctaDataString + ) + ctaData?.analyticsEventProperties?.let { analyticsEvent -> + NaviInsuranceAnalytics.postAnalyticsEvent(analyticsEvent.name.orEmpty(), analyticsEvent.properties) + } + ctaData?.let { + NaviDeepLinkNavigator.navigate(currentActivity, ctaData, ctaData.finish.orTrue()) + } + } + } + } + + @ReactMethod + fun navigateToNaviInsuranceDeeplinkNavigator(ctaDataString: String?) { + CoroutineScope(Dispatchers.Main).launch { + ctaDataString?.let { + val dataType = object : TypeToken() {}.type + val ctaData = getJsonObject( + dataType, + ctaDataString + ) + ctaData?.analyticsEventProperties?.let { analyticsEvent -> + NaviInsuranceAnalytics.postAnalyticsEvent(analyticsEvent.name.orEmpty(), analyticsEvent.properties) + } + ctaData?.let { + NaviInsuranceDeeplinkNavigator.navigate(currentActivity, ctaData, ctaData.finish.orTrue()) + } + } + } + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NetworkModuleConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NetworkModuleConnector.kt new file mode 100644 index 0000000000..a28c93290d --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NetworkModuleConnector.kt @@ -0,0 +1,51 @@ +package com.naviapp.react_native.native_bridge.connectors + +import android.util.Log +import com.facebook.react.bridge.Promise +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.bridge.WritableMap +import com.facebook.react.bridge.WritableNativeMap +import com.google.gson.Gson +import com.navi.common.CommonLibManager + +class NetworkModuleConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + override fun getName(): String { + return "NetworkConnectorModule" + } + + @ReactMethod + fun getAllNativeHeaders(promise: Promise) { + val headerInfo = CommonLibManager.getReactHeaderConfig() + Log.d("REACT_NATIVE", "headerinfo: ${headerInfo}") + val headerMap: WritableMap = WritableNativeMap() + headerInfo.entries.forEach { entry -> + headerMap.putString(entry.key, entry.value) + } + Log.d("REACT_NATIVE", "header writable map: ${headerMap}") + promise.resolve(headerMap) + } + + @ReactMethod + fun getHeaderByKey(key: String, promise: Promise) { + val headerInfo = CommonLibManager.getReactHeaderConfig() + if (headerInfo.containsKey(key)) { + promise.resolve(headerInfo[key]) + } else { + promise.reject("Requested Key: $key", "not present in header map") + } + } + + @ReactMethod + fun getBuildConfigDetails(promise: Promise) { + val buildConfigDetails = CommonLibManager.buildConfigDetails + try { + val buildConfigString = Gson().toJson(buildConfigDetails) + promise.resolve(buildConfigString) + } catch (e: Exception) { + promise.resolve(null) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/PreferenceManagerConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/PreferenceManagerConnector.kt new file mode 100644 index 0000000000..6422600e35 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/PreferenceManagerConnector.kt @@ -0,0 +1,92 @@ +package com.naviapp.react_native.native_bridge.connectors + +import com.facebook.react.bridge.Promise +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.navi.base.sharedpref.PreferenceManager + + +class PreferenceManagerConnector internal constructor(context: ReactApplicationContext?) : + ReactContextBaseJavaModule(context) { + + override fun getName(): String = "PreferenceManagerConnector" + + @ReactMethod + fun get(key: String, type: String, promise: Promise) { + val data = when (type) { + PreferenceConstants.STRING.value -> { + PreferenceManager.getSecureString(key) ?: PreferenceManager.getStringPreference(key) + } + + PreferenceConstants.INT.value -> { + PreferenceManager.getIntPreference(key) + + } + + PreferenceConstants.BOOLEAN.value -> { + PreferenceManager.getBooleanPreference(key) + } + + else -> { + PreferenceManager.getStringPreference(key) + } + } + promise.resolve(data) + } + + @ReactMethod + fun set(key: String, data: Any?) { + when (data) { + is String -> { + PreferenceManager.setStringPreference(key, data) + } + + is Int -> { + PreferenceManager.setIntPreference(key, data) + } + + is Boolean -> { + PreferenceManager.setBooleanPreference(key, data) + } + + else -> { + PreferenceManager.setObjectPreference(key, data) + } + } + } + + @ReactMethod + fun getSecure(key: String, promise: Promise) { + val data = PreferenceManager.getSecureString(key) + promise.resolve(data) + } + + @ReactMethod + fun setSecure(key: String, data: Any?) { + when (data) { + is String -> { + PreferenceManager.setStringPreference(key, data) + } + + is Int -> { + PreferenceManager.setIntPreference(key, data) + } + + is Boolean -> { + PreferenceManager.setBooleanPreference(key, data) + } + + else -> { + PreferenceManager.setObjectPreference(key, data) + } + } + } + + enum class PreferenceConstants(val value: String) { + STRING("string"), + INT("int"), + BOOLEAN("boolean"), + OBJECT("object") + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/naviapp/utils/Ext.kt b/android/app/src/main/java/com/naviapp/utils/Ext.kt index e41ef236c1..009517dfe1 100644 --- a/android/app/src/main/java/com/naviapp/utils/Ext.kt +++ b/android/app/src/main/java/com/naviapp/utils/Ext.kt @@ -35,6 +35,7 @@ import androidx.appcompat.widget.AppCompatTextView import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.viewpager.widget.ViewPager +import com.facebook.react.bridge.ReadableMap import com.google.android.material.badge.BadgeDrawable import com.google.gson.Gson import com.navi.base.model.CtaData @@ -622,3 +623,29 @@ fun saveOfferData(data: ReferralData) { } } } + +fun ReadableMap.toMap(): Map { + val map = mutableMapOf() + val iterator = keySetIterator() + while (iterator.hasNextKey()) { + val key = iterator.nextKey() + val value = getString(key) + if (value != null) { + map[key] = value + } + } + return map +} + +fun ReadableMap.toMutableMap(): MutableMap { + val map = mutableMapOf() + val iterator = keySetIterator() + while (iterator.hasNextKey()) { + val key = iterator.nextKey() + val value = getString(key) + if (value != null) { + map[key] = value + } + } + return map +} diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 9f3ff4ddea..9e7780e76c 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1148,4 +1148,5 @@ Show me more notifications like this Don\'t show me notifications like this There are no notifications + QLh2ypE_wVIAdp9rcSPIkbdxwKgPijXyGpKX_ diff --git a/android/build.gradle b/android/build.gradle index daf178eb3c..6dd01bd695 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,6 +1,21 @@ buildscript { dependencies { classpath libs.juspay.hypersdk.plugin + classpath("com.facebook.react:react-native-gradle-plugin") + } + + ext { + compileSdkVersion = 34 + minSdkVersion = 21 + } + subprojects { subproject -> + afterEvaluate{ + if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) { + android { + compileSdkVersion rootProject.ext.compileSdkVersion + } + } + } } } diff --git a/android/gradle.properties b/android/gradle.properties index d2e028de0d..20d66ab26e 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -21,6 +21,7 @@ android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official org.gradle.daemon=true +hermesEnabled=true org.gradle.parallel=true org.gradle.caching=true android.nonTransitiveRClass=true diff --git a/android/link-assets-manifest.json b/android/link-assets-manifest.json new file mode 100644 index 0000000000..d87a2f6d4a --- /dev/null +++ b/android/link-assets-manifest.json @@ -0,0 +1,17 @@ +{ + "migIndex": 1, + "data": [ + { + "path": "assets/fonts/tt_medium.ttf", + "sha1": "97ae9273c19e455a0d807e38113277ee75ad11c7" + }, + { + "path": "assets/fonts/tt_regular.ttf", + "sha1": "dc8b2d23e4c2d3c89ffec863703205c275f12829" + }, + { + "path": "assets/fonts/tt_semi_bold.otf", + "sha1": "0420aad22b10287939eead87362df34935d015b7" + } + ] +} diff --git a/android/navi-base/build.gradle b/android/navi-base/build.gradle index f3fbd9c07c..5d80a75d51 100644 --- a/android/navi-base/build.gradle +++ b/android/navi-base/build.gradle @@ -67,6 +67,9 @@ dependencies { implementation libs.dagger.hiltAndroid implementation libs.joda.time + implementation "com.facebook.react:react-android" + implementation "com.facebook.react:hermes-android" + androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit diff --git a/android/navi-chat/src/main/java/com/navi/chat/network/retrofit/NaviChatHttpClient.kt b/android/navi-chat/src/main/java/com/navi/chat/network/retrofit/NaviChatHttpClient.kt index ca92f3a4f6..4d267f5421 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/network/retrofit/NaviChatHttpClient.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/network/retrofit/NaviChatHttpClient.kt @@ -39,14 +39,14 @@ class NaviChatHttpClient(networkInfo: NetworkInfo, private val context: Context) ) } } - okHttpClientBuilder.addInterceptor(headerInterceptor) + okHttpClientBuilder.addInterceptor(customChatHeaderInterceptor) return okHttpClientBuilder } private fun loggingInterceptor() = HttpLoggingInterceptor().apply { setLevel(HttpLoggingInterceptor.Level.BODY) } - private val headerInterceptor: Interceptor + private val customChatHeaderInterceptor: Interceptor get() = Interceptor { chain -> val request = chain.request() val newRequest = diff --git a/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt b/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt index 9ab6c84083..7bafbcfe19 100644 --- a/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/CommonLibManager.kt @@ -20,6 +20,7 @@ import com.navi.common.network.converter.EmptyBodyHandlingConverterFactory import com.navi.common.network.retrofit.CommonHttpClient import com.navi.common.network.retrofit.RetrofitService import com.navi.common.upi.UpiSdkHelper +import okhttp3.Interceptor import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -37,6 +38,8 @@ object CommonLibManager { private lateinit var upiSdkHelper: UpiSdkHelper lateinit var hypervergeAppId: String lateinit var hypervergeAppKey: String + private lateinit var reactHeaderMap: Map + private lateinit var reactHeaderInterceptor: Interceptor fun init( application: Application, @@ -70,12 +73,15 @@ object CommonLibManager { timeoutInSec = ApiConstants.API_CONNECT_TIMEOUT_VALUE ) + val commonHttpClient = CommonHttpClient(networkInfo, application) commonRetrofitService = createRetrofitService( baseUrl, CommonHttpClient(networkInfo, application).httpClientBuilder ) this.applicationId = applicationId + this.reactHeaderMap = commonHttpClient.reactHeaderMapData + this.reactHeaderInterceptor = commonHttpClient.reactHeaderInterceptor authenticationRetrofitService = createAuthenticationRetrofitService( @@ -124,4 +130,12 @@ object CommonLibManager { fun getUpiSdkHelper(): UpiSdkHelper { return upiSdkHelper } + + fun getReactHeaderConfig(): Map { + return reactHeaderMap + } + + fun getHeaderInterceptorForReact(): Interceptor { + return reactHeaderInterceptor + } } diff --git a/android/navi-common/src/main/java/com/navi/common/callback/RequestToCallbackHandler.kt b/android/navi-common/src/main/java/com/navi/common/callback/RequestToCallbackHandler.kt new file mode 100644 index 0000000000..b92890c783 --- /dev/null +++ b/android/navi-common/src/main/java/com/navi/common/callback/RequestToCallbackHandler.kt @@ -0,0 +1,12 @@ +/* + * + * * Copyright © 2024 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.common.callback + +interface RequestToCallbackHandler { + fun onCallbackRaised() +} diff --git a/android/navi-common/src/main/java/com/navi/common/network/BaseHttpClient.kt b/android/navi-common/src/main/java/com/navi/common/network/BaseHttpClient.kt index b4f85ecf6c..2b7ea4a7b5 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/BaseHttpClient.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/BaseHttpClient.kt @@ -77,7 +77,7 @@ abstract class BaseHttpClient( return okHttpClientBuilder } - private val headerInterceptor: Interceptor + protected val headerInterceptor: Interceptor get() = Interceptor { chain -> var request = chain.request() val startTime = System.currentTimeMillis() @@ -154,5 +154,30 @@ abstract class BaseHttpClient( response } + protected val reactHeaderMap: Map + get() { + val headerMap: MutableMap = mutableMapOf() + if (shouldAddHeaders) { + headerMap["Content-Type"] = "application/json" + headerMap["appVersion"] = networkInfo.appVersionName + headerMap["appVersionCode"] = networkInfo.appVersionCode + headerMap["osVersion"] = "Android_" + Build.VERSION.RELEASE + headerMap["osSdkVersionCode"] = Build.VERSION.SDK_INT.toString() + headerMap["defaultLocale"] = BaseUtils.getDefaultLocale() + headerMap["deviceId"] = BaseUtils.getDeviceId(context) + headerMap[APPREQUESTID] = UUID.randomUUID().toString() + BaseUtils.getRoutingKey()?.let { headerMap[ROUTING_KEY] = it } + BaseUtils.getSessionToken()?.let { headerMap[HEADER_SESSION_TOKEN] = it } + try { + headerMap["X-Click-Stream-Data"] = NaviAnalyticsHelper.getClickStreamData() + } catch (e: Exception) { + Timber.e(e) + } + networkInfo.moduleName?.name?.let { moduleName -> headerMap[X_TARGET] = moduleName } + headerMap["source"] = "APK" + } + return headerMap + } + open fun getChildInterceptors(): List? = null } diff --git a/android/navi-common/src/main/java/com/navi/common/network/retrofit/CommonHttpClient.kt b/android/navi-common/src/main/java/com/navi/common/network/retrofit/CommonHttpClient.kt index 7bfc3e733c..8c7234af53 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/retrofit/CommonHttpClient.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/retrofit/CommonHttpClient.kt @@ -13,6 +13,7 @@ import com.chuckerteam.chucker.api.ChuckerInterceptor import com.navi.common.BuildConfig import com.navi.common.model.NetworkInfo import com.navi.common.network.BaseHttpClient +import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -40,4 +41,14 @@ class CommonHttpClient(networkInfo: NetworkInfo, private val context: Context) : private fun loggingInterceptor() = HttpLoggingInterceptor().apply { setLevel(HttpLoggingInterceptor.Level.BODY) } + + val reactHeaderMapData: Map + get() { + return reactHeaderMap + } + + val reactHeaderInterceptor: Interceptor + get() { + return headerInterceptor + } } diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt b/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt index 82a7ddfd3f..78ea5abeb5 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CommonNaviAnalytics.kt @@ -1214,6 +1214,10 @@ class CommonNaviAnalytics private constructor() { ) } + fun sendEvent(eventName: String, eventValues: Map) { + NaviTrackEvent.trackEventOnClickStream(eventName, eventValues) + } + inner class Geocoding { fun onNewGoecodingFetched(geocodingResponse: GeocodingResponse) { diff --git a/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt b/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt index 0870a2f3e4..7d5e3e5cf4 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/Constants.kt @@ -263,4 +263,7 @@ object Constants { const val MQTT_DEFAULT_PORT = 1883 const val MQTT_KEEP_ALIVE = 30 const val COMMA = "," + /* Cta_Data */ + const val KEY_CTA_DATA = "CtaData" + const val REACT_NATIVE = "react_native" } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt index d4aa980e7c..2231ab936f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/BaseBottomSheet.kt @@ -26,12 +26,12 @@ import com.google.android.material.bottomsheet.BottomSheetDialog import com.navi.alfred.AlfredManager import com.navi.alfred.utils.log import com.navi.base.utils.orTrue +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.ui.fragment.NaviAnalyticsBaseBottomSheet import com.navi.insurance.R import com.navi.insurance.common.listener.DialogCancelListener import com.navi.insurance.databinding.GiBaseBottomSheetFragmentBinding import com.navi.insurance.util.Constants -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.naviwidgets.utils.BOTTOM_SHEET import dagger.hilt.android.AndroidEntryPoint @@ -40,7 +40,7 @@ abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { private lateinit var binding: GiBaseBottomSheetFragmentBinding private var onCancelListener: DialogCancelListener? = null - var requestToCallbackHAndler: RequestToCallbackHAndler? = null + var requestToCallbackHAndler: RequestToCallbackHandler? = null var hideRectangleStrip = false override fun onResume() { @@ -59,7 +59,7 @@ abstract class BaseBottomSheet : NaviAnalyticsBaseBottomSheet() { binding.containerVs.root.minimumHeight = height } - fun setCallbackHandeler(callbackListener: RequestToCallbackHAndler?) { + fun setCallbackHandeler(callbackListener: RequestToCallbackHandler?) { requestToCallbackHAndler = callbackListener } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/TitleIconDescBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/TitleIconDescBottomSheet.kt index 51bf48abda..791a83bb95 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/TitleIconDescBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/TitleIconDescBottomSheet.kt @@ -19,6 +19,7 @@ import com.navi.base.model.AnalyticsEvent import com.navi.base.model.CtaData import com.navi.base.model.CtaType import com.navi.base.utils.orFalse +import com.navi.common.callback.RequestToCallbackHandler import com.navi.insurance.R import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.common.GiBaseBottomSheet @@ -29,7 +30,6 @@ import com.navi.insurance.health.activity.BaseActivity import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.RELOAD_PARENT_SCREEN -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.extensions.addOnMultipleClicksHandler import com.navi.naviwidgets.extensions.setImageFieldData @@ -41,14 +41,14 @@ import kotlinx.coroutines.launch @AndroidEntryPoint class TitleIconDescBottomSheet : GiBaseBottomSheet(), WidgetCallback { private lateinit var binding: TitleIconDescBottomsheetLayoutBinding - private var actionButtonHandler: RequestToCallbackHAndler? = null + private var actionButtonHandler: RequestToCallbackHandler? = null private var reloadParentScreen: Boolean = false override fun setContainerView(viewStub: ViewStub) { viewStub.layoutResource = R.layout.title_icon_desc_bottomsheet_layout binding = DataBindingUtil.getBinding(viewStub.inflate())!! val data = arguments?.getString(CONTENT_DATA_JSON_STRING) reloadParentScreen = arguments?.getString(RELOAD_PARENT_SCREEN).toBoolean().orFalse() - actionButtonHandler = activity as? RequestToCallbackHAndler + actionButtonHandler = activity as? RequestToCallbackHandler data?.let { val bottomSheetData = getJsonObject(it) bottomSheetData?.let { bottomSheetData -> initUI(bottomSheetData, binding) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt index cc3cb6b4ce..9399d9f79e 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt @@ -16,6 +16,7 @@ import com.navi.base.model.NaviClickAction import com.navi.base.utils.isNull import com.navi.base.utils.orFalse import com.navi.common.ResponseState +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.network.models.ErrorMessage import com.navi.design.utils.isValidHexColor import com.navi.insurance.R @@ -35,7 +36,6 @@ import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.Constants import com.navi.insurance.util.QUOTE_ID_EXTRA -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.insurance.util.launchHelpCenter import com.navi.naviwidgets.adapters.NaviAdapter import com.navi.naviwidgets.callbacks.WidgetCallback @@ -325,7 +325,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { ctaData = naviClickAction, bundle = bundle, finish = naviClickAction.finish.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchMemberNameDobResponse(quoteId) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/navigator/NaviInsuranceDeeplinkNavigator.kt b/android/navi-insurance/src/main/java/com/navi/insurance/navigator/NaviInsuranceDeeplinkNavigator.kt index f21a78ada0..7f7b9a09f3 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/navigator/NaviInsuranceDeeplinkNavigator.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/navigator/NaviInsuranceDeeplinkNavigator.kt @@ -20,11 +20,13 @@ import com.navi.base.utils.BaseUtils import com.navi.base.utils.orFalse import com.navi.base.utils.orZero import com.navi.common.BuildConfig +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.model.ModuleName import com.navi.common.utils.Constants import com.navi.common.utils.Constants.KEY_API_KEY import com.navi.common.utils.Constants.KEY_VIDEO_ID +import com.navi.common.utils.Constants.REACT_NATIVE import com.navi.common.utils.imageUrlTOUri import com.navi.common.utils.imageUrlToFile import com.navi.common.video.NaviYoutubeActivity @@ -127,7 +129,6 @@ import com.navi.insurance.util.Constants.KEY_CTA_DATA import com.navi.insurance.util.EMPTY import com.navi.insurance.util.EXTRA_FROM import com.navi.insurance.util.GiFirebaseRemoteConfigConstants -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.insurance.util.SOURCE import com.navi.insurance.util.ScreenshotUtil import com.navi.insurance.util.TRUE @@ -174,11 +175,12 @@ object NaviInsuranceDeeplinkNavigator { needsResult: Boolean? = null, requestCode: Int? = null, clearTask: Boolean? = false, - callbackHandler: RequestToCallbackHAndler? = null + callbackHandler: RequestToCallbackHandler? = null ) { val deepLink = ctaData.url var intent: Intent? = null - if (ctaData.type == CtaType.USE_ROOT_DEEPLINK_NAVIGATOR.value) { + if (ctaData.type == CtaType.USE_ROOT_DEEPLINK_NAVIGATOR.value || ctaData.url?.contains( + REACT_NATIVE, true) == true) { DeepLinkManager.getDeepLinkListener() ?.navigateTo( activity = activity, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt index 3ab40e40d7..c87d7809ea 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt @@ -14,6 +14,7 @@ import com.navi.base.model.* import com.navi.base.utils.isNull import com.navi.base.utils.orFalse import com.navi.common.ResponseState +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.network.models.ErrorMessage import com.navi.design.utils.isValidHexColor import com.navi.insurance.R @@ -223,7 +224,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { finish = false, needsResult = true, requestCode = Constants.PAYMENT_ACTIVITY_REQUEST_CODE, - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchPaymentReview(id, paymentFlowIdentifier) } @@ -237,7 +238,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { bundle = Bundle(), finish = it.finish.orFalse(), clearTask = it.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchPaymentReview(id, paymentFlowIdentifier) } @@ -316,7 +317,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { clearTask = naviClickAction.clearTask.orFalse(), needsResult = true, requestCode = Constants.PAYMENT_ACTIVITY_REQUEST_CODE, - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchPaymentReview(id, paymentFlowIdentifier) } @@ -328,7 +329,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { activity = activity, ctaData = naviClickAction, bundle = bundle, - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchPaymentReview(id, paymentFlowIdentifier) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt index fefae98905..0e6f8dc6d2 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt @@ -53,6 +53,7 @@ import com.navi.base.model.NaviClickAction import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse import com.navi.base.utils.orZero +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.listeners.NewBottomSheetListener import com.navi.common.network.models.ErrorMessage import com.navi.insurance.analytics.InsuranceAnalyticsConstants @@ -82,7 +83,6 @@ import com.navi.insurance.util.Constants.PRE_QUOTE_SLIDE_ANIMATION import com.navi.insurance.util.PAGE_TYPE import com.navi.insurance.util.PRE_QUOTE_ID_EXTRA import com.navi.insurance.util.QUOTE_ID_EXTRA -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.insurance.util.launchHelpCenter import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.extensions.FloatingButtonOverlay @@ -488,7 +488,7 @@ class PreQuoteJourneyFragment() : GiBaseFragment(), WidgetCallback, NewBottomShe bundle = bundle, finish = naviClickAction.finish.orFalse(), clearTask = naviClickAction.clearTask.orFalse(), - callbackHandler = object: RequestToCallbackHAndler { + callbackHandler = object: RequestToCallbackHandler { override fun onCallbackRaised() { viewModel.fetchPreQuoteJourneyResponse() } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/QuoteActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/QuoteActivity.kt index 1c9dc3a841..4b66f88463 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/QuoteActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/QuoteActivity.kt @@ -34,6 +34,7 @@ import com.navi.base.sharedpref.CommonPrefConstants.USER_EXTERNAL_ID import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse +import com.navi.common.callback.RequestToCallbackHandler import com.navi.common.juspay.HyperServicesHolder import com.navi.common.model.ModuleName import com.navi.common.network.models.ErrorMessage @@ -105,7 +106,6 @@ import com.navi.insurance.util.PRE_QUOTE_ID_EXTRA import com.navi.insurance.util.QUOTE_EDIT_MEMBER_INIT import com.navi.insurance.util.QUOTE_GENERATED_FOR_CURRENT_CHAT import com.navi.insurance.util.QUOTE_ID_EXTRA -import com.navi.insurance.util.RequestToCallbackHAndler import com.navi.insurance.util.TRUE import com.navi.insurance.util.observeNonNull import com.navi.insurance.util.showErrorMessageToast @@ -139,7 +139,7 @@ class QuoteActivity : ApiErrorHandler, ResetPopupBottomSheet.ResetBottomSheetListener, AnalyticsEventHandler, - ActionHandler.ActionOwner, ActionButtonHandler, RequestToCallbackHAndler { + ActionHandler.ActionOwner, ActionButtonHandler, RequestToCallbackHandler { private lateinit var binding: ActivityLayoutBinding private var isMandateAllowed = false @@ -279,7 +279,7 @@ class QuoteActivity : ctaData, finish = ctaData.finish.orFalse(), clearTask = ctaData.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { quoteViewModel.fetchQuoteResponse(true) } @@ -427,7 +427,7 @@ class QuoteActivity : ctaData = backCtaData, finish = backCtaData.finish.orFalse(), clearTask = backCtaData.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { quoteViewModel.fetchQuoteResponse(true) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt index f24180e074..0907595dda 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt @@ -26,6 +26,7 @@ import com.navi.base.model.CtaType import com.navi.base.model.NaviClickAction import com.navi.base.utils.orFalse import com.navi.base.utils.orTrue +import com.navi.common.callback.RequestToCallbackHandler import com.navi.insurance.R import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.analytics.InsuranceAnalyticsHandler @@ -286,7 +287,7 @@ class PolicyAddonFragment : BaseFragment(), WidgetCallback, View.OnClickListener naviClickAction, finish = naviClickAction.finish.orTrue(), clearTask = naviClickAction.clearTask.orFalse(), - callbackHandler = object : RequestToCallbackHAndler { + callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { fetchAddons() } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/ActionButtonHandler.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/ActionButtonHandler.kt index ac1b66457b..d948a5fd66 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/ActionButtonHandler.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/ActionButtonHandler.kt @@ -6,8 +6,4 @@ import com.navi.naviwidgets.callbacks.WidgetCallback interface ActionButtonHandler { fun showActionButton(callbackData: CallbackData, widgetCallback: WidgetCallback?) fun hideActionButton() -} - -interface RequestToCallbackHAndler { - fun onCallbackRaised() } \ No newline at end of file diff --git a/android/navi_hl_dynamic/build.gradle b/android/navi_hl_dynamic/build.gradle index bf8bd3c99f..ef6f1515eb 100644 --- a/android/navi_hl_dynamic/build.gradle +++ b/android/navi_hl_dynamic/build.gradle @@ -78,6 +78,9 @@ dependencies { testImplementation libs.junit testImplementation libs.kotlinx.coroutines.test testImplementation libs.mockk + + implementation "com.facebook.react:react-android" + implementation "com.facebook.react:hermes-android" } kapt { diff --git a/android/navi_pl_dynamic/build.gradle b/android/navi_pl_dynamic/build.gradle index b75f0e2fdb..395c3c3118 100644 --- a/android/navi_pl_dynamic/build.gradle +++ b/android/navi_pl_dynamic/build.gradle @@ -71,4 +71,7 @@ dependencies { androidTestImplementation libs.androidx.test.junit testImplementation libs.junit + + implementation "com.facebook.react:react-android" + implementation "com.facebook.react:hermes-android" } diff --git a/android/sentry.properties b/android/sentry.properties new file mode 100644 index 0000000000..8135bddb16 --- /dev/null +++ b/android/sentry.properties @@ -0,0 +1,6 @@ +auth.token=a7f02d186f752bb400b6624ffa8770ab0e88fbe982985d6eef3e9e0de2446a43 + +defaults.org=navi-6d +defaults.project=react-native + +defaults.url=https://sentry.io/ \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index d58a3e1441..bf7a50eb06 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -10,6 +10,7 @@ pluginManagement { } } +includeBuild('../node_modules/@react-native/gradle-plugin') rootProject.name = 'super-app' include ':app' @@ -36,6 +37,7 @@ include ':navi-bbps' include ':npci-upi-cl' include ':navi-ap' include ':navi-mqtt' +include ':react-native-code-push' project(':navi-ap').projectDir = new File(settingsDir, './application-platform/navi-ap') @@ -53,3 +55,6 @@ buildCache { url = "https://gradle-cache.cmd.navi-tech.in/cache/" } } + +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app') diff --git a/assets/colors/colors.ts b/assets/colors/colors.ts new file mode 100644 index 0000000000..986510fc13 --- /dev/null +++ b/assets/colors/colors.ts @@ -0,0 +1,15 @@ +const Colors = { + aliceBlue: "#F3F7FF", + transparent: "transparent", + hawkesBlue: "#BED7FF", + powderBlue: "#DDEAFF", + lightGray: "#EBEBEB", + white: "#FFFFFF", + blue: "#0000FF", + grey: "#FAFAFA", + lightBlue: "#EAF2FF", + shimmerBgColor: "#E9E7F0", + shimmerHighlightColor: "#F5F5F8", +}; + +export default Colors; diff --git a/assets/fonts/tt_medium.ttf b/assets/fonts/tt_medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..77eb3e2529fb559572a5793d304006df04353fda GIT binary patch literal 140240 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