diff --git a/CustomerApp/.DS_Store b/CustomerApp/.DS_Store
new file mode 100644
index 0000000..985e3e8
Binary files /dev/null and b/CustomerApp/.DS_Store differ
diff --git a/CustomerApp/.expo/README.md b/CustomerApp/.expo/README.md
new file mode 100644
index 0000000..fd146b4
--- /dev/null
+++ b/CustomerApp/.expo/README.md
@@ -0,0 +1,15 @@
+> Why do I have a folder named ".expo" in my project?
+
+The ".expo" folder is created when an Expo project is started using "expo start" command.
+
+> What do the files contain?
+
+- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds.
+- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator.
+- "settings.json": contains the server configuration that is used to serve the application manifest.
+
+> Should I commit the ".expo" folder?
+
+No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.
+
+Upon project creation, the ".expo" folder is already added to your ".gitignore" file.
diff --git a/CustomerApp/.expo/devices.json b/CustomerApp/.expo/devices.json
new file mode 100644
index 0000000..5efff6c
--- /dev/null
+++ b/CustomerApp/.expo/devices.json
@@ -0,0 +1,3 @@
+{
+ "devices": []
+}
diff --git a/CustomerApp/.expo/settings.json b/CustomerApp/.expo/settings.json
new file mode 100644
index 0000000..92bc513
--- /dev/null
+++ b/CustomerApp/.expo/settings.json
@@ -0,0 +1,8 @@
+{
+ "hostType": "lan",
+ "lanType": "ip",
+ "dev": true,
+ "minify": false,
+ "urlRandomness": null,
+ "https": false
+}
diff --git a/CustomerApp/.gitignore b/CustomerApp/.gitignore
new file mode 100644
index 0000000..30bc162
--- /dev/null
+++ b/CustomerApp/.gitignore
@@ -0,0 +1 @@
+/node_modules
\ No newline at end of file
diff --git a/CustomerApp/.npmrc b/CustomerApp/.npmrc
new file mode 100644
index 0000000..e9ee3cb
--- /dev/null
+++ b/CustomerApp/.npmrc
@@ -0,0 +1 @@
+legacy-peer-deps=true
\ No newline at end of file
diff --git a/CustomerApp/App.js b/CustomerApp/App.js
new file mode 100644
index 0000000..ea81e9f
--- /dev/null
+++ b/CustomerApp/App.js
@@ -0,0 +1,151 @@
+import { ApolloProvider } from '@apollo/react-hooks'
+import * as Font from 'expo-font'
+import * as Location from 'expo-location'
+import * as Notifications from 'expo-notifications'
+import * as SplashScreen from 'expo-splash-screen'
+import React, { useEffect, useState } from 'react'
+import {
+ ActivityIndicator,
+ BackHandler,
+ Platform,
+ StatusBar,
+ StyleSheet,
+ useColorScheme,
+ View
+} from 'react-native'
+import FlashMessage from 'react-native-flash-message'
+import i18n from './i18n'
+import setupApolloClient from './src/apollo/index'
+import { ConfigurationProvider } from './src/context/Configuration'
+import { UserProvider } from './src/context/User'
+import AppContainer from './src/routes'
+import { AnimatedSplash } from './src/screens'
+import { COLORS, THEME } from './src/Theme'
+import { exitAlert } from './src/utils/androidBackButton'
+import { requestTrackingPermissions } from './src/utils/useAppTrackingTransparency'
+
+SplashScreen.preventAutoHideAsync().catch(() => {})
+
+export default function App() {
+ const colorScheme = useColorScheme()
+ const isDark = colorScheme === 'dark'
+ const [fontLoaded, setFontLoaded] = useState(false)
+ const [client, setupClient] = useState(null)
+
+ useEffect(() => {
+ requestTrackingPermissions()
+ }, [])
+ useEffect(() => {
+ loadAppData()
+ return () => {
+ BackHandler.removeEventListener('hardwareBackPress', exitAlert)
+ }
+ }, [])
+
+ async function loadAppData() {
+ const client = await setupApolloClient()
+
+ setupClient(client)
+ await i18n.initAsync()
+ // load fonts
+ await Font.loadAsync({
+ Poppin300: require('./src/assets/font/Poppin/Poppins-Light.ttf'),
+ Poppin400: require('./src/assets/font/Poppin/Poppins-Regular.ttf'),
+ Poppin500: require('./src/assets/font/Poppin/Poppins-Medium.ttf'),
+ Poppin600: require('./src/assets/font/Poppin/Poppins-SemiBold.ttf'),
+ Poppin700: require('./src/assets/font/Poppin/Poppins-Bold.ttf'),
+ icomoon: require('./src/assets/font/icomoon.ttf')
+ })
+
+ await permissionForLocationAsync()
+ await permissionForPushNotificationsAsync()
+
+ BackHandler.addEventListener('hardwareBackPress', exitAlert)
+ setFontLoaded(true)
+ }
+
+ async function permissionForPushNotificationsAsync() {
+ const { status: existingStatus } = await Notifications.getPermissionsAsync()
+ let finalStatus = existingStatus
+ // only ask if permissions have not already been determined, because
+ // iOS won't necessarily prompt the user a second time.
+ if (existingStatus !== 'granted') {
+ // Android remote notification permissions are granted during the app
+ // install, so this will only ask on iOS
+ const { status } = await Notifications.requestPermissionsAsync()
+ finalStatus = status
+ }
+
+ // Stop here if the user did not grant permissions
+ if (finalStatus !== 'granted') {
+ return
+ }
+
+ if (Platform.OS === 'android') {
+ Notifications.setNotificationChannelAsync('default', {
+ name: 'default',
+ sound: true,
+ priority: 'max',
+ importance: Notifications.AndroidImportance.HIGH,
+ vibrate: [0, 250, 250, 250],
+ lightColor: COLORS.primary
+ })
+ }
+ }
+ async function permissionForLocationAsync() {
+ const { status: existingStatus } =
+ await Location.getForegroundPermissionsAsync()
+ // only ask if permissions have not already been determined, because
+ // iOS won't necessarily prompt the user a second time.
+ if (existingStatus !== 'granted') {
+ // Android location permissions are granted during the app
+ // install, so this will only ask on iOS
+ const { status } = await Location.requestForegroundPermissionsAsync()
+ // eslint-disable-next-line no-undef
+ finalStatus = status
+ }
+ }
+
+ if (fontLoaded && client) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ )
+ } else {
+ return (
+
+
+
+ )
+ }
+}
+
+const styles = StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mainContainer: {
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+})
diff --git a/CustomerApp/app.json b/CustomerApp/app.json
new file mode 100644
index 0000000..c52d515
--- /dev/null
+++ b/CustomerApp/app.json
@@ -0,0 +1,83 @@
+{
+ "expo": {
+ "name": "Enatega",
+ "version": "1.0.16",
+ "scheme": "enategasinglevendor",
+ "description": "Enatega is a starter kit food ordering app built in React Native using Expo for IOS and Android. It's made keeping good aesthetics in mind as well keeping the best coding practices in mind. Its fully customisable to easily help you in your next food delivery project. https://market.nativebase.io/view/react-native-food-delivery-backend-app",
+ "slug": "enategasinglevendor",
+ "privacy": "public",
+ "androidStatusBar": {
+ "backgroundColor": "#000"
+ },
+ "platforms": [
+ "ios",
+ "android"
+ ],
+ "orientation": "portrait",
+ "icon": "./assets/icon.png",
+ "splash": {
+ "image": "./assets/splash.png",
+ "resizeMode": "cover",
+ "backgroundColor": "#febb2c"
+ },
+ "updates": {
+ "fallbackToCacheTimeout": 0
+ },
+ "assetBundlePatterns": [
+ "**/*"
+ ],
+ "ios": {
+ "supportsTablet": true,
+ "bundleIdentifier": "com.enatega.vendor",
+ "config": {
+ "googleMapsApiKey": ""
+ },
+ "usesAppleSignIn": true,
+ "infoPlist": {
+ "NSLocationWhenInUseUsageDescription": "This app uses the location to determine the delivery address for your orders.",
+ "NSUserTrackingUsageDescription": "Allow this app to collect app-related data that can be used for tracking you or your device."
+ }
+ },
+ "notification": {
+ "iosDisplayInForeground": true,
+ "color": "#d83765",
+ "icon": "./assets/not-icon.png",
+ "androidMode": "default",
+ "androidCollapsedTitle": "Enatega"
+ },
+ "android": {
+ "versionCode": 22,
+ "package": "com.enatega.vendor",
+ "googleServicesFile": "./google-services-prod.json",
+ "config": {
+ "googleMaps": {
+ "apiKey": ""
+ }
+ },
+ "adaptiveIcon": {
+ "foregroundImage": "./assets/adaptive-icon.png",
+ "backgroundColor": "#febb2c"
+ },
+ "permissions": [
+ "ACCESS_FINE_LOCATION",
+ "ACCESS_COARSE_LOCATION"
+ ]
+ },
+ "plugins": [
+ [
+ "expo-tracking-transparency",
+ {
+ "userTrackingPermission": "Allow this app to collect app-related data that can be used for tracking you or your device."
+ }
+ ]
+ ],
+ "facebookScheme": "fb3017447961609878",
+ "facebookAppId": "3017447961609878",
+ "facebookDisplayName": "Food delivery",
+ "extra": {
+ "eas": {
+ "projectId": "0b51ea6b-d9fd-48e2-9480-54149ca73a7a"
+ }
+ }
+ }
+}
diff --git a/CustomerApp/assets/.DS_Store b/CustomerApp/assets/.DS_Store
new file mode 100644
index 0000000..c6776ac
Binary files /dev/null and b/CustomerApp/assets/.DS_Store differ
diff --git a/CustomerApp/assets/adaptive-icon.png b/CustomerApp/assets/adaptive-icon.png
new file mode 100644
index 0000000..13e2831
Binary files /dev/null and b/CustomerApp/assets/adaptive-icon.png differ
diff --git a/CustomerApp/assets/burger.png b/CustomerApp/assets/burger.png
new file mode 100644
index 0000000..2f2788a
Binary files /dev/null and b/CustomerApp/assets/burger.png differ
diff --git a/CustomerApp/assets/icon.png b/CustomerApp/assets/icon.png
new file mode 100644
index 0000000..9b763a8
Binary files /dev/null and b/CustomerApp/assets/icon.png differ
diff --git a/CustomerApp/assets/logo.png b/CustomerApp/assets/logo.png
new file mode 100644
index 0000000..ab0d868
Binary files /dev/null and b/CustomerApp/assets/logo.png differ
diff --git a/CustomerApp/assets/not-icon.png b/CustomerApp/assets/not-icon.png
new file mode 100644
index 0000000..53c7d7c
Binary files /dev/null and b/CustomerApp/assets/not-icon.png differ
diff --git a/CustomerApp/assets/profile.png b/CustomerApp/assets/profile.png
new file mode 100644
index 0000000..6c4e593
Binary files /dev/null and b/CustomerApp/assets/profile.png differ
diff --git a/CustomerApp/assets/splash.png b/CustomerApp/assets/splash.png
new file mode 100644
index 0000000..5b0b3ea
Binary files /dev/null and b/CustomerApp/assets/splash.png differ
diff --git a/CustomerApp/assets/transparent-icon.png b/CustomerApp/assets/transparent-icon.png
new file mode 100644
index 0000000..b1f3b47
Binary files /dev/null and b/CustomerApp/assets/transparent-icon.png differ
diff --git a/CustomerApp/babel.config.js b/CustomerApp/babel.config.js
new file mode 100644
index 0000000..b7c79d4
--- /dev/null
+++ b/CustomerApp/babel.config.js
@@ -0,0 +1,10 @@
+module.exports = function (api) {
+ api.cache(true);
+ return {
+ presets: ["babel-preset-expo"],
+ plugins: [
+ "react-native-reanimated/plugin",
+ "@babel/plugin-syntax-dynamic-import",
+ ],
+ };
+};
diff --git a/CustomerApp/eas.json b/CustomerApp/eas.json
new file mode 100644
index 0000000..c1098c4
--- /dev/null
+++ b/CustomerApp/eas.json
@@ -0,0 +1,38 @@
+{
+ "cli": {
+ "version": ">= 3.8.0"
+ },
+ "build": {
+ "development": {
+ "developmentClient": true,
+ "distribution": "internal",
+ "android": {
+ "buildType": "apk"
+ },
+ "ios": {
+ "resourceClass": "m-medium"
+ }
+ },
+ "preview": {
+ "distribution": "internal",
+ "ios": {
+ "resourceClass": "m-medium"
+ }
+ },
+ "production": {
+ "developmentClient": false,
+ "releaseChannel": "production",
+ "distribution": "store",
+ "android": {
+ "buildType": "apk"
+ },
+ "ios": {
+ "buildConfiguration": "Debug",
+ "image": "latest"
+ }
+ }
+ },
+ "submit": {
+ "production": {}
+ }
+}
diff --git a/CustomerApp/enategaprod_upload_cert.pem b/CustomerApp/enategaprod_upload_cert.pem
new file mode 100644
index 0000000..e5efedf
--- /dev/null
+++ b/CustomerApp/enategaprod_upload_cert.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDRTCCAi2gAwIBAgIERu0DYTANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJV
+UzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMRgw
+FgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwHhcNMTkwNzI2MDg0NzEyWhcNNDYxMjEx
+MDg0NzEyWjBTMQswCQYDVQQGEwJVUzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAH
+BgNVBAoTADEJMAcGA1UECxMAMRgwFgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChW6yOHftMY4PZYS/1VK72o0mj
+TMxVrolnwN46QrCkwX3MTC5Rf014MCOfWjRpbeCnL/ZFW5hMu1gfZhI3cU6n8kKi
+3xkhIgtxoaGecC594WzOJfFNhNuHbdJTp4KlPli8k1CiWSxzddnxDaJX1zLh4vbp
+Z1czC0k7HY6Muhpd7WCC1uwcp0UzCm1ej7LZqYPuUzwieW0V/ASMdS9yWri4LyIO
+DA6nFbDdvCJrupL0C8RQjACCRMLwGx2l3zMlWe3nDa4ZyMRW6cdSsQA6QvlwxVeK
+6I40S8fYsUf68/QZrnBwTV9yyJ78bIpF+9zF3b7kcv7tXAKkcuoQcd/70e79AgMB
+AAGjITAfMB0GA1UdDgQWBBQ71L/oHvSkF0v65nI4B1iVLSFcfDANBgkqhkiG9w0B
+AQsFAAOCAQEAlzMU9jy1oCtrxeucJcx5LU2+4Np/pdhfofivK3W6cLJ6yqAvKxNC
+cmO+4mwG8O9s5bYtscB7+n9u1JYNOGMtyzAbjW2tzysaPU9EPatD+oAQznU1ur28
+v5YCTmS1tv4wRsYkjYGI+S+XQ+qi/wuNith2te1qoUfdl4/JCIA8kw7XPU9eLkDE
+r3RrsZXV7NTIo2f2nnTeJWz9QFtERevQlgpwOnCqmqvPKV3n52sH5R/8g3xjiL1W
+wP1JHGErSFGVbctYH6HTsHQkAfmzPeK7UOfB+kR70dXkPKdw3u+pdv8jzaRO9gpq
+H97r6aLCoyB53CJ+6w51DSl1eAKMGK7Tcg==
+-----END CERTIFICATE-----
diff --git a/CustomerApp/environment.js b/CustomerApp/environment.js
new file mode 100644
index 0000000..666fa4c
--- /dev/null
+++ b/CustomerApp/environment.js
@@ -0,0 +1,65 @@
+/*****************************
+ * environment.js
+ * path: '/environment.js' (root of your project)
+ ******************************/
+
+import Constants from "expo-constants";
+
+const ENV = {
+ development: {
+ GRAPHQL_URL: "http://10.97.28.88.90:8000/graphql",
+ WS_GRAPHQL_URL: "ws://10.97.28.88.90:8000/graphql",
+ SERVER_URL: "http://10.97.28.88.90:8000/", // put / at the end of server url
+ IOS_CLIENT_ID_GOOGLE: "",
+ ANDROID_CLIENT_ID_GOOGLE: "",
+ FACEBOOK_APP_ID: "404956210315749",
+ AMPLITUDE_API_KEY: "",
+ STRIPE_PUBLIC_KEY: "",
+ STRIPE_IMAGE_URL: "http://10.97.28.88.90:8000/assets/images/logo.png",
+ STRIPE_STORE_NAME: "Enatega",
+ },
+ staging: {
+ GRAPHQL_URL: "https://staging-enatega-single-api.herokuapp.com/graphql",
+ WS_GRAPHQL_URL: "wss://staging-enatega-single-api.herokuapp.com/graphql",
+ SERVER_URL: "https://staging-enatega-single-api.herokuapp.com/", // put / at the end of server url
+ IOS_CLIENT_ID_GOOGLE: "",
+ ANDROID_CLIENT_ID_GOOGLE: "",
+ FACEBOOK_APP_ID: "404956210315749",
+ AMPLITUDE_API_KEY: "",
+ STRIPE_PUBLIC_KEY: "",
+ STRIPE_IMAGE_URL:
+ "https://staging-enatega-single-api.herokuapp.com/assets/images/logo.png",
+ STRIPE_STORE_NAME: "Enatega",
+ },
+ production: {
+ GRAPHQL_URL: "https://prod-enatega-single-api.herokuapp.com/graphql",
+ WS_GRAPHQL_URL: "wss://prod-enatega-single-api.herokuapp.com/graphql",
+ SERVER_URL: "https://prod-enatega-single-api.herokuapp.com/", // put / at the end of server url
+ IOS_CLIENT_ID_GOOGLE: "",
+ ANDROID_CLIENT_ID_GOOGLE: "",
+ FACEBOOK_APP_ID: "3017447961609878",
+ AMPLITUDE_API_KEY: "",
+ STRIPE_PUBLIC_KEY: "",
+ STRIPE_IMAGE_URL:
+ "https://prod-enatega-single-api.herokuapp.com/assets/images/logo.png",
+ STRIPE_STORE_NAME: "Enatega",
+ },
+};
+
+const getEnvVars = (env = Constants.manifest.releaseChannel) => {
+ // What is __DEV__ ?
+ // This variable is set to true when react-native is running in Dev mode.
+ // __DEV__ is true when run locally, but false when published.
+ // eslint-disable-next-line no-undef
+ if (__DEV__) {
+ return ENV.development;
+ } else if (env === "production") {
+ return ENV.production;
+ } else if (env === "staging") {
+ return ENV.staging;
+ } else {
+ return ENV.production;
+ }
+};
+
+export default getEnvVars;
diff --git a/CustomerApp/environment.js.example b/CustomerApp/environment.js.example
new file mode 100644
index 0000000..63be348
--- /dev/null
+++ b/CustomerApp/environment.js.example
@@ -0,0 +1,46 @@
+/*****************************
+* environment.js
+* path: '/environment.js' (root of your project)
+******************************/
+
+import Constants from 'expo-constants';
+
+const ENV = {
+ development: {
+ GRAPHQL_URL:'' ,
+ SERVER_URL: '', // put / at the end of server url
+ IOS_CLIENT_ID_GOOGLE: "",
+ ANDROID_CLIENT_ID_GOOGLE: "",
+ FACEBOOK_APP_ID: "",
+ AMPLITUDE_API_KEY: "",
+ STRIPE_PUBLIC_KEY: "",
+ STRIPE_IMAGE_URL: "",
+ STRIPE_STORE_NAME: ""
+ },
+ production: {
+ GRAPHQL_URL:'' ,
+ SERVER_URL: '', // put / at the end of server url
+ IOS_CLIENT_ID_GOOGLE: "",
+ ANDROID_CLIENT_ID_GOOGLE: "",
+ FACEBOOK_APP_ID: "",
+ AMPLITUDE_API_KEY: "",
+ STRIPE_PUBLIC_KEY: "",
+ STRIPE_IMAGE_URL: "",
+ STRIPE_STORE_NAME: ""
+ }
+};
+
+const getEnvVars = (env = Constants.manifest.releaseChannel) => {
+ // What is __DEV__ ?
+ // This variable is set to true when react-native is running in Dev mode.
+ // __DEV__ is true when run locally, but false when published.
+ if (__DEV__) {
+ return ENV.development;
+ } else if (env === 'production') {
+ return ENV.production;
+ } else {
+ return ENV.development;
+ }
+};
+
+export default getEnvVars;
\ No newline at end of file
diff --git a/CustomerApp/google-services-prod-old.json b/CustomerApp/google-services-prod-old.json
new file mode 100644
index 0000000..0e3e687
--- /dev/null
+++ b/CustomerApp/google-services-prod-old.json
@@ -0,0 +1,47 @@
+{
+ "project_info": {
+ "project_number": "94983896797",
+ "firebase_url": "https://enatega-production.firebaseio.com",
+ "project_id": "enatega-production",
+ "storage_bucket": "enatega-production.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:94983896797:android:537c4eadfd11cf33",
+ "android_client_info": {
+ "package_name": "com.enatega.app"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "94983896797-irt6u2cmq2sjcp7j1rj9m9pqptjd12ue.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.enatega.app"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/CustomerApp/google-services-prod.json b/CustomerApp/google-services-prod.json
new file mode 100644
index 0000000..b96b2ea
--- /dev/null
+++ b/CustomerApp/google-services-prod.json
@@ -0,0 +1,47 @@
+{
+ "project_info": {
+ "project_number": "94983896797",
+ "firebase_url": "https://enatega-production.firebaseio.com",
+ "project_id": "enatega-production",
+ "storage_bucket": "enatega-production.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:94983896797:android:5b28fe2925a51512112534",
+ "android_client_info": {
+ "package_name": "com.enatega.vendor"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "94983896797-osn1lglcn3f03a4dqpf1vl2rcogca8vp.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.enatega.app"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/CustomerApp/google-services.json b/CustomerApp/google-services.json
new file mode 100644
index 0000000..49e92fc
--- /dev/null
+++ b/CustomerApp/google-services.json
@@ -0,0 +1,40 @@
+{
+ "project_info": {
+ "project_number": "346954645996",
+ "firebase_url": "https://enatega-4d403.firebaseio.com",
+ "project_id": "enatega-4d403",
+ "storage_bucket": "enatega-4d403.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:346954645996:android:f968efbb41d1fa7a",
+ "android_client_info": {
+ "package_name": "host.exp.exponent"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCFfJ4RHfakMqvp_QsIHkfWcpeYrxtk8j0"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/CustomerApp/i18n.js b/CustomerApp/i18n.js
new file mode 100644
index 0000000..c94d2a7
--- /dev/null
+++ b/CustomerApp/i18n.js
@@ -0,0 +1,23 @@
+import AsyncStorage from '@react-native-async-storage/async-storage'
+import * as Localization from 'expo-localization'
+import i18n from 'i18n-js'
+import { Platform } from 'react-native'
+import { de } from './translations/de'
+import { en } from './translations/en'
+import { fr } from './translations/fr'
+import { km } from './translations/km'
+import { zh } from './translations/zh'
+
+i18n.initAsync = async() => {
+ i18n.fallbacks = true
+ i18n.translations = { fr, en, km, zh, de }
+ // i18n.locale = 'km'
+ if (Platform.OS === 'android') {
+ const lang = await AsyncStorage.getItem('enatega-language')
+ i18n.locale = lang || 'en'
+ } else {
+ i18n.locale = Localization.locale
+ }
+}
+
+export default i18n
diff --git a/CustomerApp/index.js b/CustomerApp/index.js
new file mode 100644
index 0000000..1d6e981
--- /dev/null
+++ b/CustomerApp/index.js
@@ -0,0 +1,8 @@
+import { registerRootComponent } from 'expo';
+
+import App from './App';
+
+// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
+// It also ensures that whether you load the app in Expo Go or in a native build,
+// the environment is set up appropriately
+registerRootComponent(App);
diff --git a/CustomerApp/metro.config.js b/CustomerApp/metro.config.js
new file mode 100644
index 0000000..9430b0f
--- /dev/null
+++ b/CustomerApp/metro.config.js
@@ -0,0 +1,4 @@
+// Learn more https://docs.expo.io/guides/customizing-metro
+const { getDefaultConfig } = require('expo/metro-config');
+
+module.exports = getDefaultConfig(__dirname);
diff --git a/CustomerApp/package-lock.json b/CustomerApp/package-lock.json
new file mode 100644
index 0000000..eff6d35
--- /dev/null
+++ b/CustomerApp/package-lock.json
@@ -0,0 +1,22647 @@
+{
+ "name": "enatega-full-app",
+ "version": "5.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "enatega-full-app",
+ "version": "5.0.0",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@amplitude/analytics-react-native": "^1.1.1",
+ "@apollo/react-hooks": "^3.1.3",
+ "@expo/vector-icons": "^13.0.0",
+ "@ptomasroos/react-native-multi-slider": "^2.2.2",
+ "@react-native-async-storage/async-storage": "~1.17.3",
+ "@react-native-community/masked-view": "0.1.11",
+ "@react-navigation/drawer": "^6.6.0",
+ "@react-navigation/native": "^6.1.4",
+ "@react-navigation/native-stack": "^6.9.10",
+ "@react-navigation/stack": "^6.3.14",
+ "apollo-boost": "^0.4.9",
+ "apollo-cache-inmemory": "^1.5.1",
+ "apollo-cache-persist": "^0.1.1",
+ "apollo-client": "^2.5.1",
+ "apollo-link-context": "^1.0.17",
+ "apollo-link-http": "^1.5.14",
+ "apollo-link-state": "^0.4.2",
+ "apollo-link-ws": "^1.0.20",
+ "apollo-upload-client": "^10.0.0",
+ "apollo-utilities": "^1.3.4",
+ "deprecated-react-native-prop-types": "^4.0.0",
+ "expo": "^47.0.12",
+ "expo-app-loading": "~2.1.1",
+ "expo-apple-authentication": "~5.0.1",
+ "expo-application": "~5.0.1",
+ "expo-asset": "~8.7.0",
+ "expo-auth-session": "^3.8.0",
+ "expo-camera": "~13.1.0",
+ "expo-constants": "~14.0.2",
+ "expo-contacts": "~11.0.1",
+ "expo-device": "~5.0.0",
+ "expo-font": "~11.0.1",
+ "expo-image-picker": "~14.0.2",
+ "expo-linking": "~3.3.1",
+ "expo-localization": "~14.0.0",
+ "expo-location": "~15.0.1",
+ "expo-notifications": "~0.17.0",
+ "expo-random": "~13.0.0",
+ "expo-sensors": "~12.0.1",
+ "expo-splash-screen": "~0.17.5",
+ "expo-status-bar": "~1.4.2",
+ "expo-tracking-transparency": "~3.0.1",
+ "expo-updates": "~0.15.6",
+ "graphql": "^16.6.0",
+ "graphql-tag": "^2.10.1",
+ "i18n-js": "^3.2.2",
+ "lodash": "^4.17.21",
+ "patch-package": "^6.5.1",
+ "react": "18.1.0",
+ "react-apollo": "^3.1.5",
+ "react-native": "0.70.5",
+ "react-native-button": "^3.0.1",
+ "react-native-flash-message": "^0.4.0",
+ "react-native-flatlist-slider": "^1.0.5",
+ "react-native-gesture-handler": "~2.8.0",
+ "react-native-gifted-chat": "^1.1.1",
+ "react-native-maps": "1.3.2",
+ "react-native-material-textfield": "^0.16.1",
+ "react-native-modal": "^13.0.1",
+ "react-native-modalize": "^2.0.8",
+ "react-native-reanimated": "~2.9.1",
+ "react-native-safe-area-context": "4.4.1",
+ "react-native-screens": "~3.18.0",
+ "react-native-star-rating": "^1.1.0",
+ "react-native-svg": "13.4.0",
+ "react-native-timeline-flatlist": "^0.8.0",
+ "react-native-webview": "11.23.1",
+ "subscriptions-transport-ws": "^0.11.0",
+ "uuid": "^3.3.2",
+ "validate.js": "^0.13.1"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.12.9",
+ "babel-jest": "^29.4.3",
+ "babel-preset-expo": "~9.2.1",
+ "babel-preset-react-native": "^4.0.1",
+ "eslint": "^8.34.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.20.2",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.20.0",
+ "eslint-plugin-standard": "^5.0.0",
+ "husky": "^8.0.3",
+ "jest": "^29.4.3",
+ "jest-react-native": "^18.0.0",
+ "lint-staged": "^13.1.2",
+ "metro-react-native-babel-preset": "^0.75.0",
+ "prettier": "^2.3.1",
+ "prettier-config-standard": "^5.0.0",
+ "react-test-renderer": "^18.2.0"
+ }
+ },
+ "node_modules/@amplitude/analytics-client-common": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@amplitude/analytics-client-common/-/analytics-client-common-0.6.1.tgz",
+ "integrity": "sha512-P9Zb1xfmbYMFy3QPfY7G+wwvbvTsfIOS5BOWSUiig+P9PduRwxslPe1Uscns0is6SaHcqIqrw47uuH58FEmmcg==",
+ "dependencies": {
+ "@amplitude/analytics-connector": "^1.4.5",
+ "@amplitude/analytics-core": "^0.12.0",
+ "@amplitude/analytics-types": "^0.17.0",
+ "tslib": "^2.4.1"
+ }
+ },
+ "node_modules/@amplitude/analytics-connector": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/@amplitude/analytics-connector/-/analytics-connector-1.4.6.tgz",
+ "integrity": "sha512-6jD2pOosRD4y8DT8StUCz7yTd5ZDkdOU9/AWnlWKM5qk90Mz7sdZrdZ9H7sA/L3yOJEpQOYZgQplQdWWUzyWug==",
+ "dependencies": {
+ "@amplitude/ua-parser-js": "0.7.31"
+ }
+ },
+ "node_modules/@amplitude/analytics-core": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@amplitude/analytics-core/-/analytics-core-0.12.0.tgz",
+ "integrity": "sha512-Qg5own7VApdEOUtOnKwk7vFKbXubZ/YBQq0COYK+QFMCp0eF1xwLLLEiE4ThYiq49EwptvinH/bziU6IMi205g==",
+ "dependencies": {
+ "@amplitude/analytics-types": "^0.17.0",
+ "tslib": "^2.4.1"
+ }
+ },
+ "node_modules/@amplitude/analytics-react-native": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@amplitude/analytics-react-native/-/analytics-react-native-1.1.1.tgz",
+ "integrity": "sha512-ybbpCUzjGO1E04J58TOi0vn2YMpCYSiq+nESkV6eVwZ5pyVmiYgtLvdkUg9Kr+vtR78ocD6S5HXKCFTER+cCcA==",
+ "dependencies": {
+ "@amplitude/analytics-client-common": "^0.6.1",
+ "@amplitude/analytics-core": "^0.12.0",
+ "@amplitude/analytics-types": "^0.17.0",
+ "@amplitude/ua-parser-js": "^0.7.31",
+ "@react-native-async-storage/async-storage": "^1.17.11",
+ "tslib": "^2.4.1"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@amplitude/analytics-types": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@amplitude/analytics-types/-/analytics-types-0.17.0.tgz",
+ "integrity": "sha512-J6JdlUkYPaOInsqYBBOjxwhYi+3ZFl+ICE6yG/1SySX/Eu7a7jAJbBbrH1HrYk+0Hzl5sdO/WA2zhHi0j00qTQ=="
+ },
+ "node_modules/@amplitude/ua-parser-js": {
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/@amplitude/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
+ "integrity": "sha512-+z8UGRaj13Pt5NDzOnkTBy49HE2CX64jeL0ArB86HAtilpnfkPB7oqkigN7Lf2LxscMg4QhFD7mmCfedh3rqTg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@apollo/react-common": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@apollo/react-common/-/react-common-3.1.4.tgz",
+ "integrity": "sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==",
+ "dependencies": {
+ "ts-invariant": "^0.4.4",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0",
+ "apollo-client": "^2.6.4",
+ "apollo-utilities": "^1.3.2",
+ "graphql": "^14.3.1",
+ "react": "^16.8.0"
+ }
+ },
+ "node_modules/@apollo/react-common/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@apollo/react-components": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@apollo/react-components/-/react-components-3.1.5.tgz",
+ "integrity": "sha512-c82VyUuE9VBnJB7bnX+3dmwpIPMhyjMwyoSLyQWPHxz8jK4ak30XszJtqFf4eC4hwvvLYa+Ou6X73Q8V8e2/jg==",
+ "dependencies": {
+ "@apollo/react-common": "^3.1.4",
+ "@apollo/react-hooks": "^3.1.5",
+ "prop-types": "^15.7.2",
+ "ts-invariant": "^0.4.4",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0",
+ "apollo-cache": "^1.3.2",
+ "apollo-client": "^2.6.4",
+ "apollo-link": "^1.2.12",
+ "apollo-utilities": "^1.3.2",
+ "graphql": "^14.3.1",
+ "react": "^16.8.0",
+ "react-dom": "^16.8.0"
+ }
+ },
+ "node_modules/@apollo/react-components/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@apollo/react-hoc": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@apollo/react-hoc/-/react-hoc-3.1.5.tgz",
+ "integrity": "sha512-jlZ2pvEnRevLa54H563BU0/xrYSgWQ72GksarxUzCHQW85nmn9wQln0kLBX7Ua7SBt9WgiuYQXQVechaaCulfQ==",
+ "dependencies": {
+ "@apollo/react-common": "^3.1.4",
+ "@apollo/react-components": "^3.1.5",
+ "hoist-non-react-statics": "^3.3.0",
+ "ts-invariant": "^0.4.4",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0",
+ "apollo-client": "^2.6.4",
+ "graphql": "^14.3.1",
+ "react": "^16.8.0",
+ "react-dom": "^16.8.0"
+ }
+ },
+ "node_modules/@apollo/react-hoc/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@apollo/react-hooks": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-3.1.5.tgz",
+ "integrity": "sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ==",
+ "dependencies": {
+ "@apollo/react-common": "^3.1.4",
+ "@wry/equality": "^0.1.9",
+ "ts-invariant": "^0.4.4",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0",
+ "apollo-client": "^2.6.4",
+ "graphql": "^14.3.1",
+ "react": "^16.8.0",
+ "react-dom": "^16.8.0"
+ }
+ },
+ "node_modules/@apollo/react-hooks/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@apollo/react-ssr": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@apollo/react-ssr/-/react-ssr-3.1.5.tgz",
+ "integrity": "sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg==",
+ "dependencies": {
+ "@apollo/react-common": "^3.1.4",
+ "@apollo/react-hooks": "^3.1.5",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0",
+ "react-dom": "^16.8.0"
+ }
+ },
+ "node_modules/@apollo/react-ssr/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
+ "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz",
+ "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.21.3",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-module-transforms": "^7.21.2",
+ "@babel/helpers": "^7.21.0",
+ "@babel/parser": "^7.21.3",
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.21.3",
+ "@babel/types": "^7.21.3",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz",
+ "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==",
+ "dependencies": {
+ "@babel/types": "^7.21.3",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "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/@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
+ "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
+ "dependencies": {
+ "@babel/helper-explode-assignable-expression": "^7.18.6",
+ "@babel/types": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+ "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-validator-option": "^7.18.6",
+ "browserslist": "^4.21.3",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz",
+ "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-member-expression-to-functions": "^7.21.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.20.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/helper-split-export-declaration": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz",
+ "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "regexpu-core": "^5.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
+ "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/helper-plugin-utils": "^7.16.7",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0-0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-explode-assignable-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
+ "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+ "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+ "dependencies": {
+ "@babel/template": "^7.20.7",
+ "@babel/types": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
+ "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
+ "dependencies": {
+ "@babel/types": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.21.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+ "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.21.2",
+ "@babel/types": "^7.21.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+ "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
+ "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-wrap-function": "^7.18.9",
+ "@babel/types": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
+ "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-member-expression-to-functions": "^7.20.7",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.20.7",
+ "@babel/types": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
+ "dependencies": {
+ "@babel/types": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+ "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+ "dependencies": {
+ "@babel/types": "^7.20.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+ "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
+ "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
+ "dependencies": {
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+ "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
+ "dependencies": {
+ "@babel/template": "^7.20.7",
+ "@babel/traverse": "^7.21.0",
+ "@babel/types": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
+ "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
+ "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.18.6",
+ "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.18.6.tgz",
+ "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
+ "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.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==",
+ "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==",
+ "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-class-static-block": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz",
+ "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.21.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz",
+ "integrity": "sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.21.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-replace-supers": "^7.20.7",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/plugin-syntax-decorators": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-dynamic-import": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
+ "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-export-default-from": {
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz",
+ "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9",
+ "@babel/plugin-syntax-export-default-from": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
+ "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9",
+ "@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-proposal-json-strings": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
+ "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
+ "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@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-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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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-methods": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+ "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
+ "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-private-property-in-object": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz",
+ "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.21.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@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-proposal-unicode-property-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+ "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "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==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "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==",
+ "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==",
+ "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-decorators": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz",
+ "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "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==",
+ "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.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz",
+ "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "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==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz",
+ "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
+ "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.19.0"
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
+ "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
+ "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
+ "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-remap-async-to-generator": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+ "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz",
+ "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz",
+ "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-replace-supers": "^7.20.7",
+ "@babel/helper-split-export-declaration": "^7.18.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.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
+ "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/template": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz",
+ "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+ "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
+ "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-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
+ "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+ "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^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-transform-flow-strip-types": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz",
+ "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-flow": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz",
+ "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
+ "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.18.9",
+ "@babel/helper-function-name": "^7.18.9",
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
+ "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+ "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
+ "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.20.11",
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.21.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz",
+ "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.21.2",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-simple-access": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.20.11",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
+ "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-module-transforms": "^7.20.11",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-validator-identifier": "^7.19.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+ "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^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-transform-named-capturing-groups-regex": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
+ "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.20.5",
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
+ "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-assign": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz",
+ "integrity": "sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+ "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz",
+ "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+ "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz",
+ "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz",
+ "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-jsx": "^7.18.6",
+ "@babel/types": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz",
+ "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.19.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
+ "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.19.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
+ "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "regenerator-transform": "^0.15.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+ "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz",
+ "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "babel-plugin-polyfill-corejs2": "^0.3.3",
+ "babel-plugin-polyfill-corejs3": "^0.6.0",
+ "babel-plugin-polyfill-regenerator": "^0.4.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+ "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
+ "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+ "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
+ "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
+ "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz",
+ "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.21.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-typescript": "^7.20.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
+ "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+ "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
+ "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-0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz",
+ "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==",
+ "dependencies": {
+ "@babel/compat-data": "^7.20.1",
+ "@babel/helper-compilation-targets": "^7.20.0",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-validator-option": "^7.18.6",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9",
+ "@babel/plugin-proposal-async-generator-functions": "^7.20.1",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-class-static-block": "^7.18.6",
+ "@babel/plugin-proposal-dynamic-import": "^7.18.6",
+ "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+ "@babel/plugin-proposal-json-strings": "^7.18.6",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+ "@babel/plugin-proposal-numeric-separator": "^7.18.6",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.2",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
+ "@babel/plugin-proposal-optional-chaining": "^7.18.9",
+ "@babel/plugin-proposal-private-methods": "^7.18.6",
+ "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
+ "@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.20.0",
+ "@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-transform-arrow-functions": "^7.18.6",
+ "@babel/plugin-transform-async-to-generator": "^7.18.6",
+ "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
+ "@babel/plugin-transform-block-scoping": "^7.20.2",
+ "@babel/plugin-transform-classes": "^7.20.2",
+ "@babel/plugin-transform-computed-properties": "^7.18.9",
+ "@babel/plugin-transform-destructuring": "^7.20.2",
+ "@babel/plugin-transform-dotall-regex": "^7.18.6",
+ "@babel/plugin-transform-duplicate-keys": "^7.18.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
+ "@babel/plugin-transform-for-of": "^7.18.8",
+ "@babel/plugin-transform-function-name": "^7.18.9",
+ "@babel/plugin-transform-literals": "^7.18.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.18.6",
+ "@babel/plugin-transform-modules-amd": "^7.19.6",
+ "@babel/plugin-transform-modules-commonjs": "^7.19.6",
+ "@babel/plugin-transform-modules-systemjs": "^7.19.6",
+ "@babel/plugin-transform-modules-umd": "^7.18.6",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1",
+ "@babel/plugin-transform-new-target": "^7.18.6",
+ "@babel/plugin-transform-object-super": "^7.18.6",
+ "@babel/plugin-transform-parameters": "^7.20.1",
+ "@babel/plugin-transform-property-literals": "^7.18.6",
+ "@babel/plugin-transform-regenerator": "^7.18.6",
+ "@babel/plugin-transform-reserved-words": "^7.18.6",
+ "@babel/plugin-transform-shorthand-properties": "^7.18.6",
+ "@babel/plugin-transform-spread": "^7.19.0",
+ "@babel/plugin-transform-sticky-regex": "^7.18.6",
+ "@babel/plugin-transform-template-literals": "^7.18.9",
+ "@babel/plugin-transform-typeof-symbol": "^7.18.9",
+ "@babel/plugin-transform-unicode-escapes": "^7.18.10",
+ "@babel/plugin-transform-unicode-regex": "^7.18.6",
+ "@babel/preset-modules": "^0.1.5",
+ "@babel/types": "^7.20.2",
+ "babel-plugin-polyfill-corejs2": "^0.3.3",
+ "babel-plugin-polyfill-corejs3": "^0.6.0",
+ "babel-plugin-polyfill-regenerator": "^0.4.1",
+ "core-js-compat": "^3.25.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-flow": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz",
+ "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/helper-validator-option": "^7.18.6",
+ "@babel/plugin-transform-flow-strip-types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz",
+ "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-validator-option": "^7.21.0",
+ "@babel/plugin-transform-typescript": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/register": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.21.0.tgz",
+ "integrity": "sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==",
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "find-cache-dir": "^2.0.0",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.5",
+ "source-map-support": "^0.5.16"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/register/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==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/register/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@babel/register/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==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.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=="
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
+ "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.11"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/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=="
+ },
+ "node_modules/@babel/template": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+ "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz",
+ "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.21.3",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.21.3",
+ "@babel/types": "^7.21.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.21.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
+ "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "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==",
+ "dependencies": {
+ "@types/hammerjs": "^2.0.36"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz",
+ "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz",
+ "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
+ "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.5.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.36.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
+ "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@expo/bunyan": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz",
+ "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==",
+ "engines": [
+ "node >=0.10.0"
+ ],
+ "dependencies": {
+ "uuid": "^8.0.0"
+ },
+ "optionalDependencies": {
+ "mv": "~2",
+ "safe-json-stringify": "~1"
+ }
+ },
+ "node_modules/@expo/bunyan/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@expo/cli": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz",
+ "integrity": "sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.14.0",
+ "@expo/code-signing-certificates": "0.0.5",
+ "@expo/config": "~7.0.2",
+ "@expo/config-plugins": "~5.0.3",
+ "@expo/dev-server": "0.1.124",
+ "@expo/devcert": "^1.0.0",
+ "@expo/json-file": "^8.2.35",
+ "@expo/metro-config": "~0.5.0",
+ "@expo/osascript": "^2.0.31",
+ "@expo/package-manager": "~0.0.53",
+ "@expo/plist": "^0.0.18",
+ "@expo/prebuild-config": "5.0.7",
+ "@expo/rudder-sdk-node": "1.1.1",
+ "@expo/spawn-async": "1.5.0",
+ "@expo/xcpretty": "^4.2.1",
+ "@urql/core": "2.3.6",
+ "@urql/exchange-retry": "0.3.0",
+ "accepts": "^1.3.8",
+ "arg": "4.1.0",
+ "better-opn": "~3.0.2",
+ "bplist-parser": "^0.3.1",
+ "cacache": "^15.3.0",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.3.0",
+ "debug": "^4.3.4",
+ "env-editor": "^0.4.1",
+ "form-data": "^3.0.1",
+ "freeport-async": "2.0.0",
+ "fs-extra": "~8.1.0",
+ "getenv": "^1.0.0",
+ "graphql": "15.8.0",
+ "graphql-tag": "^2.10.1",
+ "https-proxy-agent": "^5.0.1",
+ "internal-ip": "4.3.0",
+ "is-root": "^2.1.0",
+ "js-yaml": "^3.13.1",
+ "json-schema-deref-sync": "^0.13.0",
+ "md5-file": "^3.2.3",
+ "md5hex": "^1.0.0",
+ "minipass": "3.1.6",
+ "node-fetch": "^2.6.7",
+ "node-forge": "^1.3.1",
+ "npm-package-arg": "^7.0.0",
+ "ora": "3.4.0",
+ "pretty-bytes": "5.6.0",
+ "progress": "2.0.3",
+ "prompts": "^2.3.2",
+ "qrcode-terminal": "0.11.0",
+ "requireg": "^0.2.2",
+ "resolve-from": "^5.0.0",
+ "semver": "^6.3.0",
+ "send": "^0.18.0",
+ "slugify": "^1.3.4",
+ "structured-headers": "^0.4.1",
+ "tar": "^6.0.5",
+ "tempy": "^0.7.1",
+ "terminal-link": "^2.1.1",
+ "text-table": "^0.2.0",
+ "url-join": "4.0.0",
+ "uuid": "^3.4.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "bin": {
+ "expo-internal": "build/bin/cli"
+ }
+ },
+ "node_modules/@expo/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/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==",
+ "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/@expo/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/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=="
+ },
+ "node_modules/@expo/cli/node_modules/graphql": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
+ "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/@expo/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/code-signing-certificates": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz",
+ "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==",
+ "dependencies": {
+ "node-forge": "^1.2.1",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "node_modules/@expo/config": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz",
+ "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "@expo/config-plugins": "~5.0.3",
+ "@expo/config-types": "^47.0.0",
+ "@expo/json-file": "8.2.36",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "require-from-string": "^2.0.2",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "slugify": "^1.3.4",
+ "sucrase": "^3.20.0"
+ }
+ },
+ "node_modules/@expo/config-plugins": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz",
+ "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==",
+ "dependencies": {
+ "@expo/config-types": "^47.0.0",
+ "@expo/json-file": "8.2.36",
+ "@expo/plist": "0.0.18",
+ "@expo/sdk-runtime-versions": "^1.0.0",
+ "@react-native/normalize-color": "^2.0.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.1",
+ "find-up": "~5.0.0",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.3.5",
+ "slash": "^3.0.0",
+ "xcode": "^3.0.1",
+ "xml2js": "0.4.23"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/@expo/json-file": {
+ "version": "8.2.36",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
+ "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^1.0.1",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/config-plugins/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=="
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/config-plugins/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/@expo/config-types": {
+ "version": "47.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz",
+ "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g=="
+ },
+ "node_modules/@expo/config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/config/node_modules/@expo/json-file": {
+ "version": "8.2.36",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
+ "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^1.0.1",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/config/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@expo/config/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/@expo/config/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/config/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/@expo/configure-splash-screen": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz",
+ "integrity": "sha512-4DyPoNXJqx9bN4nEwF3HQreo//ECu7gDe1Xor3dnnzFm9P/VDxAKdbEhA0n+R6fgkNfT2onVHWijqvdpTS3Xew==",
+ "dependencies": {
+ "color-string": "^1.5.3",
+ "commander": "^5.1.0",
+ "fs-extra": "^9.0.0",
+ "glob": "^7.1.6",
+ "lodash": "^4.17.15",
+ "pngjs": "^5.0.0",
+ "xcode": "^3.0.0",
+ "xml-js": "^1.6.11"
+ },
+ "bin": {
+ "configure-splash-screen": "build/index-cli.js",
+ "expo-splash-screen": "build/index-cli.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/configure-splash-screen/node_modules/commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@expo/configure-splash-screen/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/configure-splash-screen/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/configure-splash-screen/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/dev-server": {
+ "version": "0.1.124",
+ "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz",
+ "integrity": "sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA==",
+ "dependencies": {
+ "@expo/bunyan": "4.0.0",
+ "@expo/metro-config": "~0.5.1",
+ "@expo/osascript": "2.0.33",
+ "@expo/spawn-async": "^1.5.0",
+ "body-parser": "^1.20.1",
+ "chalk": "^4.0.0",
+ "connect": "^3.7.0",
+ "fs-extra": "9.0.0",
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1",
+ "node-fetch": "^2.6.0",
+ "open": "^8.3.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "serialize-error": "6.0.0",
+ "temp-dir": "^2.0.0"
+ }
+ },
+ "node_modules/@expo/dev-server/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/dev-server/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@expo/dev-server/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/dev-server/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=="
+ },
+ "node_modules/@expo/dev-server/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/dev-server/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/dev-server/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/dev-server/node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/dev-server/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/dev-server/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/dev-server/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/devcert": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz",
+ "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==",
+ "dependencies": {
+ "application-config-path": "^0.1.0",
+ "command-exists": "^1.2.4",
+ "debug": "^3.1.0",
+ "eol": "^0.9.1",
+ "get-port": "^3.2.0",
+ "glob": "^7.1.2",
+ "lodash": "^4.17.4",
+ "mkdirp": "^0.5.1",
+ "password-prompt": "^1.0.4",
+ "rimraf": "^2.6.2",
+ "sudo-prompt": "^8.2.0",
+ "tmp": "^0.0.33",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@expo/devcert/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/@expo/image-utils": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz",
+ "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==",
+ "dependencies": {
+ "@expo/spawn-async": "1.5.0",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "mime": "^2.4.4",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "tempy": "0.3.0"
+ }
+ },
+ "node_modules/@expo/image-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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/image-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==",
+ "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/@expo/image-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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/image-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=="
+ },
+ "node_modules/@expo/image-utils/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/image-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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/image-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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
+ "dependencies": {
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
+ "dependencies": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/json-file": {
+ "version": "8.2.37",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
+ "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/json-file/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/json-file/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/@expo/metro-config": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz",
+ "integrity": "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==",
+ "dependencies": {
+ "@expo/config": "~7.0.2",
+ "@expo/json-file": "8.2.36",
+ "chalk": "^4.1.0",
+ "debug": "^4.3.2",
+ "find-yarn-workspace-root": "~2.0.0",
+ "getenv": "^1.0.0",
+ "resolve-from": "^5.0.0",
+ "sucrase": "^3.20.0"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/@expo/json-file": {
+ "version": "8.2.36",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
+ "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^1.0.1",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/metro-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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/metro-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==",
+ "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/@expo/metro-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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/metro-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=="
+ },
+ "node_modules/@expo/metro-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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/@expo/metro-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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/@expo/osascript": {
+ "version": "2.0.33",
+ "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz",
+ "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==",
+ "dependencies": {
+ "@expo/spawn-async": "^1.5.0",
+ "exec-async": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/package-manager": {
+ "version": "0.0.60",
+ "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.60.tgz",
+ "integrity": "sha512-MdV7dpFA4aI8HIW0xsW2DBUem5aFKL8+/v5LXKPZuXmYW02/EXPSp7DBJAwow8ULpa3Q2VlYfb46hWPre3hw4A==",
+ "dependencies": {
+ "@expo/json-file": "^8.2.37",
+ "@expo/spawn-async": "^1.5.0",
+ "ansi-regex": "^5.0.0",
+ "chalk": "^4.0.0",
+ "find-up": "^5.0.0",
+ "find-yarn-workspace-root": "~2.0.0",
+ "npm-package-arg": "^7.0.0",
+ "rimraf": "^3.0.2",
+ "split": "^1.0.1",
+ "sudo-prompt": "9.1.1"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/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=="
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/rimraf": {
+ "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"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/sudo-prompt": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz",
+ "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA=="
+ },
+ "node_modules/@expo/package-manager/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/plist": {
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz",
+ "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==",
+ "dependencies": {
+ "@xmldom/xmldom": "~0.7.0",
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^14.0.0"
+ }
+ },
+ "node_modules/@expo/prebuild-config": {
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz",
+ "integrity": "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==",
+ "dependencies": {
+ "@expo/config": "~7.0.2",
+ "@expo/config-plugins": "~5.0.3",
+ "@expo/config-types": "^47.0.0",
+ "@expo/image-utils": "0.3.22",
+ "@expo/json-file": "8.2.36",
+ "debug": "^4.3.1",
+ "fs-extra": "^9.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "xml2js": "0.4.23"
+ },
+ "peerDependencies": {
+ "expo-modules-autolinking": ">=0.8.1"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": {
+ "version": "8.2.36",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz",
+ "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^1.0.1",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/prebuild-config/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/@expo/react-native-action-sheet": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@expo/react-native-action-sheet/-/react-native-action-sheet-4.0.1.tgz",
+ "integrity": "sha512-FwCFpjpB6yzrK8CIWssLlh/i6zQFytFBiJfNdz0mJ2ckU4hWk8SrjB37P0Q4kF7w0bnIdYzPgRbdPR9hnfFqPw==",
+ "dependencies": {
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "hoist-non-react-statics": "^3.3.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.3.0"
+ }
+ },
+ "node_modules/@expo/rudder-sdk-node": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz",
+ "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==",
+ "dependencies": {
+ "@expo/bunyan": "^4.0.0",
+ "@segment/loosely-validate-event": "^2.0.0",
+ "fetch-retry": "^4.1.1",
+ "md5": "^2.2.1",
+ "node-fetch": "^2.6.1",
+ "remove-trailing-slash": "^0.1.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/rudder-sdk-node/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@expo/sdk-runtime-versions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
+ "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="
+ },
+ "node_modules/@expo/spawn-async": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz",
+ "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==",
+ "dependencies": {
+ "cross-spawn": "^6.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@expo/spawn-async/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/@expo/vector-icons": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz",
+ "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA=="
+ },
+ "node_modules/@expo/xcpretty": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz",
+ "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==",
+ "dependencies": {
+ "@babel/code-frame": "7.10.4",
+ "chalk": "^4.1.0",
+ "find-up": "^5.0.0",
+ "js-yaml": "^4.1.0"
+ },
+ "bin": {
+ "excpretty": "build/cli.js"
+ }
+ },
+ "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@expo/xcpretty/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/@expo/xcpretty/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@expo/xcpretty/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=="
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/xcpretty/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="
+ },
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.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=="
+ },
+ "node_modules/@hapi/topo": {
+ "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"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@ide/backoff": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@ide/backoff/-/backoff-1.0.0.tgz",
+ "integrity": "sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g=="
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
+ "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/console/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/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,
+ "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/console/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/console/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
+ },
+ "node_modules/@jest/console/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
+ "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.5.0",
+ "@jest/reporters": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^29.5.0",
+ "jest-config": "^29.5.0",
+ "jest-haste-map": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-resolve-dependencies": "^29.5.0",
+ "jest-runner": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
+ "jest-watcher": "^29.5.0",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.5.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/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,
+ "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/core/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/core/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
+ },
+ "node_modules/@jest/core/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/core/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/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==",
+ "dev": true
+ },
+ "node_modules/@jest/core/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/create-cache-key-function": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz",
+ "integrity": "sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==",
+ "dependencies": {
+ "@jest/types": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
+ "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "jest-mock": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
+ "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.5.0",
+ "jest-snapshot": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
+ "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.4.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
+ "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@types/node": "*",
+ "jest-message-util": "^29.5.0",
+ "jest-mock": "^29.5.0",
+ "jest-util": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
+ "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.5.0",
+ "@jest/expect": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "jest-mock": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
+ "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@jridgewell/trace-mapping": "^0.3.15",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-worker": "^29.5.0",
+ "slash": "^3.0.0",
+ "string-length": "^4.0.1",
+ "strip-ansi": "^6.0.0",
+ "v8-to-istanbul": "^9.0.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/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,
+ "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/reporters/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/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
+ },
+ "node_modules/@jest/reporters/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
+ "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+ "dependencies": {
+ "@sinclair/typebox": "^0.25.16"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
+ "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.15",
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
+ "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
+ "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.5.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.5.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
+ "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.5.0",
+ "@jridgewell/trace-mapping": "^0.3.15",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.5.0",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/transform/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/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,
+ "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/transform/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/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
+ },
+ "node_modules/@jest/transform/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==",
+ "dev": true
+ },
+ "node_modules/@jest/transform/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
+ "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "dependencies": {
+ "@jest/schemas": "^29.4.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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "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==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@koale/useworker": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@koale/useworker/-/useworker-4.0.2.tgz",
+ "integrity": "sha512-xPIPADtom8/3/4FLNj7MvNcBM/Z2FleH85Fdx2O869eoKW8+PoEgtSVvoxWjCWMA46Sm9A5/R1TyzNGc+yM0wg==",
+ "dependencies": {
+ "dequal": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+ "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "dependencies": {
+ "@gar/promisify": "^1.0.1",
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/@npmcli/fs/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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/fs/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/fs/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+ "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/move-file/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/move-file/node_modules/rimraf": {
+ "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"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@ptomasroos/react-native-multi-slider": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-2.2.2.tgz",
+ "integrity": "sha512-HWyCnRD3Z3SbHK2FLWYmBBqd1B4iXipeKv1+AK0FoY/CElEDTEixHE8hN60TsqxalPrznn798LE2Q4tHuCiyaA==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-native-async-storage/async-storage": {
+ "version": "1.17.12",
+ "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.17.12.tgz",
+ "integrity": "sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==",
+ "dependencies": {
+ "merge-options": "^3.0.4"
+ },
+ "peerDependencies": {
+ "react-native": "^0.0.0-0 || 0.60 - 0.71 || 1000.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz",
+ "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==",
+ "dependencies": {
+ "@react-native-community/cli-clean": "^9.2.1",
+ "@react-native-community/cli-config": "^9.2.1",
+ "@react-native-community/cli-debugger-ui": "^9.0.0",
+ "@react-native-community/cli-doctor": "^9.2.1",
+ "@react-native-community/cli-hermes": "^9.2.1",
+ "@react-native-community/cli-plugin-metro": "^9.2.1",
+ "@react-native-community/cli-server-api": "^9.2.1",
+ "@react-native-community/cli-tools": "^9.2.1",
+ "@react-native-community/cli-types": "^9.1.0",
+ "chalk": "^4.1.2",
+ "commander": "^9.4.0",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "graceful-fs": "^4.1.3",
+ "prompts": "^2.4.0",
+ "semver": "^6.3.0"
+ },
+ "bin": {
+ "react-native": "build/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz",
+ "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "prompts": "^2.4.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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-config": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz",
+ "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^3.2.0",
+ "glob": "^7.1.3",
+ "joi": "^17.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-config/node_modules/deepmerge": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz",
+ "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-debugger-ui": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz",
+ "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==",
+ "dependencies": {
+ "serve-static": "^1.13.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz",
+ "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==",
+ "dependencies": {
+ "@react-native-community/cli-config": "^9.2.1",
+ "@react-native-community/cli-platform-ios": "^9.3.0",
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "command-exists": "^1.2.8",
+ "envinfo": "^7.7.2",
+ "execa": "^1.0.0",
+ "hermes-profile-transformer": "^0.0.6",
+ "ip": "^1.1.5",
+ "node-stream-zip": "^1.9.1",
+ "ora": "^5.4.1",
+ "prompts": "^2.4.0",
+ "semver": "^6.3.0",
+ "strip-ansi": "^5.2.0",
+ "sudo-prompt": "^9.0.0",
+ "wcwidth": "^1.0.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz",
+ "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "glob": "^7.1.3",
+ "ora": "^5.4.1"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "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/@react-native-community/cli-doctor/node_modules/ora/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==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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=="
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz",
+ "integrity": "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==",
+ "dependencies": {
+ "@react-native-community/cli-platform-android": "^9.3.1",
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "hermes-profile-transformer": "^0.0.6",
+ "ip": "^1.1.5"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-platform-android": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz",
+ "integrity": "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "logkitty": "^0.7.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz",
+ "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.1.3",
+ "logkitty": "^0.7.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz",
+ "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "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/@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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-plugin-metro": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz",
+ "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==",
+ "dependencies": {
+ "@react-native-community/cli-server-api": "^9.2.1",
+ "@react-native-community/cli-tools": "^9.2.1",
+ "chalk": "^4.1.2",
+ "metro": "0.72.3",
+ "metro-config": "0.72.3",
+ "metro-core": "0.72.3",
+ "metro-react-native-babel-transformer": "0.72.3",
+ "metro-resolver": "0.72.3",
+ "metro-runtime": "0.72.3",
+ "readline": "^1.3.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-plugin-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==",
+ "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-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==",
+ "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-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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-plugin-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=="
+ },
+ "node_modules/@react-native-community/cli-plugin-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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-plugin-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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz",
+ "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==",
+ "dependencies": {
+ "@react-native-community/cli-debugger-ui": "^9.0.0",
+ "@react-native-community/cli-tools": "^9.2.1",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "errorhandler": "^1.5.0",
+ "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/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "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/@react-native-community/cli-tools": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz",
+ "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==",
+ "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": "^6.3.0",
+ "shell-quote": "^1.7.3"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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/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==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/open": {
+ "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"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "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/@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==",
+ "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/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-types": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz",
+ "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/@react-native-community/cli/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/masked-view": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.11.tgz",
+ "integrity": "sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw==",
+ "deprecated": "Repository was moved to @react-native-masked-view/masked-view",
+ "peerDependencies": {
+ "react": ">=16.0",
+ "react-native": ">=0.57"
+ }
+ },
+ "node_modules/@react-native/assets": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz",
+ "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ=="
+ },
+ "node_modules/@react-native/normalize-color": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+ "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA=="
+ },
+ "node_modules/@react-native/normalize-colors": {
+ "version": "0.72.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz",
+ "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw=="
+ },
+ "node_modules/@react-native/polyfills": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
+ "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
+ },
+ "node_modules/@react-navigation/core": {
+ "version": "6.4.8",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.8.tgz",
+ "integrity": "sha512-klZ9Mcf/P2j+5cHMoGyIeurEzyBM2Uq9+NoSFrF6sdV5iCWHLFhrCXuhbBiQ5wVLCKf4lavlkd/DDs47PXs9RQ==",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.8",
+ "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/drawer": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/drawer/-/drawer-6.6.2.tgz",
+ "integrity": "sha512-6qt4guBdz7bkdo/8BLSCcFNdQdSPYyNn05D9cD+VCY3mGThSiD8bRiP9ju+64im7LsSU+bNWXaP8RxA/FtTVQg==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.17",
+ "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-reanimated": ">= 1.0.0",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/elements": {
+ "version": "1.3.17",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.17.tgz",
+ "integrity": "sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==",
+ "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.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.6.tgz",
+ "integrity": "sha512-14PmSy4JR8HHEk04QkxQ0ZLuqtiQfb4BV9kkMXD2/jI4TZ+yc43OnO6fQ2o9wm+Bq8pY3DxyerC2AjNUz+oH7Q==",
+ "dependencies": {
+ "@react-navigation/core": "^6.4.8",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/native-stack": {
+ "version": "6.9.12",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.12.tgz",
+ "integrity": "sha512-kS2zXCWP0Rgt7uWaCUKrRl7U2U1Gp19rM1kyRY2YzBPXhWGVPjQ2ygBp88CTQzjgy8M07H/79jvGiZ0mlEJI+g==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.17",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/routers": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.8.tgz",
+ "integrity": "sha512-CEge+ZLhb1HBrSvv4RwOol7EKLW1QoqVIQlE9TN5MpxS/+VoQvP+cLbuz0Op53/iJfYhtXRFd1ZAd3RTRqto9w==",
+ "dependencies": {
+ "nanoid": "^3.1.23"
+ }
+ },
+ "node_modules/@react-navigation/stack": {
+ "version": "6.3.16",
+ "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.16.tgz",
+ "integrity": "sha512-KTOn9cNuZ6p154Htbl2DiR95Wl+c7niLPRiGs7gjOkyVDGiaGQF9ODNQTYBDE1OxZGHe/EyYc6T2CbmiItLWDg==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.17",
+ "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/@segment/loosely-validate-event": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
+ "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==",
+ "dependencies": {
+ "component-type": "^1.2.1",
+ "join-component": "^1.1.0"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "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=="
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.25.24",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
+ "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ=="
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+ "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
+ "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^2.0.0"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
+ "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+ "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+ "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
+ "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "node_modules/@types/geojson": {
+ "version": "7946.0.10",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
+ "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA=="
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+ "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
+ "node_modules/@types/invariant": {
+ "version": "2.2.35",
+ "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz",
+ "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg=="
+ },
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "18.15.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz",
+ "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw=="
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz",
+ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
+ "dev": true
+ },
+ "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=="
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.0.28",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
+ "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.22",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
+ "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
+ "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=="
+ },
+ "node_modules/@types/zen-observable": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz",
+ "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw=="
+ },
+ "node_modules/@urql/core": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz",
+ "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==",
+ "dependencies": {
+ "@graphql-typed-document-node/core": "^3.1.0",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@urql/exchange-retry": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz",
+ "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==",
+ "dependencies": {
+ "@urql/core": ">=2.3.1",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/@wry/context": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz",
+ "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==",
+ "dependencies": {
+ "@types/node": ">=6",
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/@wry/context/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@wry/equality": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz",
+ "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==",
+ "dependencies": {
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/@wry/equality/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz",
+ "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@yarnpkg/lockfile": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
+ },
+ "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==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/absolute-path": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz",
+ "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA=="
+ },
+ "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==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "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/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/anser": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="
+ },
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-fragments/node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="
+ },
+ "node_modules/ansi-fragments/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ansi-fragments/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==",
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "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==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/apollo-boost": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz",
+ "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==",
+ "dependencies": {
+ "apollo-cache": "^1.3.5",
+ "apollo-cache-inmemory": "^1.6.6",
+ "apollo-client": "^2.6.10",
+ "apollo-link": "^1.0.6",
+ "apollo-link-error": "^1.0.3",
+ "apollo-link-http": "^1.3.1",
+ "graphql-tag": "^2.4.2",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-boost/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-cache": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz",
+ "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==",
+ "dependencies": {
+ "apollo-utilities": "^1.3.4",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-cache-inmemory": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz",
+ "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==",
+ "dependencies": {
+ "apollo-cache": "^1.3.5",
+ "apollo-utilities": "^1.3.4",
+ "optimism": "^0.10.0",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-cache-inmemory/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-cache-persist": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/apollo-cache-persist/-/apollo-cache-persist-0.1.1.tgz",
+ "integrity": "sha512-/7GAyblPR169ryW3ugbtHqiU0UGkhIt10NeaO2gn2ClxjLHF/nIkJD5mx/0OCF2vLNbbnzLZVDeIO1pf72TrEA=="
+ },
+ "node_modules/apollo-cache/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-client": {
+ "version": "2.6.10",
+ "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz",
+ "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==",
+ "dependencies": {
+ "@types/zen-observable": "^0.8.0",
+ "apollo-cache": "1.3.5",
+ "apollo-link": "^1.0.0",
+ "apollo-utilities": "1.3.4",
+ "symbol-observable": "^1.0.2",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.10.0",
+ "zen-observable": "^0.8.0"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-client/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz",
+ "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==",
+ "dependencies": {
+ "apollo-utilities": "^1.3.0",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.9.3",
+ "zen-observable-ts": "^0.8.21"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-link-context": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.20.tgz",
+ "integrity": "sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA==",
+ "dependencies": {
+ "apollo-link": "^1.2.14",
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/apollo-link-context/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link-error": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz",
+ "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==",
+ "dependencies": {
+ "apollo-link": "^1.2.14",
+ "apollo-link-http-common": "^0.2.16",
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/apollo-link-error/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link-http": {
+ "version": "1.5.17",
+ "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz",
+ "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==",
+ "dependencies": {
+ "apollo-link": "^1.2.14",
+ "apollo-link-http-common": "^0.2.16",
+ "tslib": "^1.9.3"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-link-http-common": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz",
+ "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==",
+ "dependencies": {
+ "apollo-link": "^1.2.14",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.9.3"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-link-http-common/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link-http/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link-state": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/apollo-link-state/-/apollo-link-state-0.4.2.tgz",
+ "integrity": "sha512-xMPcAfuiPVYXaLwC6oJFIZrKgV3GmdO31Ag2eufRoXpvT0AfJZjdaPB4450Nu9TslHRePN9A3quxNueILlQxlw==",
+ "dependencies": {
+ "apollo-utilities": "^1.0.8",
+ "graphql-anywhere": "^4.1.0-alpha.0"
+ },
+ "peerDependencies": {
+ "apollo-link": "^1.0.0"
+ }
+ },
+ "node_modules/apollo-link-ws": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz",
+ "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==",
+ "dependencies": {
+ "apollo-link": "^1.2.14",
+ "tslib": "^1.9.3"
+ },
+ "peerDependencies": {
+ "subscriptions-transport-ws": "^0.9.0"
+ }
+ },
+ "node_modules/apollo-link-ws/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-link/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/apollo-upload-client": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/apollo-upload-client/-/apollo-upload-client-10.0.1.tgz",
+ "integrity": "sha512-K6WnuYQi0RRTNO+aSPVjoUWXp4QSr+eoKU4fE0OKQp25XRF2oXl2cTLs+Q4Nk0wOIHM76YGdo/IHtzuNR7jO+A==",
+ "dependencies": {
+ "apollo-link": "^1.2.11",
+ "apollo-link-http-common": "^0.2.13",
+ "extract-files": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/apollo-utilities": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz",
+ "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==",
+ "dependencies": {
+ "@wry/equality": "^0.1.2",
+ "fast-json-stable-stringify": "^2.0.0",
+ "ts-invariant": "^0.4.0",
+ "tslib": "^1.10.0"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/apollo-utilities/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "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=="
+ },
+ "node_modules/application-config-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz",
+ "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw=="
+ },
+ "node_modules/arg": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
+ "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="
+ },
+ "node_modules/argparse": {
+ "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"
+ }
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
+ "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
+ "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
+ "node_modules/assert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
+ "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
+ "dependencies": {
+ "es6-object-assign": "^1.1.0",
+ "is-nan": "^1.2.1",
+ "object-is": "^1.0.1",
+ "util": "^0.12.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
+ "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
+ "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==",
+ "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=="
+ },
+ "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=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==",
+ "dev": true
+ },
+ "node_modules/babel-code-frame/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-code-frame/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.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==",
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-explode-assignable-expression": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-builder-react-jsx": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
+ "integrity": "sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "esutils": "^2.0.2"
+ }
+ },
+ "node_modules/babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-hoist-variables": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "node_modules/babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
+ "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/transform": "^29.5.0",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^29.5.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/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,
+ "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/babel-jest/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-jest/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
+ },
+ "node_modules/babel-jest/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-check-es2015-constants": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+ "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
+ "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.1.14",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/babel-plugin-module-resolver": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz",
+ "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==",
+ "dependencies": {
+ "find-babel-config": "^1.2.0",
+ "glob": "^7.1.6",
+ "pkg-up": "^3.1.0",
+ "reselect": "^4.0.0",
+ "resolve": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
+ "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
+ "dependencies": {
+ "@babel/compat-data": "^7.17.7",
+ "@babel/helper-define-polyfill-provider": "^0.3.3",
+ "semver": "^6.1.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
+ "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.3.3",
+ "core-js-compat": "^3.25.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
+ "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.3.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-react-native-web": {
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.12.tgz",
+ "integrity": "sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw=="
+ },
+ "node_modules/babel-plugin-react-transform": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz",
+ "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.6.1"
+ }
+ },
+ "node_modules/babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-class-properties": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
+ "integrity": "sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-dynamic-import": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+ "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-flow": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
+ "integrity": "sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==",
+ "dev": true
+ },
+ "node_modules/babel-plugin-transform-class-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
+ "integrity": "sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-plugin-syntax-class-properties": "^6.8.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+ "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-define-map": "^6.24.1",
+ "babel-helper-function-name": "^6.24.1",
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-helper-replace-supers": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-transform-strict-mode": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-types": "^6.26.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-call-delegate": "^6.24.1",
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-flow": "^7.12.1"
+ }
+ },
+ "node_modules/babel-plugin-transform-flow-strip-types": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
+ "integrity": "sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-syntax-flow": "^6.18.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-object-assign": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz",
+ "integrity": "sha512-N6Pddn/0vgLjnGr+mS7ttlFkQthqcnINE9EMOxB0CF8F4t6kuJXz6NUeLfSoRbLmkGh0mgDs9i2isdaZj0Ghtg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+ "babel-runtime": "^6.26.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-react-display-name": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
+ "integrity": "sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-react-jsx": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
+ "integrity": "sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==",
+ "dev": true,
+ "dependencies": {
+ "babel-helper-builder-react-jsx": "^6.24.1",
+ "babel-plugin-syntax-jsx": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-react-jsx-source": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
+ "integrity": "sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-syntax-jsx": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-transform": "^0.10.0"
+ }
+ },
+ "node_modules/babel-plugin-transform-regenerator/node_modules/regenerator-transform": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.18.0",
+ "babel-types": "^6.19.0",
+ "private": "^0.1.6"
+ }
+ },
+ "node_modules/babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@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-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-expo": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz",
+ "integrity": "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==",
+ "dependencies": {
+ "@babel/plugin-proposal-decorators": "^7.12.9",
+ "@babel/plugin-proposal-object-rest-spread": "^7.12.13",
+ "@babel/plugin-transform-react-jsx": "^7.12.17",
+ "@babel/preset-env": "^7.12.9",
+ "babel-plugin-module-resolver": "^4.1.0",
+ "babel-plugin-react-native-web": "~0.18.2",
+ "metro-react-native-babel-preset": "0.72.3"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/metro-react-native-babel-preset": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz",
+ "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.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.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-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.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-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "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==",
+ "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/babel-preset-fbjs/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=="
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
+ "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^29.5.0",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-react-native": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-4.0.1.tgz",
+ "integrity": "sha512-uhFXnl1WbEWNG4W8QB/jeQaVXkd0a0AD+wh4D2VqtdRnEyvscahqyHExnwKLU9N0sXRYwDyed4JfbiBtiOSGgA==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-check-es2015-constants": "^6.5.0",
+ "babel-plugin-react-transform": "^3.0.0",
+ "babel-plugin-syntax-async-functions": "^6.5.0",
+ "babel-plugin-syntax-class-properties": "^6.5.0",
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
+ "babel-plugin-syntax-flow": "^6.5.0",
+ "babel-plugin-syntax-jsx": "^6.5.0",
+ "babel-plugin-syntax-trailing-function-commas": "^6.5.0",
+ "babel-plugin-transform-class-properties": "^6.5.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.5.0",
+ "babel-plugin-transform-es2015-block-scoping": "^6.5.0",
+ "babel-plugin-transform-es2015-classes": "^6.5.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.5.0",
+ "babel-plugin-transform-es2015-destructuring": "^6.5.0",
+ "babel-plugin-transform-es2015-for-of": "^6.5.0",
+ "babel-plugin-transform-es2015-function-name": "^6.5.0",
+ "babel-plugin-transform-es2015-literals": "^6.5.0",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.5.0",
+ "babel-plugin-transform-es2015-parameters": "^6.5.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0",
+ "babel-plugin-transform-es2015-spread": "^6.5.0",
+ "babel-plugin-transform-es2015-template-literals": "^6.5.0",
+ "babel-plugin-transform-exponentiation-operator": "^6.5.0",
+ "babel-plugin-transform-flow-strip-types": "^6.5.0",
+ "babel-plugin-transform-object-assign": "^6.5.0",
+ "babel-plugin-transform-object-rest-spread": "^6.5.0",
+ "babel-plugin-transform-react-display-name": "^6.5.0",
+ "babel-plugin-transform-react-jsx": "^6.5.0",
+ "babel-plugin-transform-react-jsx-source": "^6.5.0",
+ "babel-plugin-transform-regenerator": "^6.5.0",
+ "babel-template": "^6.24.1",
+ "react-transform-hmr": "^1.0.4"
+ }
+ },
+ "node_modules/babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "node_modules/babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "node_modules/babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==",
+ "dev": true,
+ "dependencies": {
+ "babel-code-frame": "^6.26.0",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "debug": "^2.6.8",
+ "globals": "^9.18.0",
+ "invariant": "^2.2.2",
+ "lodash": "^4.17.4"
+ }
+ },
+ "node_modules/babel-traverse/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/babel-traverse/node_modules/globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-traverse/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==",
+ "dev": true,
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.4",
+ "to-fast-properties": "^1.0.3"
+ }
+ },
+ "node_modules/babel-types/node_modules/to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true,
+ "bin": {
+ "babylon": "bin/babylon.js"
+ }
+ },
+ "node_modules/backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA=="
+ },
+ "node_modules/badgin": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/badgin/-/badgin-1.2.3.tgz",
+ "integrity": "sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw=="
+ },
+ "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=="
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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"
+ }
+ ]
+ },
+ "node_modules/better-opn": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz",
+ "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==",
+ "dependencies": {
+ "open": "^8.0.4"
+ },
+ "engines": {
+ "node": ">=12.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==",
+ "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==",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/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==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/blueimp-md5": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
+ "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "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"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ },
+ "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==",
+ "dependencies": {
+ "stream-buffers": "2.2.x"
+ }
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
+ "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.5",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
+ },
+ "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==",
+ "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"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
+ "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=="
+ },
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+ "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "dependencies": {
+ "@npmcli/fs": "^1.0.0",
+ "@npmcli/move-file": "^1.0.1",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.1",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^1.0.3",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^8.0.1",
+ "tar": "^6.0.2",
+ "unique-filename": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cacache/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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacache/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacache/node_modules/rimraf": {
+ "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"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "callsites": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caller-callsite/node_modules/callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "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==",
+ "dependencies": {
+ "caller-callsite": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001468",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz",
+ "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ }
+ ]
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "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"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+ "dev": true
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
+ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
+ "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+ "dev": true,
+ "dependencies": {
+ "slice-ansi": "^5.0.0",
+ "string-width": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/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==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "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==",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
+ "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+ "dev": true
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color": {
+ "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"
+ },
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/colorette": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
+ "dev": true
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "node_modules/compare-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-urls/-/compare-urls-2.0.0.tgz",
+ "integrity": "sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==",
+ "dependencies": {
+ "normalize-url": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "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=="
+ },
+ "node_modules/component-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz",
+ "integrity": "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg=="
+ },
+ "node_modules/compressible": {
+ "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"
+ },
+ "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==",
+ "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/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/connect": {
+ "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"
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "dev": true,
+ "hasInstallScript": true
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.29.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz",
+ "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==",
+ "dependencies": {
+ "browserslist": "^4.21.5"
+ },
+ "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=="
+ },
+ "node_modules/cosmiconfig": {
+ "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"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/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==",
+ "dependencies": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/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==",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "dependencies": {
+ "node-fetch": "2.6.7"
+ }
+ },
+ "node_modules/cross-fetch/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ },
+ "node_modules/dag-map": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
+ "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw=="
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.7",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
+ "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ },
+ "node_modules/debug": {
+ "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"
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dependencies": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defaults/node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/del": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
+ "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+ "dependencies": {
+ "globby": "^11.0.1",
+ "graceful-fs": "^4.2.4",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.2",
+ "p-map": "^4.0.0",
+ "rimraf": "^3.0.2",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/del/node_modules/rimraf": {
+ "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"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/deprecated-react-native-prop-types": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.0.0.tgz",
+ "integrity": "sha512-q0kk77qFPC4adlnZH7cv9lfbHALeaTkl7wT1uNERc+e0Os3KcBKKy1rVliTE8sfey6TP6OPzoIXpr9OPidvvHw==",
+ "dependencies": {
+ "@react-native/normalize-colors": "*",
+ "invariant": "*",
+ "prop-types": "*"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.1.tgz",
+ "integrity": "sha512-Fx8jxibzkJX2aJgyfSdLhr9tlRoTnHKrRJuu2XHlAgKioN2j19/Bcbe0d4mFXYZ3+wpE2KVobUVTfDutcD17xQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
+ "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
+ "dev": true
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+ "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "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=="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.333",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.333.tgz",
+ "integrity": "sha512-YyE8+GKyGtPEP1/kpvqsdhD6rA/TP1DUFDN4uiU/YI52NzDxmwHkEb3qjId8hLBa5siJvG0sfC3O66501jMruQ=="
+ },
+ "node_modules/emittery": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-editor": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz",
+ "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/envinfo": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eol": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz",
+ "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg=="
+ },
+ "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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "accepts": "~1.3.7",
+ "escape-html": "~1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.21.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
+ "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.2.0",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es6-object-assign": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
+ "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw=="
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.36.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz",
+ "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.4.0",
+ "@eslint/eslintrc": "^2.0.1",
+ "@eslint/js": "8.36.0",
+ "@humanwhocodes/config-array": "^0.11.8",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.5.0",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "grapheme-splitter": "^1.0.4",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-sdsl": "^4.1.4",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.1",
+ "strip-ansi": "^6.0.1",
+ "strip-json-comments": "^3.1.0",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-standard": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz",
+ "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peerDependencies": {
+ "eslint": "^8.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0",
+ "eslint-plugin-promise": "^6.0.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+ "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
+ "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-es": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
+ "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^2.0.0",
+ "regexpp": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=4.19.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.27.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
+ "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.7.4",
+ "has": "^1.0.3",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.6",
+ "resolve": "^1.22.1",
+ "semver": "^6.3.0",
+ "tsconfig-paths": "^3.14.1"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-node": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
+ "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
+ "dev": true,
+ "dependencies": {
+ "eslint-plugin-es": "^3.0.0",
+ "eslint-utils": "^2.0.0",
+ "ignore": "^5.1.1",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=5.16.0"
+ }
+ },
+ "node_modules/eslint-plugin-promise": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+ "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.32.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
+ "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.0",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
+ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.9.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/eslint-plugin-standard": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz",
+ "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==",
+ "deprecated": "standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with 'npm rm eslint-plugin-standard'. More info here: https://github.com/standard/standard/issues/1316",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peerDependencies": {
+ "eslint": ">=5.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/eslint/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,
+ "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/eslint/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/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
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz",
+ "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
+ },
+ "node_modules/exec-async": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz",
+ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw=="
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dependencies": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "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"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/expect": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
+ "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/expect-utils": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expo": {
+ "version": "47.0.13",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz",
+ "integrity": "sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==",
+ "dependencies": {
+ "@babel/runtime": "^7.14.0",
+ "@expo/cli": "0.4.11",
+ "@expo/config": "7.0.3",
+ "@expo/config-plugins": "5.0.4",
+ "@expo/vector-icons": "^13.0.0",
+ "babel-preset-expo": "~9.2.2",
+ "cross-spawn": "^6.0.5",
+ "expo-application": "~5.0.1",
+ "expo-asset": "~8.7.0",
+ "expo-constants": "~14.0.2",
+ "expo-file-system": "~15.1.1",
+ "expo-font": "~11.0.1",
+ "expo-keep-awake": "~11.0.1",
+ "expo-modules-autolinking": "1.0.2",
+ "expo-modules-core": "1.1.1",
+ "fbemitter": "^3.0.0",
+ "getenv": "^1.0.0",
+ "invariant": "^2.2.4",
+ "md5-file": "^3.2.3",
+ "node-fetch": "^2.6.7",
+ "pretty-format": "^26.5.2",
+ "uuid": "^3.4.0"
+ },
+ "bin": {
+ "expo": "bin/cli.js"
+ },
+ "optionalDependencies": {
+ "expo-error-recovery": "~4.0.1"
+ }
+ },
+ "node_modules/expo-app-loading": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/expo-app-loading/-/expo-app-loading-2.1.1.tgz",
+ "integrity": "sha512-b3VNkPuFaI9J847HSpjI4uiuyE4+IWyAIPT9uzbkS7QFknL99DMoihtgzeWzKaJKSAmbYc3ph2Vl9skJAkVYUg==",
+ "dependencies": {
+ "expo-splash-screen": "~0.17.0"
+ }
+ },
+ "node_modules/expo-apple-authentication": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/expo-apple-authentication/-/expo-apple-authentication-5.0.1.tgz",
+ "integrity": "sha512-xdHZb57gQb2eQYQdmZ2M5x4tQOiK1mkL5FW5oYDg9WefN3LMi1ypcjcVTeFstdkdpgwQDx18P2F52JtNA/jJdQ==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-application": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz",
+ "integrity": "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-asset": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz",
+ "integrity": "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==",
+ "dependencies": {
+ "blueimp-md5": "^2.10.0",
+ "expo-constants": "~14.0.0",
+ "expo-file-system": "~15.1.0",
+ "invariant": "^2.2.4",
+ "md5-file": "^3.2.3",
+ "path-browserify": "^1.0.0",
+ "url-parse": "^1.5.9"
+ }
+ },
+ "node_modules/expo-auth-session": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-3.8.0.tgz",
+ "integrity": "sha512-pQ8GryTTZL/JKHvifUGD4GGlZWo7RrcoQlvQ0O5m5edYfoa7fMHCg20MBX4Da4P3eVgJlqWZWCHfBC2fZxcRfA==",
+ "dependencies": {
+ "expo-constants": "~14.0.0",
+ "expo-crypto": "~12.0.0",
+ "expo-linking": "~3.3.0",
+ "expo-web-browser": "~12.0.0",
+ "invariant": "^2.2.4",
+ "qs": "6.9.1"
+ },
+ "peerDependencies": {
+ "expo-random": "*"
+ },
+ "peerDependenciesMeta": {
+ "expo-random": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/expo-auth-session/node_modules/qs": {
+ "version": "6.9.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz",
+ "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==",
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/expo-camera": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-13.1.0.tgz",
+ "integrity": "sha512-YD1Gd5nyhk3ekXgVTsTLrhd0Nlug51NI7hjBKq2BOP+X5YyrcZLVarZAXXdc5vgeW73VBYIne1rpX9Q0qJdlrw==",
+ "dependencies": {
+ "@koale/useworker": "^4.0.2",
+ "invariant": "^2.2.4"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-constants": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz",
+ "integrity": "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==",
+ "dependencies": {
+ "@expo/config": "~7.0.2",
+ "uuid": "^3.3.2"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-contacts": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/expo-contacts/-/expo-contacts-11.0.1.tgz",
+ "integrity": "sha512-tyoPNySlTgYMnz6dhn47TUpiEbjXYrChruzhsSq0cW/m8Yc8TDT310FuFw0jZQn+FF0a4gMDye2a47YWmtkoOg==",
+ "dependencies": {
+ "uuid": "^3.4.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-crypto": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-12.0.0.tgz",
+ "integrity": "sha512-2KC52eLYsXndDZOVFyr+K3Zs9wDgpqZ7F7fwAiUg+yNbE21CJrHKDFvo/Br0FAaDf/w9pUks5/qi1azB5sDzvg==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-device": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-5.0.0.tgz",
+ "integrity": "sha512-FWlbOUMzAjHojLER8fnS42vLT7aqZ7IoEY+nw/RqmW17SA3GE2lzcYxRYZs1vAIgDnLzcS5CQMp08Eu+EXih1g==",
+ "dependencies": {
+ "ua-parser-js": "^0.7.19"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-eas-client": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.4.1.tgz",
+ "integrity": "sha512-bIj2rm6lw/iZAOAW5CSAxshSXi2oY+ORpHRp4ZdqSDuwA0RIa9jGyMm1Jhostjjz5y9k2uur5vtVqq6P3Bwx/Q=="
+ },
+ "node_modules/expo-error-recovery": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz",
+ "integrity": "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==",
+ "optional": true,
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-file-system": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz",
+ "integrity": "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==",
+ "dependencies": {
+ "uuid": "^3.4.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-font": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz",
+ "integrity": "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==",
+ "dependencies": {
+ "fontfaceobserver": "^2.1.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-loader": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-4.0.0.tgz",
+ "integrity": "sha512-hVMhXagsO1cSng5s70IEjuJAuHy2hX/inu5MM3T0ecJMf7L/7detKf22molQBRymerbk6Tzu+20h11eU0n/3jQ==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-picker": {
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-14.0.3.tgz",
+ "integrity": "sha512-VN5wMWzhYhIRhFq8I1pjMbn/ivjlhWfxzJpz5jUOf3mQ8vxrI5GcR8cJO9kyYwuCrI9W3GUzh/aDt7QRSTQDDA==",
+ "dependencies": {
+ "expo-image-loader": "~4.0.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-json-utils": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.4.0.tgz",
+ "integrity": "sha512-lK6gjea72XTYafpKNNJaMrBK5dYAX8LFLXrp/M1MKJU4Zy7EHd2rKrLwop3GZts8VdwLHeVcMko79SAbhe3i5Q=="
+ },
+ "node_modules/expo-keep-awake": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz",
+ "integrity": "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-linking": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-3.3.1.tgz",
+ "integrity": "sha512-T3VIZMyZhkBOpHIyfT514rweGZZMbdg1vwavsfAkm6BFJ8G0iNVGbYMTpoUiQ9xdA0ARCcZbXFFb+WhqEUITgQ==",
+ "dependencies": {
+ "@types/qs": "^6.5.3",
+ "expo-constants": "~14.0.0",
+ "invariant": "^2.2.4",
+ "qs": "^6.9.1",
+ "url-parse": "^1.5.9"
+ }
+ },
+ "node_modules/expo-localization": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-14.0.0.tgz",
+ "integrity": "sha512-Rx4ZAANTTVuY6EnM3WXjNWn+CSpDUOaJziHPB4Az+lb4r3JMQ1H+go9s8KY9DYP0IiRM3sQhiyFQqSWzsUgvHA==",
+ "dependencies": {
+ "rtl-detect": "^1.0.2"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-location": {
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-15.0.1.tgz",
+ "integrity": "sha512-GOAP24m8fMahFcBT75H07f2+IQAOCOdNTzb8Ci/19NZ+Y/CY2lIvb55V8zu7Gn0+76FKPb7XC3ebQaq4ctn1QA==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-manifests": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.4.0.tgz",
+ "integrity": "sha512-IdZjIYDxx4nH0Gb3X4T4/2YknmR/jSLxymAS0m7SfJ9V7Vlu/y0p3lNwUys9/JzihxX9PDIuOi/Y4/uqL6TlXg==",
+ "dependencies": {
+ "expo-json-utils": "~0.4.0"
+ }
+ },
+ "node_modules/expo-modules-autolinking": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz",
+ "integrity": "sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "fast-glob": "^3.2.5",
+ "find-up": "^5.0.0",
+ "fs-extra": "^9.1.0"
+ },
+ "bin": {
+ "expo-modules-autolinking": "bin/expo-modules-autolinking.js"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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=="
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-modules-core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz",
+ "integrity": "sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q==",
+ "dependencies": {
+ "compare-versions": "^3.4.0",
+ "invariant": "^2.2.4"
+ }
+ },
+ "node_modules/expo-notifications": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.17.0.tgz",
+ "integrity": "sha512-PPjV5WaL5iIKAqi/qsNUVf0g4htz+Mx+6tZ/Py7vIurAHbA2PymgV7UPSEB1gUbhzi5PZMGj/DNFJpSZwgqmNg==",
+ "dependencies": {
+ "@expo/image-utils": "^0.3.18",
+ "@ide/backoff": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "assert": "^2.0.0",
+ "badgin": "^1.1.5",
+ "expo-application": "~5.0.0",
+ "expo-constants": "~14.0.0",
+ "fs-extra": "^9.1.0",
+ "uuid": "^3.4.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/expo-notifications/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-random": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-13.0.0.tgz",
+ "integrity": "sha512-aGb0vtUmFFuW0TF1rdOgsz89zEVD/RXUPUnnZy5+i3jJeQ2PerJ4uo72/EuWqHpCBNto8/qT+aCzFinmQDeTAA==",
+ "dependencies": {
+ "base64-js": "^1.3.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-sensors": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/expo-sensors/-/expo-sensors-12.0.1.tgz",
+ "integrity": "sha512-XsrHC7RD8dx9jHiY7DKvMhm14k59uCyKoZki0A0hyOn8NeVG/GUuCZtZwqFog2Ozc4jKidBWQ1OQp5Xq4xJXvQ==",
+ "dependencies": {
+ "invariant": "^2.2.4"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-splash-screen": {
+ "version": "0.17.5",
+ "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.17.5.tgz",
+ "integrity": "sha512-ejSO78hwHXz8T9u8kh8t4r6CR4h70iBvA65gX8GK+dYxZl6/IANPbIb2VnUpND9vqfW+JnkDw+ZFst+gDnkpcQ==",
+ "dependencies": {
+ "@expo/configure-splash-screen": "^0.6.0",
+ "@expo/prebuild-config": "5.0.7"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-status-bar": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.4.tgz",
+ "integrity": "sha512-5DV0hIEWgatSC3UgQuAZBoQeaS9CqeWRZ3vzBR9R/+IUD87Adbi4FGhU10nymRqFXOizGsureButGZIXPs7zEA=="
+ },
+ "node_modules/expo-structured-headers": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-3.0.1.tgz",
+ "integrity": "sha512-x6hkzuQL5HJoyB+xQyBf9M04ZUmrjFWqEW7gzIYWN/6LA+dgyaV4fF6U9++Re+GgGjF03vHJFqR1xYaosKKZYQ=="
+ },
+ "node_modules/expo-tracking-transparency": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/expo-tracking-transparency/-/expo-tracking-transparency-3.0.3.tgz",
+ "integrity": "sha512-jM/wIEKGV6DlHKNcEWN39HRPosJhRcbCrmfgWVn5A3ILYsWWvM4pToKGz34BLmg/6iTsq+ONNzuQiwBxJJzbWA==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-updates": {
+ "version": "0.15.6",
+ "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.15.6.tgz",
+ "integrity": "sha512-g5BuCmWdyiLqFaVkVz+m7r6U7MHJrLKvqybs04H6ArMNpTEf6FhUwSzmnCyOkSSP35KFNkC/I0dYlgW3Vcf1sw==",
+ "dependencies": {
+ "@expo/code-signing-certificates": "0.0.5",
+ "@expo/config": "~7.0.2",
+ "@expo/config-plugins": "~5.0.3",
+ "@expo/metro-config": "~0.5.0",
+ "arg": "4.1.0",
+ "expo-eas-client": "~0.4.0",
+ "expo-manifests": "~0.4.0",
+ "expo-structured-headers": "~3.0.0",
+ "expo-updates-interface": "~0.8.0",
+ "fbemitter": "^3.0.0",
+ "resolve-from": "^5.0.0",
+ "uuid": "^3.4.0"
+ },
+ "bin": {
+ "expo-updates": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-updates-interface": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.8.1.tgz",
+ "integrity": "sha512-1TPFCTQFHMZbltFGnxig3PbN/b6nO4T0RyL8XqdmYvQY0ElOCprZXQQ8vNDqeLYHgausG1lD4OyJwFzh2SNBSA==",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-web-browser": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.0.0.tgz",
+ "integrity": "sha512-7/RUuE0sv5kf+mTw5/SOnks0Am1ctoxvT1Xi53Nom2EuXTKBV+b2Kf5xAw3ItoW5W4MHJUX3FdNI6qc9sS9+Pw==",
+ "dependencies": {
+ "compare-urls": "^2.0.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/expo/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/expo/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/expo/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expo/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expo/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extract-files": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-5.0.1.tgz",
+ "integrity": "sha512-qRW6y9eKF0VbCyOoOEtFhzJ3uykAw8GKwQVXyAIqwocyEWW4m+v+evec34RwtUkkxxHh7NKBLJ6AnXM8W4dH5w==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/fbemitter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz",
+ "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==",
+ "dependencies": {
+ "fbjs": "^3.0.0"
+ }
+ },
+ "node_modules/fbjs": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz",
+ "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==",
+ "dependencies": {
+ "cross-fetch": "^3.1.5",
+ "fbjs-css-vars": "^1.0.0",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.30"
+ }
+ },
+ "node_modules/fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="
+ },
+ "node_modules/fetch-retry": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz",
+ "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA=="
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.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==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/finalhandler/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==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-babel-config": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
+ "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
+ "dependencies": {
+ "json5": "^0.5.1",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/find-babel-config/node_modules/json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-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==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-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==",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/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==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-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==",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/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==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "dependencies": {
+ "micromatch": "^4.0.2"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "node_modules/flow-parser": {
+ "version": "0.121.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz",
+ "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/fontfaceobserver": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz",
+ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg=="
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/freeport-async": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz",
+ "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "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==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 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=="
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "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==",
+ "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==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
+ "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/getenv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
+ "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/glob": {
+ "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"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dev": true,
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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=="
+ },
+ "node_modules/grapheme-splitter": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "dev": true
+ },
+ "node_modules/graphql": {
+ "version": "16.6.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
+ "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/graphql-anywhere": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.2.8.tgz",
+ "integrity": "sha512-bKeJJoY9JyWMAiz5isKrtYUdIUBOBiXUOrA9CQgs9Drh9itFtxhWndQH4UBuYfrMticum6Oj1uQ6iSvZk94cMQ==",
+ "dependencies": {
+ "apollo-utilities": "^1.3.4",
+ "ts-invariant": "^0.3.2",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "graphql": ">= 0.11.0"
+ }
+ },
+ "node_modules/graphql-anywhere/node_modules/ts-invariant": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.3.tgz",
+ "integrity": "sha512-UReOKsrJFGC9tUblgSRWo+BsVNbEd77Cl6WiV/XpMlkifXwNIJbknViCucHvVZkXSC/mcWeRnIGdY7uprcwvdQ==",
+ "dependencies": {
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/graphql-anywhere/node_modules/ts-invariant/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/graphql-tag": {
+ "version": "2.12.6",
+ "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz",
+ "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/has": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hermes-estree": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz",
+ "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q=="
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz",
+ "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==",
+ "dependencies": {
+ "hermes-estree": "0.8.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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
+ "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/husky": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
+ "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
+ "dev": true,
+ "bin": {
+ "husky": "lib/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
+ }
+ },
+ "node_modules/i18n-js": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/i18n-js/-/i18n-js-3.9.2.tgz",
+ "integrity": "sha512-+Gm8h5HL0emzKhRx2avMKX+nKiVPXeaOZm7Euf2/pbbFcLQoJ3zZYiUykAzoRasijCoWos2Kl1tslmScTgAQKw=="
+ },
+ "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==",
+ "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"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
+ "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==",
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "node_modules/internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dependencies": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/invariant": {
+ "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"
+ }
+ },
+ "node_modules/invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
+ },
+ "node_modules/ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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=="
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-ci/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=="
+ },
+ "node_modules/is-core-module": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
+ "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-invalid-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
+ "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
+ "dependencies": {
+ "is-glob": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
+ "dependencies": {
+ "is-extglob": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-root": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
+ "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-valid-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
+ "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
+ "dependencies": {
+ "is-invalid-path": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/iterall": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
+ "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg=="
+ },
+ "node_modules/jest": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
+ "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "import-local": "^3.0.2",
+ "jest-cli": "^29.5.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
+ "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0",
+ "p-limit": "^3.1.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "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/jest-changed-files/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-changed-files/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-changed-files/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==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
+ "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.5.0",
+ "@jest/expect": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^29.5.0",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "p-limit": "^3.1.0",
+ "pretty-format": "^29.5.0",
+ "pure-rand": "^6.0.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-circus/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/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,
+ "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-circus/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-circus/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
+ },
+ "node_modules/jest-circus/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-circus/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/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==",
+ "dev": true
+ },
+ "node_modules/jest-circus/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
+ "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
+ "prompts": "^2.0.1",
+ "yargs": "^17.3.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "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-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==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
+ "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/test-sequencer": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "babel-jest": "^29.5.0",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^29.5.0",
+ "jest-environment-node": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-runner": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^29.5.0",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "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-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==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-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==",
+ "dev": true
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-config/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/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==",
+ "dev": true
+ },
+ "node_modules/jest-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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
+ "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.4.3",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
+ },
+ "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,
+ "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,
+ "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,
+ "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
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-diff/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/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==",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
+ "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+ "dev": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
+ "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.4.3",
+ "jest-util": "^29.5.0",
+ "pretty-format": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-each/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/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,
+ "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-each/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-each/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
+ },
+ "node_modules/jest-each/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-each/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/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==",
+ "dev": true
+ },
+ "node_modules/jest-each/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
+ "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.5.0",
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "jest-mock": "^29.5.0",
+ "jest-util": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
+ "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
+ "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "@types/graceful-fs": "^4.1.3",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^29.4.3",
+ "jest-util": "^29.5.0",
+ "jest-worker": "^29.5.0",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
+ "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-leak-detector/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector/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==",
+ "dev": true
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
+ "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "pretty-format": "^29.5.0"
+ },
+ "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,
+ "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,
+ "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,
+ "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
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/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==",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
+ "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.5.0",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.5.0",
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
+ "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "jest-util": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-react-native": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/jest-react-native/-/jest-react-native-18.0.0.tgz",
+ "integrity": "sha512-BPL0WBX1kx+qo4KB92o82pcq4uFXH6gmYtN7DDj+etMK6pvtWwPFWpvT9JHmaS96wP5Xf9Vq2ilAxXycgHeMog==",
+ "dev": true,
+ "peerDependencies": {
+ "react-native": ">=0.38.0"
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "29.4.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
+ "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
+ "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.5.0",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^29.5.0",
+ "jest-validate": "^29.5.0",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^2.0.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
+ "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+ "dev": true,
+ "dependencies": {
+ "jest-regex-util": "^29.4.3",
+ "jest-snapshot": "^29.5.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-resolve/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/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,
+ "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-resolve/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-resolve/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
+ },
+ "node_modules/jest-resolve/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
+ "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^29.5.0",
+ "@jest/environment": "^29.5.0",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^29.4.3",
+ "jest-environment-node": "^29.5.0",
+ "jest-haste-map": "^29.5.0",
+ "jest-leak-detector": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-resolve": "^29.5.0",
+ "jest-runtime": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "jest-watcher": "^29.5.0",
+ "jest-worker": "^29.5.0",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-runner/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/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,
+ "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-runner/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runner/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
+ },
+ "node_modules/jest-runner/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
+ "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.5.0",
+ "@jest/fake-timers": "^29.5.0",
+ "@jest/globals": "^29.5.0",
+ "@jest/source-map": "^29.4.3",
+ "@jest/test-result": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-mock": "^29.5.0",
+ "jest-regex-util": "^29.4.3",
+ "jest-resolve": "^29.5.0",
+ "jest-snapshot": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-runtime/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/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,
+ "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-runtime/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runtime/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
+ },
+ "node_modules/jest-runtime/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
+ "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.5.0",
+ "@jest/transform": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/babel__traverse": "^7.0.6",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^29.5.0",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^29.5.0",
+ "jest-get-type": "^29.4.3",
+ "jest-matcher-utils": "^29.5.0",
+ "jest-message-util": "^29.5.0",
+ "jest-util": "^29.5.0",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^29.5.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/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,
+ "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-snapshot/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/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
+ },
+ "node_modules/jest-snapshot/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/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==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/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==",
+ "dev": true
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/jest-util": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
+ "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "@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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
+ "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.5.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.4.3",
+ "leven": "^3.1.0",
+ "pretty-format": "^29.5.0"
+ },
+ "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==",
+ "dev": true,
+ "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/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/pretty-format": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
+ "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.4.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
+ "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.5.0",
+ "@jest/types": "^29.5.0",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.13.1",
+ "jest-util": "^29.5.0",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-watcher/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/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,
+ "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-watcher/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-watcher/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
+ },
+ "node_modules/jest-watcher/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "29.5.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
+ "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.5.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jimp-compact": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz",
+ "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww=="
+ },
+ "node_modules/joi": {
+ "version": "17.8.4",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.4.tgz",
+ "integrity": "sha512-jjdRHb5WtL+KgSHvOULQEPPv4kcl+ixd1ybOFQq3rWLgEEqc03QMmilodL0GVJE14U/SQDXkUhQUSZANGDH/AA==",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0",
+ "@hapi/topo": "^5.0.0",
+ "@sideway/address": "^4.1.3",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/join-component": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
+ "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ=="
+ },
+ "node_modules/js-sdsl": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
+ "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsc-android": {
+ "version": "250230.2.1",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz",
+ "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q=="
+ },
+ "node_modules/jscodeshift": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz",
+ "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==",
+ "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": "^3.1.10",
+ "neo-async": "^2.5.0",
+ "node-dir": "^0.1.17",
+ "recast": "^0.20.4",
+ "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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/jscodeshift/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/rimraf": {
+ "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"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jscodeshift/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==",
+ "dependencies": {
+ "rimraf": "~2.6.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/jscodeshift/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jscodeshift/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==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "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=="
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-deref-sync": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz",
+ "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==",
+ "dependencies": {
+ "clone": "^2.1.2",
+ "dag-map": "~1.0.0",
+ "is-valid-path": "^0.1.1",
+ "lodash": "^4.17.13",
+ "md5": "~2.2.0",
+ "memory-cache": "~0.2.0",
+ "traverse": "~0.6.6",
+ "valid-url": "~1.0.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/json-schema-deref-sync/node_modules/md5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
+ "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==",
+ "dependencies": {
+ "charenc": "~0.0.1",
+ "crypt": "~0.0.1",
+ "is-buffer": "~1.1.1"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "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==",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
+ "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.5",
+ "object.assign": "^4.1.3"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "node_modules/klaw-sync": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
+ "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
+ "dependencies": {
+ "graceful-fs": "^4.1.11"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
+ "dependencies": {
+ "invert-kv": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/lint-staged": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
+ "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "5.2.0",
+ "cli-truncate": "^3.1.0",
+ "commander": "^10.0.0",
+ "debug": "^4.3.4",
+ "execa": "^7.0.0",
+ "lilconfig": "2.1.0",
+ "listr2": "^5.0.7",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-inspect": "^1.12.3",
+ "pidtree": "^0.6.0",
+ "string-argv": "^0.3.1",
+ "yaml": "^2.2.1"
+ },
+ "bin": {
+ "lint-staged": "bin/lint-staged.js"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/lint-staged"
+ }
+ },
+ "node_modules/lint-staged/node_modules/chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/node_modules/commander": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
+ "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/lint-staged/node_modules/execa": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
+ "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/lint-staged/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/listr2": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
+ "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
+ "dev": true,
+ "dependencies": {
+ "cli-truncate": "^2.1.0",
+ "colorette": "^2.0.19",
+ "log-update": "^4.0.0",
+ "p-map": "^4.0.0",
+ "rfdc": "^1.3.0",
+ "rxjs": "^7.8.0",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "enquirer": ">= 2.3.0 < 3"
+ },
+ "peerDependenciesMeta": {
+ "enquirer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/listr2/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/listr2/node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/listr2/node_modules/cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "dev": true,
+ "dependencies": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/listr2/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/listr2/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
+ },
+ "node_modules/listr2/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==",
+ "dev": true
+ },
+ "node_modules/listr2/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/listr2/node_modules/slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/listr2/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==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/load-json-file/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/load-json-file/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "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=="
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "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=="
+ },
+ "node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dependencies": {
+ "chalk": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-update": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.3.0",
+ "cli-cursor": "^3.1.0",
+ "slice-ansi": "^4.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/log-update/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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/log-update/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
+ },
+ "node_modules/log-update/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==",
+ "dev": true
+ },
+ "node_modules/log-update/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/log-update/node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/log-update/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==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/log-update/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==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.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==",
+ "dependencies": {
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^15.1.0"
+ },
+ "bin": {
+ "logkitty": "bin/logkitty.js"
+ }
+ },
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/logkitty/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=="
+ },
+ "node_modules/logkitty/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=="
+ },
+ "node_modules/logkitty/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/md5-file": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz",
+ "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==",
+ "dependencies": {
+ "buffer-alloc": "^1.1.0"
+ },
+ "bin": {
+ "md5-file": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/md5hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz",
+ "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ=="
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==",
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mem/node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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=="
+ },
+ "node_modules/memory-cache": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
+ "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA=="
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/metro": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz",
+ "integrity": "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/core": "^7.14.0",
+ "@babel/generator": "^7.14.0",
+ "@babel/parser": "^7.14.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.0.0",
+ "absolute-path": "^0.0.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",
+ "fs-extra": "^1.0.0",
+ "graceful-fs": "^4.2.4",
+ "hermes-parser": "0.8.0",
+ "image-size": "^0.6.0",
+ "invariant": "^2.2.4",
+ "jest-worker": "^27.2.0",
+ "lodash.throttle": "^4.1.1",
+ "metro-babel-transformer": "0.72.3",
+ "metro-cache": "0.72.3",
+ "metro-cache-key": "0.72.3",
+ "metro-config": "0.72.3",
+ "metro-core": "0.72.3",
+ "metro-file-map": "0.72.3",
+ "metro-hermes-compiler": "0.72.3",
+ "metro-inspector-proxy": "0.72.3",
+ "metro-minify-uglify": "0.72.3",
+ "metro-react-native-babel-preset": "0.72.3",
+ "metro-resolver": "0.72.3",
+ "metro-runtime": "0.72.3",
+ "metro-source-map": "0.72.3",
+ "metro-symbolicate": "0.72.3",
+ "metro-transform-plugins": "0.72.3",
+ "metro-transform-worker": "0.72.3",
+ "mime-types": "^2.1.27",
+ "node-fetch": "^2.2.0",
+ "nullthrows": "^1.1.1",
+ "rimraf": "^2.5.4",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "strip-ansi": "^6.0.0",
+ "temp": "0.8.3",
+ "throat": "^5.0.0",
+ "ws": "^7.5.1",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "metro": "src/cli.js"
+ }
+ },
+ "node_modules/metro-babel-transformer": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz",
+ "integrity": "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "hermes-parser": "0.8.0",
+ "metro-source-map": "0.72.3",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "node_modules/metro-cache": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz",
+ "integrity": "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==",
+ "dependencies": {
+ "metro-core": "0.72.3",
+ "rimraf": "^2.5.4"
+ }
+ },
+ "node_modules/metro-cache-key": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz",
+ "integrity": "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg=="
+ },
+ "node_modules/metro-config": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz",
+ "integrity": "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==",
+ "dependencies": {
+ "cosmiconfig": "^5.0.5",
+ "jest-validate": "^26.5.2",
+ "metro": "0.72.3",
+ "metro-cache": "0.72.3",
+ "metro-core": "0.72.3",
+ "metro-runtime": "0.72.3"
+ }
+ },
+ "node_modules/metro-config/node_modules/@jest/types": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/metro-config/node_modules/@types/yargs": {
+ "version": "15.0.15",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
+ "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/metro-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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/metro-config/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/metro-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==",
+ "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-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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/metro-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=="
+ },
+ "node_modules/metro-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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-config/node_modules/jest-get-type": {
+ "version": "26.3.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
+ "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/metro-config/node_modules/jest-validate": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz",
+ "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==",
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "camelcase": "^6.0.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^26.3.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^26.6.2"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/metro-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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-core": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz",
+ "integrity": "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==",
+ "dependencies": {
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.72.3"
+ }
+ },
+ "node_modules/metro-file-map": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz",
+ "integrity": "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "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-serializer": "^27.0.6",
+ "jest-util": "^27.2.0",
+ "jest-worker": "^27.2.0",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.1.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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-file-map/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==",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "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==",
+ "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/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==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/metro-file-map/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-hermes-compiler": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz",
+ "integrity": "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg=="
+ },
+ "node_modules/metro-inspector-proxy": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz",
+ "integrity": "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==",
+ "dependencies": {
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "ws": "^7.5.1",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "metro-inspector-proxy": "src/cli.js"
+ }
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/cliui": {
+ "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"
+ }
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/metro-inspector-proxy/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=="
+ },
+ "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==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro-inspector-proxy/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=="
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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=="
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro-inspector-proxy/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "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/metro-inspector-proxy/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=="
+ },
+ "node_modules/metro-inspector-proxy/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==",
+ "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/metro-inspector-proxy/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==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/metro-minify-uglify": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz",
+ "integrity": "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==",
+ "dependencies": {
+ "uglify-es": "^3.1.9"
+ }
+ },
+ "node_modules/metro-react-native-babel-preset": {
+ "version": "0.75.1",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.75.1.tgz",
+ "integrity": "sha512-a4Se/koIVsH+wmfWsSOiRpFLBSICJcbd6o1wv37QRoFSnH7mYXDOfYxNBZYX46PwN1QwmgR49Iwsef79JOaJMg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.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.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-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": ">=14.17.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-react-native-babel-transformer": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz",
+ "integrity": "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "babel-preset-fbjs": "^3.4.0",
+ "hermes-parser": "0.8.0",
+ "metro-babel-transformer": "0.72.3",
+ "metro-react-native-babel-preset": "0.72.3",
+ "metro-source-map": "0.72.3",
+ "nullthrows": "^1.1.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-react-native-babel-transformer/node_modules/metro-react-native-babel-preset": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz",
+ "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.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.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-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.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-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/metro-resolver": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz",
+ "integrity": "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==",
+ "dependencies": {
+ "absolute-path": "^0.0.0"
+ }
+ },
+ "node_modules/metro-runtime": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz",
+ "integrity": "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==",
+ "dependencies": {
+ "@babel/runtime": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ }
+ },
+ "node_modules/metro-source-map": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz",
+ "integrity": "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==",
+ "dependencies": {
+ "@babel/traverse": "^7.14.0",
+ "@babel/types": "^7.0.0",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.72.3",
+ "nullthrows": "^1.1.1",
+ "ob1": "0.72.3",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
+ }
+ },
+ "node_modules/metro-source-map/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-symbolicate": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz",
+ "integrity": "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==",
+ "dependencies": {
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.72.3",
+ "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": ">=8.3"
+ }
+ },
+ "node_modules/metro-symbolicate/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-transform-plugins": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz",
+ "integrity": "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/generator": "^7.14.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.14.0",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "node_modules/metro-transform-worker": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz",
+ "integrity": "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/generator": "^7.14.0",
+ "@babel/parser": "^7.14.0",
+ "@babel/types": "^7.0.0",
+ "babel-preset-fbjs": "^3.4.0",
+ "metro": "0.72.3",
+ "metro-babel-transformer": "0.72.3",
+ "metro-cache": "0.72.3",
+ "metro-cache-key": "0.72.3",
+ "metro-hermes-compiler": "0.72.3",
+ "metro-source-map": "0.72.3",
+ "metro-transform-plugins": "0.72.3",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/metro/node_modules/cliui": {
+ "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"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "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==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro/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=="
+ },
+ "node_modules/metro/node_modules/fs-extra": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
+ "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/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==",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/metro/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/metro/node_modules/jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/metro/node_modules/metro-react-native-babel-preset": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz",
+ "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==",
+ "dependencies": {
+ "@babel/core": "^7.14.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.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.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-exponentiation-operator": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.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-template-literals": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "react-refresh": "^0.4.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "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=="
+ },
+ "node_modules/metro/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "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/metro/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=="
+ },
+ "node_modules/metro/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==",
+ "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/metro/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==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/micromatch": {
+ "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"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dev": true,
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "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"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
+ "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/mv": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+ "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==",
+ "optional": true,
+ "dependencies": {
+ "mkdirp": "~0.5.1",
+ "ncp": "~2.0.0",
+ "rimraf": "~2.4.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/mv/node_modules/glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==",
+ "optional": true,
+ "dependencies": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mv/node_modules/rimraf": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+ "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==",
+ "optional": true,
+ "dependencies": {
+ "glob": "^6.0.1"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/ncp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==",
+ "optional": true,
+ "bin": {
+ "ncp": "bin/ncp"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/nested-error-stacks": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz",
+ "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A=="
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
+ "node_modules/nocache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
+ "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "minimatch": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10.5"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+ "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-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
+ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/antelle"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+ "dependencies": {
+ "prepend-http": "^2.0.0",
+ "query-string": "^5.0.1",
+ "sort-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/normalize-url/node_modules/query-string": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+ "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+ "dependencies": {
+ "decode-uri-component": "^0.2.0",
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url/node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-package-arg": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
+ "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==",
+ "dependencies": {
+ "hosted-git-info": "^3.0.2",
+ "osenv": "^0.1.5",
+ "semver": "^5.6.0",
+ "validate-npm-package-name": "^3.0.0"
+ }
+ },
+ "node_modules/npm-package-arg/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "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=="
+ },
+ "node_modules/number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ob1": {
+ "version": "0.72.3",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz",
+ "integrity": "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "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==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
+ "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
+ "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
+ "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
+ "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optimism": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz",
+ "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==",
+ "dependencies": {
+ "@wry/context": "^0.4.0"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ora/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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ora/node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/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==",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "dependencies": {
+ "execa": "^0.7.0",
+ "lcid": "^1.0.0",
+ "mem": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/os-locale/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/os-locale/node_modules/execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "dependencies": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/os-locale/node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/os-locale/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/os-locale/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-locale/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-locale/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/os-locale/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "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==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-locate/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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-png": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz",
+ "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==",
+ "dependencies": {
+ "pngjs": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/parse-png/node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/password-prompt": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz",
+ "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==",
+ "dependencies": {
+ "ansi-escapes": "^3.1.0",
+ "cross-spawn": "^6.0.5"
+ }
+ },
+ "node_modules/password-prompt/node_modules/ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/password-prompt/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/password-prompt/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/password-prompt/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/password-prompt/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/password-prompt/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/password-prompt/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/patch-package": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz",
+ "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==",
+ "dependencies": {
+ "@yarnpkg/lockfile": "^1.1.0",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^6.0.5",
+ "find-yarn-workspace-root": "^2.0.0",
+ "fs-extra": "^9.0.0",
+ "is-ci": "^2.0.0",
+ "klaw-sync": "^6.0.0",
+ "minimist": "^1.2.6",
+ "open": "^7.4.2",
+ "rimraf": "^2.6.3",
+ "semver": "^5.6.0",
+ "slash": "^2.0.0",
+ "tmp": "^0.0.33",
+ "yaml": "^1.10.2"
+ },
+ "bin": {
+ "patch-package": "index.js"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">5"
+ }
+ },
+ "node_modules/patch-package/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/patch-package/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/patch-package/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/patch-package/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=="
+ },
+ "node_modules/patch-package/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/patch-package/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/patch-package/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/patch-package/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/patch-package/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==",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/patch-package/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/patch-package/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/patch-package/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/patch-package/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/patch-package/node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/patch-package/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/patch-package/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/patch-package/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/patch-package/node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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==",
+ "dev": true,
+ "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=="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-up/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==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/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==",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-up/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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-up/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==",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/plist": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
+ "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
+ "dependencies": {
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/plist/node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.5.tgz",
+ "integrity": "sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-config-standard": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-config-standard/-/prettier-config-standard-5.0.0.tgz",
+ "integrity": "sha512-QK252QwCxlsak8Zx+rPKZU31UdbRcu9iUk9X1ONYtLSO221OgvV9TlKoTf6iPDZtvF3vE2mkgzFIEgSUcGELSQ==",
+ "dev": true,
+ "peerDependencies": {
+ "prettier": "^2.4.0"
+ }
+ },
+ "node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "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/pretty-format/node_modules/@jest/types": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/pretty-format/node_modules/@types/yargs": {
+ "version": "15.0.15",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
+ "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/pretty-format/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/pretty-format/node_modules/chalk": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/pretty-format/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/pretty-format/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=="
+ },
+ "node_modules/pretty-format/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pretty-format/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=="
+ },
+ "node_modules/pretty-format/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "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=="
+ },
+ "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": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pure-rand": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz",
+ "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ]
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz",
+ "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "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==",
+ "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=="
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.1.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz",
+ "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-apollo": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-3.1.5.tgz",
+ "integrity": "sha512-xOxMqxORps+WHrUYbjVHPliviomefOpu5Sh35oO3osuOyPTxvrljdfTLGCggMhcXBsDljtS5Oy4g+ijWg3D4JQ==",
+ "dependencies": {
+ "@apollo/react-common": "^3.1.4",
+ "@apollo/react-components": "^3.1.5",
+ "@apollo/react-hoc": "^3.1.5",
+ "@apollo/react-hooks": "^3.1.5",
+ "@apollo/react-ssr": "^3.1.5"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0",
+ "apollo-client": "^2.6.4",
+ "graphql": "^14.3.1",
+ "react": "^16.8.0",
+ "react-dom": "^16.8.0"
+ }
+ },
+ "node_modules/react-deep-force-update": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz",
+ "integrity": "sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA==",
+ "dev": true
+ },
+ "node_modules/react-devtools-core": {
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz",
+ "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==",
+ "dependencies": {
+ "shell-quote": "^1.6.1",
+ "ws": "^7"
+ }
+ },
+ "node_modules/react-devtools-core/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "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/react-freeze": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
+ "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==",
+ "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=="
+ },
+ "node_modules/react-native": {
+ "version": "0.70.5",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz",
+ "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==",
+ "dependencies": {
+ "@jest/create-cache-key-function": "^29.0.3",
+ "@react-native-community/cli": "9.2.1",
+ "@react-native-community/cli-platform-android": "9.2.1",
+ "@react-native-community/cli-platform-ios": "9.2.1",
+ "@react-native/assets": "1.0.0",
+ "@react-native/normalize-color": "2.0.0",
+ "@react-native/polyfills": "2.0.0",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "base64-js": "^1.1.2",
+ "event-target-shim": "^5.0.1",
+ "invariant": "^2.2.4",
+ "jsc-android": "^250230.2.1",
+ "memoize-one": "^5.0.0",
+ "metro-react-native-babel-transformer": "0.72.3",
+ "metro-runtime": "0.72.3",
+ "metro-source-map": "0.72.3",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^26.5.2",
+ "promise": "^8.0.3",
+ "react-devtools-core": "4.24.0",
+ "react-native-codegen": "^0.70.6",
+ "react-native-gradle-plugin": "^0.70.3",
+ "react-refresh": "^0.4.0",
+ "react-shallow-renderer": "^16.15.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "^0.22.0",
+ "stacktrace-parser": "^0.1.3",
+ "use-sync-external-store": "^1.0.0",
+ "whatwg-fetch": "^3.0.0",
+ "ws": "^6.1.4"
+ },
+ "bin": {
+ "react-native": "cli.js"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "react": "18.1.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==",
+ "dependencies": {
+ "prop-types": "^15.7.2"
+ }
+ },
+ "node_modules/react-native-button": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/react-native-button/-/react-native-button-3.0.1.tgz",
+ "integrity": "sha512-Tkj7PwATNEXPOX4ubE+P8WnyJMenywU6Es/Bk2r2aR15204+AxSOEB3sp7JDP44LI+tUMetjudNBRRuKQOmoPw==",
+ "dependencies": {
+ "prop-types": "^15.5.10"
+ },
+ "peerDependencies": {
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-codegen": {
+ "version": "0.70.6",
+ "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz",
+ "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==",
+ "dependencies": {
+ "@babel/parser": "^7.14.0",
+ "flow-parser": "^0.121.0",
+ "jscodeshift": "^0.13.1",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "node_modules/react-native-communications": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-communications/-/react-native-communications-2.2.1.tgz",
+ "integrity": "sha512-5+C0X9mopI0+qxyQHzOPEi5v5rxNBQjxydPPiKMQSlX1RBIcJ8uTcqUPssQ9Mo8p6c1IKIWJUSqCj4jAmD0qVQ=="
+ },
+ "node_modules/react-native-flash-message": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/react-native-flash-message/-/react-native-flash-message-0.4.0.tgz",
+ "integrity": "sha512-ZCVnQj+82cQnWqBtkIVPxMEJxwzWqq8WQcIulUqc9UiCdvWQJRLN0Pe0PvzFs/l/GM2ek6zXSck7LJzUq8pahQ==",
+ "dependencies": {
+ "prop-types": "^15.8.1",
+ "react-native-iphone-screen-helper": "^2.0.2"
+ },
+ "peerDependencies": {
+ "prop-types": "^15.0 || ^16.0",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-flatlist-slider": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/react-native-flatlist-slider/-/react-native-flatlist-slider-1.0.6.tgz",
+ "integrity": "sha512-F1C87eGIte9nfBU/MyNI6OOVKR/uCwFMrjVGv2j5u0LZjBm2WoEso96kPF2j0PIG8+XerD7Y2pmtGdCMCWxtcA=="
+ },
+ "node_modules/react-native-gesture-handler": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz",
+ "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==",
+ "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-gifted-chat": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/react-native-gifted-chat/-/react-native-gifted-chat-1.1.1.tgz",
+ "integrity": "sha512-dixjMqeNEM16m8zp0DLqyusH5SxUglhAdKEw2qLmeMpJsvqguPVMklT0QUXEw/aWVYr1+YC+UnOA3f4aPdzbsg==",
+ "dependencies": {
+ "@expo/react-native-action-sheet": "4.0.1",
+ "dayjs": "1.8.26",
+ "prop-types": "15.7.2",
+ "react-native-communications": "2.2.1",
+ "react-native-iphone-x-helper": "1.3.1",
+ "react-native-lightbox-v2": "0.9.0",
+ "react-native-parsed-text": "0.0.22",
+ "react-native-safe-area-context": "4.4.1",
+ "react-native-typing-animation": "0.1.7",
+ "use-memo-one": "1.1.2",
+ "uuid": "3.4.0"
+ },
+ "peerDependencies": {
+ "@expo/react-native-action-sheet": "*",
+ "dayjs": "*",
+ "react": "*",
+ "react-native": "*",
+ "react-native-communications": "*",
+ "react-native-lightbox": "*",
+ "react-native-parsed-text": "*",
+ "react-native-safe-area-context": "*",
+ "react-native-typing-animation": "*"
+ }
+ },
+ "node_modules/react-native-gifted-chat/node_modules/dayjs": {
+ "version": "1.8.26",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.26.tgz",
+ "integrity": "sha512-KqtAuIfdNfZR5sJY1Dixr2Is4ZvcCqhb0dZpCOt5dGEFiMzoIbjkTSzUb4QKTCsP+WNpGwUjAFIZrnZvUxxkhw=="
+ },
+ "node_modules/react-native-gifted-chat/node_modules/prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
+ "node_modules/react-native-gradle-plugin": {
+ "version": "0.70.3",
+ "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
+ "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
+ },
+ "node_modules/react-native-iphone-screen-helper": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/react-native-iphone-screen-helper/-/react-native-iphone-screen-helper-2.0.3.tgz",
+ "integrity": "sha512-gbSnV0iYWQ3hne3inYoueatSJL/Un49biIkHLGKsm7J7QjFhL+/WSPB1sZhQ87lNIANwFh33nvxcjixxR4T+NQ==",
+ "peerDependencies": {
+ "react-native": ">=0.42.0"
+ }
+ },
+ "node_modules/react-native-iphone-x-helper": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
+ "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==",
+ "peerDependencies": {
+ "react-native": ">=0.42.0"
+ }
+ },
+ "node_modules/react-native-lightbox-v2": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/react-native-lightbox-v2/-/react-native-lightbox-v2-0.9.0.tgz",
+ "integrity": "sha512-Fc5VFHFj2vokS+OegyTsANKb1CYoUlOtAv+EBH5wtpJn1b5cey6jVXH7136G5+8OC9JmKWSgKHc5thFwOoZTUg==",
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-native": ">=0.61.0"
+ }
+ },
+ "node_modules/react-native-maps": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-1.3.2.tgz",
+ "integrity": "sha512-NB7HGRZOgxxXCWzrhIVucx/bsrEWANvk3DLci1ov4P9MQnEVQYQCCkTxsnaEvO191GeBOCRDyYn6jckqbfMtmg==",
+ "dependencies": {
+ "@types/geojson": "^7946.0.8"
+ },
+ "peerDependencies": {
+ "react": ">= 17.0.1",
+ "react-native": ">= 0.64.3",
+ "react-native-web": ">= 0.11"
+ },
+ "peerDependenciesMeta": {
+ "react-native-web": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-native-material-textfield": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/react-native-material-textfield/-/react-native-material-textfield-0.16.1.tgz",
+ "integrity": "sha512-pcV/ic3i6vYEODS7pvAMUYJ+evkzIB8cjXtSzkab9rBtYNGRpAlM0Yp8QNnjZ7foZqkj9Ynav0nguWcuJST10A==",
+ "dependencies": {
+ "prop-types": "^15.5.9"
+ },
+ "peerDependencies": {
+ "react": ">=16.3.0",
+ "react-native": ">=0.55.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "prop-types": "^15.6.2",
+ "react-native-animatable": "1.3.3"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": ">=0.65.0"
+ }
+ },
+ "node_modules/react-native-modalize": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/react-native-modalize/-/react-native-modalize-2.1.1.tgz",
+ "integrity": "sha512-4/7EZWsrUqAAkkAVEnOsSdpAPQaEBewX7TvwFuzgvGDzxKpq3O58I9SnSeU8QtG/r91XYHJNaU5dAuDrcLjUaQ==",
+ "peerDependencies": {
+ "react": "> 15.0.0",
+ "react-native": "> 0.50.0",
+ "react-native-gesture-handler": "> 1.0.0"
+ }
+ },
+ "node_modules/react-native-parsed-text": {
+ "version": "0.0.22",
+ "resolved": "https://registry.npmjs.org/react-native-parsed-text/-/react-native-parsed-text-0.0.22.tgz",
+ "integrity": "sha512-hfD83RDXZf9Fvth3DowR7j65fMnlqM9PpxZBGWkzVcUTFtqe6/yPcIoIAgrJbKn6YmtzkivmhWE2MCE4JKBXrQ==",
+ "dependencies": {
+ "prop-types": "^15.7.x"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-reanimated": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.9.1.tgz",
+ "integrity": "sha512-309SIhDBwY4F1n6e5Mr5D1uPZm2ESIcmZsGXHUu8hpKX4oIOlZj2MilTk+kHhi05LjChoJkcpfkstotCJmPRPg==",
+ "dependencies": {
+ "@babel/plugin-proposal-export-namespace-from": "^7.17.12",
+ "@babel/plugin-transform-object-assign": "^7.16.7",
+ "@babel/preset-typescript": "^7.16.7",
+ "@types/invariant": "^2.2.35",
+ "invariant": "^2.2.4",
+ "lodash.isequal": "^4.5.0",
+ "setimmediate": "^1.0.5",
+ "string-hash-64": "^1.0.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-safe-area-context": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz",
+ "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-screens": {
+ "version": "3.18.2",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.18.2.tgz",
+ "integrity": "sha512-ANUEuvMUlsYJ1QKukEhzhfrvOUO9BVH9Nzg+6eWxpn3cfD/O83yPBOF8Mx6x5H/2+sMy+VS5x/chWOOo/U7QJw==",
+ "dependencies": {
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-star-rating": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/react-native-star-rating/-/react-native-star-rating-1.1.0.tgz",
+ "integrity": "sha512-ocOYx+BKUvfruvXm45MBbQZtpkVO3PQieBDepB0FaLuxE3vUtDTPzHqXuBes3iCM5oRi5umrnmMUMsM0mEq5ZA==",
+ "dependencies": {
+ "prop-types": "^15.5.10",
+ "react-native-animatable": "^1.2.4",
+ "react-native-button": "^2.3.0",
+ "react-native-vector-icons": "^4.5.0"
+ }
+ },
+ "node_modules/react-native-star-rating/node_modules/react-native-button": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-native-button/-/react-native-button-2.4.0.tgz",
+ "integrity": "sha512-4siaJlpOLeL9fAhX8VU3cnUfcGLe3E2zABDWSKxkF+NiYOd+AnKeYY29WXlV8hXhCFo+Ry7E+alrJ6zjZLTSfg==",
+ "dependencies": {
+ "prop-types": "^15.5.10"
+ },
+ "peerDependencies": {
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-svg": {
+ "version": "13.4.0",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.4.0.tgz",
+ "integrity": "sha512-B3TwK+H0+JuRhYPzF21AgqMt4fjhCwDZ9QUtwNstT5XcslJBXC0FoTkdZo8IEb1Sv4suSqhZwlAY6lwOv3tHag==",
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "css-tree": "^1.1.3"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-timeline-flatlist": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-timeline-flatlist/-/react-native-timeline-flatlist-0.8.0.tgz",
+ "integrity": "sha512-IVfCOxYx7Js84CaUJmtuxq2eyLvoQ1nRO5GG0mri14NH2NbMUwL9VhX19/yI8LpU2bnarlo7kjR6GLUP3DM/iQ==",
+ "peerDependencies": {
+ "react-native": ">= 0.58.2"
+ }
+ },
+ "node_modules/react-native-typing-animation": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/react-native-typing-animation/-/react-native-typing-animation-0.1.7.tgz",
+ "integrity": "sha512-4H3rF9M+I2yAZpYJcY0Mb29TXkn98QK12rrKSY6LZj1BQD9NNmRZuNXzwX4XHapsIz+N/J8M3p27FOQPbfzqeg==",
+ "peerDependencies": {
+ "prop-types": "*",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-vector-icons": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz",
+ "integrity": "sha512-rpfhfPiXCK2PX1nrNhdxSMrEGB/Gw/SvKoPM0G2wAkSoqynnes19K0VYI+Up7DqR1rFIpE4hP2erpT1tNx2tfg==",
+ "dependencies": {
+ "lodash": "^4.0.0",
+ "prop-types": "^15.5.10",
+ "yargs": "^8.0.2"
+ },
+ "bin": {
+ "generate-icon": "bin/generate-icon.js"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
+ "dependencies": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/cliui/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/cliui/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ },
+ "node_modules/react-native-vector-icons/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug=="
+ },
+ "node_modules/react-native-vector-icons/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/string-width/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/string-width/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
+ "dependencies": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/y18n": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==",
+ "dependencies": {
+ "camelcase": "^4.1.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^2.0.0",
+ "read-pkg-up": "^2.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^7.0.0"
+ }
+ },
+ "node_modules/react-native-vector-icons/node_modules/yargs-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+ "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==",
+ "dependencies": {
+ "camelcase": "^4.1.0"
+ }
+ },
+ "node_modules/react-native-webview": {
+ "version": "11.23.1",
+ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-11.23.1.tgz",
+ "integrity": "sha512-bmqsdg4RYOUYD37R9XTrQALm7eD62KbLNPRfgvpLGd1SjaurvAjjsLrLN4mt6yOtKOMKeZvlcAl3x6De6cCQsA==",
+ "dependencies": {
+ "escape-string-regexp": "2.0.0",
+ "invariant": "2.2.4"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-webview/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-native/node_modules/@react-native/normalize-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz",
+ "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw=="
+ },
+ "node_modules/react-native/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==",
+ "dependencies": {
+ "asap": "~2.0.6"
+ }
+ },
+ "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=="
+ },
+ "node_modules/react-proxy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz",
+ "integrity": "sha512-46GkBpZD97R/vV+iw+u6aFACzIHOst9gCl41d5K5vepPBz2i2gqHmXQJWKXsrUsSOdylKahN3sd9taswFN8Wzw==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.6.1",
+ "react-deep-force-update": "^1.0.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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/react-test-renderer": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz",
+ "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==",
+ "dev": true,
+ "dependencies": {
+ "react-is": "^18.2.0",
+ "react-shallow-renderer": "^16.15.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-test-renderer/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==",
+ "dev": true
+ },
+ "node_modules/react-test-renderer/node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/react-transform-hmr": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz",
+ "integrity": "sha512-8bK1DWUZynE6swD2jNPbzO5mvhB8fs9Ub5GksoVqYkc9i06FdSLC36qQYjaKOW79KBdsROq2cK0tRKITiEzmyg==",
+ "dev": true,
+ "dependencies": {
+ "global": "^4.3.0",
+ "react-proxy": "^1.1.7"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==",
+ "dependencies": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==",
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg/node_modules/path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==",
+ "dependencies": {
+ "pify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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/readline": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+ "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
+ },
+ "node_modules/recast": {
+ "version": "0.20.5",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz",
+ "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==",
+ "dependencies": {
+ "ast-types": "0.14.2",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 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=="
+ },
+ "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==",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+ "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "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==",
+ "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==",
+ "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/remove-trailing-slash": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz",
+ "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA=="
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "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=="
+ },
+ "node_modules/requireg": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz",
+ "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==",
+ "dependencies": {
+ "nested-error-stacks": "~2.0.1",
+ "rc": "~1.2.7",
+ "resolve": "~1.7.1"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/requireg/node_modules/resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "dependencies": {
+ "path-parse": "^1.0.5"
+ }
+ },
+ "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=="
+ },
+ "node_modules/reselect": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz",
+ "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dependencies": {
+ "is-core-module": "^2.9.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-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated"
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.1.tgz",
+ "integrity": "sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rfdc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+ "dev": true
+ },
+ "node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/rtl-detect": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz",
+ "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ=="
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
+ "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
+ "dev": true,
+ "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=="
+ },
+ "node_modules/safe-json-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
+ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
+ "optional": true
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/scheduler": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz",
+ "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serialize-error": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz",
+ "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==",
+ "dependencies": {
+ "type-fest": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serialize-error/node_modules/type-fest": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz",
+ "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "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==",
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz",
+ "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==",
+ "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==",
+ "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=="
+ },
+ "node_modules/simple-plist": {
+ "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"
+ }
+ },
+ "node_modules/simple-plist/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==",
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
+ "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.0.0",
+ "is-fullwidth-code-point": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/slugify": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz",
+ "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "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"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/snapdragon/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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/sort-keys/node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated"
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w=="
+ },
+ "node_modules/split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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=="
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-argv": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
+ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
+ "node_modules/string-hash-64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string-hash-64/-/string-hash-64-1.0.3.tgz",
+ "integrity": "sha512-D5OKWKvDhyVWWn2x5Y9b+37NUllks34q1dCDhk/vYcso9fmhs+Tl3KR/gE4v5UNj2UA35cnX4KdVVGkG1deKqw=="
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
+ "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "regexp.prototype.flags": "^1.4.3",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
+ "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/structured-headers": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz",
+ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg=="
+ },
+ "node_modules/subscriptions-transport-ws": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz",
+ "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==",
+ "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md",
+ "dependencies": {
+ "backo2": "^1.0.2",
+ "eventemitter3": "^3.1.0",
+ "iterall": "^1.2.1",
+ "symbol-observable": "^1.0.4",
+ "ws": "^5.2.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^15.7.2 || ^16.0.0"
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.29.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz",
+ "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==",
+ "dependencies": {
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sudo-prompt": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz",
+ "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw=="
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
+ "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^4.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
+ "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==",
+ "engines": [
+ "node >=0.8.0"
+ ],
+ "dependencies": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/temp/node_modules/rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==",
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz",
+ "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==",
+ "dependencies": {
+ "del": "^6.0.0",
+ "is-stream": "^2.0.0",
+ "temp-dir": "^2.0.0",
+ "type-fest": "^0.16.0",
+ "unique-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/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==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/type-fest": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+ "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA=="
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "node_modules/through2": {
+ "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"
+ }
+ },
+ "node_modules/tmp": {
+ "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"
+ },
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
+ },
+ "node_modules/ts-invariant": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz",
+ "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==",
+ "dependencies": {
+ "tslib": "^1.9.3"
+ }
+ },
+ "node_modules/ts-invariant/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
+ "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/tsconfig-paths/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz",
+ "integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ }
+ ],
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
+ "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0",
+ "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=="
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/union-value/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dependencies": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist-lint": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated"
+ },
+ "node_modules/url-join": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+ "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA=="
+ },
+ "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==",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/use-latest-callback": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz",
+ "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ=="
+ },
+ "node_modules/use-memo-one": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz",
+ "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0"
+ }
+ },
+ "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==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
+ "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/valid-url": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
+ "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA=="
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dependencies": {
+ "builtins": "^1.0.3"
+ }
+ },
+ "node_modules/validate.js": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/validate.js/-/validate.js-0.13.1.tgz",
+ "integrity": "sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g=="
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/walker": {
+ "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"
+ }
+ },
+ "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=="
+ },
+ "node_modules/wcwidth": {
+ "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"
+ }
+ },
+ "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=="
+ },
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+ "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
+ },
+ "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==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wonka": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz",
+ "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg=="
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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/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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/wrap-ansi/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=="
+ },
+ "node_modules/wrap-ansi/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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=="
+ },
+ "node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/ws": {
+ "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"
+ }
+ },
+ "node_modules/xcode": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/xcode/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==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/xml-js": {
+ "version": "1.6.11",
+ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+ "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+ "dependencies": {
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "xml-js": "bin/cli.js"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xml2js/node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
+ "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==",
+ "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==",
+ "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==",
+ "dev": true,
+ "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=="
+ },
+ "node_modules/yaml": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
+ "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
+ "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/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==",
+ "dev": true
+ },
+ "node_modules/yargs/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/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==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zen-observable": {
+ "version": "0.8.15",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
+ "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ=="
+ },
+ "node_modules/zen-observable-ts": {
+ "version": "0.8.21",
+ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz",
+ "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==",
+ "dependencies": {
+ "tslib": "^1.9.3",
+ "zen-observable": "^0.8.0"
+ }
+ },
+ "node_modules/zen-observable-ts/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+}
diff --git a/CustomerApp/package.json b/CustomerApp/package.json
new file mode 100644
index 0000000..c3aa4b7
--- /dev/null
+++ b/CustomerApp/package.json
@@ -0,0 +1,126 @@
+{
+ "name": "enatega-full-app",
+ "version": "5.0.0",
+ "scripts": {
+ "start": "expo start",
+ "android": "expo start --android",
+ "ios": "expo start --ios",
+ "eject": "expo eject",
+ "test": "jest",
+ "format": "prettier --write '**/*.js'",
+ "lint:fix": "eslint . --ext .js --fix",
+ "postinstall": "patch-package"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.js": [
+ "npm run format",
+ "npm run lint:fix"
+ ]
+ },
+ "dependencies": {
+ "@amplitude/analytics-react-native": "^1.1.1",
+ "@apollo/react-hooks": "^3.1.3",
+
+ "@expo/vector-icons": "^13.0.0",
+ "@ptomasroos/react-native-multi-slider": "^2.2.2",
+ "@react-native-async-storage/async-storage": "~1.17.3",
+ "@react-native-community/masked-view": "0.1.11",
+ "@react-navigation/drawer": "^6.6.0",
+ "@react-navigation/native": "^6.1.4",
+ "@react-navigation/native-stack": "^6.9.10",
+ "@react-navigation/stack": "^6.3.14",
+ "apollo-boost": "^0.4.9",
+ "apollo-cache-inmemory": "^1.5.1",
+ "apollo-cache-persist": "^0.1.1",
+ "apollo-client": "^2.5.1",
+ "apollo-link-context": "^1.0.17",
+ "apollo-link-http": "^1.5.14",
+ "apollo-link-state": "^0.4.2",
+ "apollo-link-ws": "^1.0.20",
+ "apollo-upload-client": "^10.0.0",
+ "apollo-utilities": "^1.3.4",
+ "deprecated-react-native-prop-types": "^4.0.0",
+ "expo": "^47.0.12",
+ "expo-app-loading": "~2.1.1",
+ "expo-apple-authentication": "~5.0.1",
+ "expo-application": "~5.0.1",
+ "expo-asset": "~8.7.0",
+ "expo-auth-session": "^3.8.0",
+ "expo-camera": "~13.1.0",
+ "expo-constants": "~14.0.2",
+ "expo-contacts": "~11.0.1",
+ "expo-device": "~5.0.0",
+ "expo-font": "~11.0.1",
+ "expo-image-picker": "~14.0.2",
+ "expo-linking": "~3.3.1",
+ "expo-localization": "~14.0.0",
+ "expo-location": "~15.0.1",
+ "expo-notifications": "~0.17.0",
+ "expo-random": "~13.0.0",
+ "expo-sensors": "~12.0.1",
+ "expo-splash-screen": "~0.17.5",
+ "expo-status-bar": "~1.4.2",
+ "expo-tracking-transparency": "~3.0.1",
+ "expo-updates": "~0.15.6",
+ "graphql": "^16.6.0",
+ "graphql-tag": "^2.10.1",
+ "i18n-js": "^3.2.2",
+ "lodash": "^4.17.21",
+ "patch-package": "^6.5.1",
+ "react": "18.1.0",
+ "react-apollo": "^3.1.5",
+ "react-native": "0.70.5",
+ "react-native-button": "^3.0.1",
+ "react-native-flash-message": "^0.4.0",
+ "react-native-flatlist-slider": "^1.0.5",
+ "react-native-gesture-handler": "~2.8.0",
+ "react-native-gifted-chat": "^1.1.1",
+ "react-native-maps": "1.3.2",
+ "react-native-material-textfield": "^0.16.1",
+ "react-native-modal": "^13.0.1",
+ "react-native-modalize": "^2.0.8",
+ "react-native-reanimated": "~2.9.1",
+ "react-native-safe-area-context": "4.4.1",
+ "react-native-screens": "~3.18.0",
+ "react-native-star-rating": "^1.1.0",
+ "react-native-svg": "13.4.0",
+ "react-native-timeline-flatlist": "^0.8.0",
+ "react-native-webview": "11.23.1",
+ "subscriptions-transport-ws": "^0.11.0",
+ "uuid": "^3.3.2",
+ "validate.js": "^0.13.1"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.12.9",
+ "babel-jest": "^29.4.3",
+ "babel-preset-expo": "~9.2.1",
+ "babel-preset-react-native": "^4.0.1",
+ "eslint": "^8.34.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.20.2",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.20.0",
+ "eslint-plugin-standard": "^5.0.0",
+ "husky": "^8.0.3",
+ "jest": "^29.4.3",
+ "jest-react-native": "^18.0.0",
+ "lint-staged": "^13.1.2",
+ "metro-react-native-babel-preset": "^0.75.0",
+ "prettier": "^2.3.1",
+ "prettier-config-standard": "^5.0.0",
+ "react-test-renderer": "^18.2.0"
+ },
+ "jest": {
+ "preset": "react-native"
+ },
+ "private": true,
+ "resolutions": {
+ "standard-version-expo/**/@expo/config-plugins": "5.0.2"
+ }
+}
diff --git a/CustomerApp/patches/react-native-button+3.0.1.patch b/CustomerApp/patches/react-native-button+3.0.1.patch
new file mode 100644
index 0000000..9f94f0c
--- /dev/null
+++ b/CustomerApp/patches/react-native-button+3.0.1.patch
@@ -0,0 +1,38 @@
+diff --git a/node_modules/react-native-button/Button.js b/node_modules/react-native-button/Button.js
+index b248176..3c6aefa 100644
+--- a/node_modules/react-native-button/Button.js
++++ b/node_modules/react-native-button/Button.js
+@@ -1,4 +1,5 @@
+ import PropTypes from 'prop-types';
++import {TextPropTypes,ViewPropTypes} from 'deprecated-react-native-prop-types'
+ import React, { Component } from 'react';
+ import {
+ Platform,
+@@ -7,7 +8,7 @@ import {
+ TouchableOpacity,
+ TouchableNativeFeedback,
+ View,
+- ViewPropTypes
++ //ViewPropTypes
+ } from 'react-native';
+
+ import coalesceNonElementChildren from './coalesceNonElementChildren';
+@@ -18,12 +19,15 @@ export default class Button extends Component {
+ static propTypes = {
+ ...TouchableOpacity.propTypes,
+ accessibilityLabel: PropTypes.string,
+- allowFontScaling: Text.propTypes.allowFontScaling,
++ // allowFontScaling: Text.propTypes.allowFontScaling,
++ allowFontScaling: TextPropTypes.allowFontScaling,
+ containerStyle: ViewPropTypes.style,
+ disabledContainerStyle: ViewPropTypes.style,
+ disabled: PropTypes.bool,
+- style: Text.propTypes.style,
+- styleDisabled: Text.propTypes.style,
++ style: TextPropTypes.style,
++ styleDisabled: TextPropTypes.style,
++ // style: Text.propTypes.style,
++ // styleDisabled: Text.propTypes.style,
+ childGroupStyle: ViewPropTypes.style,
+ androidBackground: PropTypes.object,
+ };
diff --git a/CustomerApp/patches/react-native-material-textfield+0.16.1.patch b/CustomerApp/patches/react-native-material-textfield+0.16.1.patch
new file mode 100644
index 0000000..138731f
--- /dev/null
+++ b/CustomerApp/patches/react-native-material-textfield+0.16.1.patch
@@ -0,0 +1,405 @@
+diff --git a/node_modules/react-native-material-textfield/src/components/affix/index.js b/node_modules/react-native-material-textfield/src/components/affix/index.js
+index 0f85022..e467adb 100644
+--- a/node_modules/react-native-material-textfield/src/components/affix/index.js
++++ b/node_modules/react-native-material-textfield/src/components/affix/index.js
+@@ -9,26 +9,26 @@ export default class Affix extends PureComponent {
+ numberOfLines: 1,
+ };
+
+- static propTypes = {
+- numberOfLines: PropTypes.number,
+- style: Animated.Text.propTypes.style,
++ // static propTypes = {
++ // numberOfLines: PropTypes.number,
++ // style: PropTypes.object,
+
+- color: PropTypes.string.isRequired,
+- fontSize: PropTypes.number.isRequired,
++ // color: PropTypes.string.isRequired,
++ // fontSize: PropTypes.number.isRequired,
+
+- type: PropTypes
+- .oneOf(['prefix', 'suffix'])
+- .isRequired,
++ // type: PropTypes
++ // .oneOf(['prefix', 'suffix'])
++ // .isRequired,
+
+- labelAnimation: PropTypes
+- .instanceOf(Animated.Value)
+- .isRequired,
++ // labelAnimation: PropTypes
++ // .instanceOf(Animated.Value)
++ // .isRequired,
+
+- children: PropTypes.oneOfType([
+- PropTypes.arrayOf(PropTypes.node),
+- PropTypes.node,
+- ]),
+- };
++ // children: PropTypes.oneOfType([
++ // PropTypes.arrayOf(PropTypes.node),
++ // PropTypes.node,
++ // ]),
++ // };
+
+ render() {
+ let { labelAnimation, style, children, type, fontSize, color } = this.props;
+diff --git a/node_modules/react-native-material-textfield/src/components/counter/index.js b/node_modules/react-native-material-textfield/src/components/counter/index.js
+index 35d3264..089b871 100644
+--- a/node_modules/react-native-material-textfield/src/components/counter/index.js
++++ b/node_modules/react-native-material-textfield/src/components/counter/index.js
+@@ -5,15 +5,15 @@ import { Text } from 'react-native';
+ import styles from './styles';
+
+ export default class Counter extends PureComponent {
+- static propTypes = {
+- count: PropTypes.number.isRequired,
+- limit: PropTypes.number,
++ // static propTypes = {
++ // count: PropTypes.number.isRequired,
++ // limit: PropTypes.number,
+
+- baseColor: PropTypes.string.isRequired,
+- errorColor: PropTypes.string.isRequired,
++ // baseColor: PropTypes.string.isRequired,
++ // errorColor: PropTypes.string.isRequired,
+
+- style: Text.propTypes.style,
+- };
++ // style: PropTypes.object,
++ // };
+
+ render() {
+ let { count, limit, baseColor, errorColor, style } = this.props;
+diff --git a/node_modules/react-native-material-textfield/src/components/field/index.js b/node_modules/react-native-material-textfield/src/components/field/index.js
+index 494bbaa..2a71c82 100644
+--- a/node_modules/react-native-material-textfield/src/components/field/index.js
++++ b/node_modules/react-native-material-textfield/src/components/field/index.js
+@@ -1,5 +1,6 @@
+ import PropTypes from 'prop-types';
+ import React, { PureComponent } from 'react';
++import {ViewPropTypes} from 'deprecated-react-native-prop-types';
+ import {
+ View,
+ Text,
+@@ -7,7 +8,7 @@ import {
+ Animated,
+ StyleSheet,
+ Platform,
+- ViewPropTypes,
++ //ViewPropTypes,
+ } from 'react-native';
+
+ import Line from '../line';
+@@ -65,60 +66,60 @@ export default class TextField extends PureComponent {
+ disabled: false,
+ };
+
+- static propTypes = {
+- ...TextInput.propTypes,
++ // static propTypes = {
++ // ...TextInput.propTypes,
+
+- animationDuration: PropTypes.number,
++ // animationDuration: PropTypes.number,
+
+- fontSize: PropTypes.number,
+- labelFontSize: PropTypes.number,
++ // fontSize: PropTypes.number,
++ // labelFontSize: PropTypes.number,
+
+- contentInset: PropTypes.shape({
+- top: PropTypes.number,
+- label: PropTypes.number,
+- input: PropTypes.number,
+- left: PropTypes.number,
+- right: PropTypes.number,
+- }),
++ // contentInset: PropTypes.shape({
++ // top: PropTypes.number,
++ // label: PropTypes.number,
++ // input: PropTypes.number,
++ // left: PropTypes.number,
++ // right: PropTypes.number,
++ // }),
+
+- labelOffset: Label.propTypes.offset,
++ // labelOffset: Label.propTypes.offset,
+
+- labelTextStyle: Text.propTypes.style,
+- titleTextStyle: Text.propTypes.style,
+- affixTextStyle: Text.propTypes.style,
++ // labelTextStyle: PropTypes.object.style,
++ // // titleTextStyle: PropTypes.object.style,
++ // // affixTextStyle: PropTypes.object.style,
+
+- tintColor: PropTypes.string,
+- textColor: PropTypes.string,
+- baseColor: PropTypes.string,
++ // tintColor: PropTypes.string,
++ // textColor: PropTypes.string,
++ // baseColor: PropTypes.string,
+
+- label: PropTypes.string,
+- title: PropTypes.string,
++ // label: PropTypes.string,
++ // title: PropTypes.string,
+
+- characterRestriction: PropTypes.number,
++ // characterRestriction: PropTypes.number,
+
+- error: PropTypes.string,
+- errorColor: PropTypes.string,
++ // error: PropTypes.string,
++ // errorColor: PropTypes.string,
+
+- lineWidth: PropTypes.number,
+- activeLineWidth: PropTypes.number,
+- disabledLineWidth: PropTypes.number,
++ // lineWidth: PropTypes.number,
++ // activeLineWidth: PropTypes.number,
++ // disabledLineWidth: PropTypes.number,
+
+- lineType: Line.propTypes.lineType,
+- disabledLineType: Line.propTypes.lineType,
++ // lineType: Line.propTypes.lineType,
++ // disabledLineType: Line.propTypes.lineType,
+
+- disabled: PropTypes.bool,
++ // disabled: PropTypes.bool,
+
+- formatText: PropTypes.func,
++ // formatText: PropTypes.func,
+
+- renderLeftAccessory: PropTypes.func,
+- renderRightAccessory: PropTypes.func,
++ // renderLeftAccessory: PropTypes.func,
++ // renderRightAccessory: PropTypes.func,
+
+- prefix: PropTypes.string,
+- suffix: PropTypes.string,
++ // prefix: PropTypes.string,
++ // suffix: PropTypes.string,
+
+- containerStyle: (ViewPropTypes || View.propTypes).style,
+- inputContainerStyle: (ViewPropTypes || View.propTypes).style,
+- };
++ // containerStyle: (ViewPropTypes || View.propTypes).style,
++ // inputContainerStyle: (ViewPropTypes || View.propTypes).style,
++ // };
+
+ static inputContainerStyle = styles.inputContainer;
+
+@@ -221,6 +222,7 @@ export default class TextField extends PureComponent {
+
+ let options = {
+ toValue: this.focusState(),
++ useNativeDriver: false,
+ duration,
+ };
+
+diff --git a/node_modules/react-native-material-textfield/src/components/helper/index.js b/node_modules/react-native-material-textfield/src/components/helper/index.js
+index 6060f9f..86ac2c0 100644
+--- a/node_modules/react-native-material-textfield/src/components/helper/index.js
++++ b/node_modules/react-native-material-textfield/src/components/helper/index.js
+@@ -1,23 +1,24 @@
+ import PropTypes from 'prop-types';
++
+ import React, { PureComponent } from 'react';
+ import { Animated } from 'react-native';
+
+ import styles from './styles';
+
+ export default class Helper extends PureComponent {
+- static propTypes = {
+- title: PropTypes.string,
+- error: PropTypes.string,
++ // static propTypes = {
++ // title: PropTypes.string,
++ // error: PropTypes.string,
+
+- disabled: PropTypes.bool,
++ // disabled: PropTypes.bool,
+
+- style: Animated.Text.propTypes.style,
++ // style: PropTypes.object,
+
+- baseColor: PropTypes.string,
+- errorColor: PropTypes.string,
++ // baseColor: PropTypes.string,
++ // errorColor: PropTypes.string,
+
+- focusAnimation: PropTypes.instanceOf(Animated.Value),
+- };
++ // focusAnimation: PropTypes.instanceOf(Animated.Value),
++ // };
+
+ constructor(props) {
+ super(props);
+diff --git a/node_modules/react-native-material-textfield/src/components/label/index.js b/node_modules/react-native-material-textfield/src/components/label/index.js
+index 82eaf03..1ad9a93 100644
+--- a/node_modules/react-native-material-textfield/src/components/label/index.js
++++ b/node_modules/react-native-material-textfield/src/components/label/index.js
+@@ -11,41 +11,41 @@ export default class Label extends PureComponent {
+ restricted: false,
+ };
+
+- static propTypes = {
+- numberOfLines: PropTypes.number,
++ // static propTypes = {
++ // numberOfLines: PropTypes.number,
+
+- disabled: PropTypes.bool,
+- restricted: PropTypes.bool,
++ // disabled: PropTypes.bool,
++ // restricted: PropTypes.bool,
+
+- fontSize: PropTypes.number.isRequired,
+- activeFontSize: PropTypes.number.isRequired,
++ // fontSize: PropTypes.number.isRequired,
++ // activeFontSize: PropTypes.number.isRequired,
+
+- baseColor: PropTypes.string.isRequired,
+- tintColor: PropTypes.string.isRequired,
+- errorColor: PropTypes.string.isRequired,
++ // baseColor: PropTypes.string.isRequired,
++ // tintColor: PropTypes.string.isRequired,
++ // errorColor: PropTypes.string.isRequired,
+
+- focusAnimation: PropTypes
+- .instanceOf(Animated.Value)
+- .isRequired,
++ // focusAnimation: PropTypes
++ // .instanceOf(Animated.Value)
++ // .isRequired,
+
+- labelAnimation: PropTypes
+- .instanceOf(Animated.Value)
+- .isRequired,
++ // labelAnimation: PropTypes
++ // .instanceOf(Animated.Value)
++ // .isRequired,
+
+- contentInset: PropTypes.shape({
+- label: PropTypes.number,
+- }),
++ // contentInset: PropTypes.shape({
++ // label: PropTypes.number,
++ // }),
+
+- offset: PropTypes.shape({
+- x0: PropTypes.number,
+- y0: PropTypes.number,
+- x1: PropTypes.number,
+- y1: PropTypes.number,
+- }),
++ // offset: PropTypes.shape({
++ // x0: PropTypes.number,
++ // y0: PropTypes.number,
++ // x1: PropTypes.number,
++ // y1: PropTypes.number,
++ // }),
+
+- style: Animated.Text.propTypes.style,
+- label: PropTypes.string,
+- };
++ // style: PropTypes.object,
++ // label: PropTypes.string,
++ // };
+
+ render() {
+ let {
+diff --git a/node_modules/react-native-material-textfield/src/components/line/index.js b/node_modules/react-native-material-textfield/src/components/line/index.js
+index 44995e9..b689387 100644
+--- a/node_modules/react-native-material-textfield/src/components/line/index.js
++++ b/node_modules/react-native-material-textfield/src/components/line/index.js
+@@ -16,23 +16,23 @@ export default class Line extends PureComponent {
+ restricted: false,
+ };
+
+- static propTypes = {
+- lineType: lineTypes,
+- disabledLineType: lineTypes,
++ // static propTypes = {
++ // lineType: lineTypes,
++ // disabledLineType: lineTypes,
+
+- disabled: PropTypes.bool,
+- restricted: PropTypes.bool,
++ // disabled: PropTypes.bool,
++ // restricted: PropTypes.bool,
+
+- tintColor: PropTypes.string,
+- baseColor: PropTypes.string,
+- errorColor: PropTypes.string,
++ // tintColor: PropTypes.string,
++ // baseColor: PropTypes.string,
++ // errorColor: PropTypes.string,
+
+- lineWidth: PropTypes.number,
+- activeLineWidth: PropTypes.number,
+- disabledLineWidth: PropTypes.number,
++ // lineWidth: PropTypes.number,
++ // activeLineWidth: PropTypes.number,
++ // disabledLineWidth: PropTypes.number,
+
+- focusAnimation: PropTypes.instanceOf(Animated.Value),
+- };
++ // focusAnimation: PropTypes.instanceOf(Animated.Value),
++ // };
+
+ static getDerivedStateFromProps(props, state) {
+ let { lineWidth, activeLineWidth, disabledLineWidth } = props;
+diff --git a/node_modules/react-native-material-textfield/src/components/outline/index.js b/node_modules/react-native-material-textfield/src/components/outline/index.js
+index 9347a99..9c3e8a3 100644
+--- a/node_modules/react-native-material-textfield/src/components/outline/index.js
++++ b/node_modules/react-native-material-textfield/src/components/outline/index.js
+@@ -11,29 +11,29 @@ export default class Line extends PureComponent {
+ restricted: false,
+ };
+
+- static propTypes = {
+- lineType: PropTypes.oneOf(['solid', 'none']),
++ // static propTypes = {
++ // lineType: PropTypes.oneOf(['solid', 'none']),
+
+- disabled: PropTypes.bool,
+- restricted: PropTypes.bool,
++ // disabled: PropTypes.bool,
++ // restricted: PropTypes.bool,
+
+- tintColor: PropTypes.string,
+- baseColor: PropTypes.string,
+- errorColor: PropTypes.string,
++ // tintColor: PropTypes.string,
++ // baseColor: PropTypes.string,
++ // errorColor: PropTypes.string,
+
+- lineWidth: PropTypes.number,
+- activeLineWidth: PropTypes.number,
+- disabledLineWidth: PropTypes.number,
++ // lineWidth: PropTypes.number,
++ // activeLineWidth: PropTypes.number,
++ // disabledLineWidth: PropTypes.number,
+
+- focusAnimation: PropTypes.instanceOf(Animated.Value),
+- labelAnimation: PropTypes.instanceOf(Animated.Value),
+- labelWidth: PropTypes.instanceOf(Animated.Value),
++ // focusAnimation: PropTypes.instanceOf(Animated.Value),
++ // labelAnimation: PropTypes.instanceOf(Animated.Value),
++ // labelWidth: PropTypes.instanceOf(Animated.Value),
+
+- contentInset: PropTypes.shape({
+- left: PropTypes.number,
+- right: PropTypes.number,
+- }),
+- };
++ // contentInset: PropTypes.shape({
++ // left: PropTypes.number,
++ // right: PropTypes.number,
++ // }),
++ // };
+
+ borderProps() {
+ let {
diff --git a/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch b/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch
new file mode 100644
index 0000000..7229158
--- /dev/null
+++ b/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch
@@ -0,0 +1,34 @@
+diff --git a/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js b/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js
+index fb7cf46..8e4c522 100644
+--- a/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js
++++ b/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js
+@@ -1,11 +1,12 @@
+ import PropTypes from 'prop-types';
+ import React, { Component } from 'react';
++import {TextPropTypes,ViewPropTypes} from 'deprecated-react-native-prop-types'
+ import {
+ StyleSheet,
+ Text,
+ TouchableOpacity,
+ View,
+- ViewPropTypes,
++ //ViewPropTypes,
+ } from 'react-native';
+
+ import coalesceNonElementChildren from './coalesceNonElementChildren';
+@@ -16,12 +17,12 @@ export default class Button extends Component {
+ static propTypes = {
+ ...TouchableOpacity.propTypes,
+ accessibilityLabel: PropTypes.string,
+- allowFontScaling: Text.propTypes.allowFontScaling,
++ allowFontScaling: TextPropTypes.allowFontScaling,
+ containerStyle: ViewPropTypes.style,
+ disabledContainerStyle: ViewPropTypes.style,
+ disabled: PropTypes.bool,
+- style: Text.propTypes.style,
+- styleDisabled: Text.propTypes.style,
++ style: TextPropTypes.style,
++ styleDisabled: TextPropTypes.style,
+ childGroupStyle: ViewPropTypes.style,
+ };
+
diff --git a/CustomerApp/patches/react-native-star-rating+1.1.0.patch b/CustomerApp/patches/react-native-star-rating+1.1.0.patch
new file mode 100644
index 0000000..0a84633
--- /dev/null
+++ b/CustomerApp/patches/react-native-star-rating+1.1.0.patch
@@ -0,0 +1,26 @@
+diff --git a/node_modules/react-native-star-rating/StarButton.js b/node_modules/react-native-star-rating/StarButton.js
+index b6db613..8a62f5a 100644
+--- a/node_modules/react-native-star-rating/StarButton.js
++++ b/node_modules/react-native-star-rating/StarButton.js
+@@ -1,6 +1,7 @@
+ // React and react native imports
+ import React, { Component } from 'react';
+-import { Image, StyleSheet, ViewPropTypes } from 'react-native';
++import { Image, StyleSheet } from 'react-native';
++import {ViewPropTypes} from 'deprecated-react-native-prop-types';
+ import PropTypes from 'prop-types';
+ import { createIconSetFromIcoMoon } from 'react-native-vector-icons';
+
+diff --git a/node_modules/react-native-star-rating/StarRating.js b/node_modules/react-native-star-rating/StarRating.js
+index 7aecc95..de6397c 100644
+--- a/node_modules/react-native-star-rating/StarRating.js
++++ b/node_modules/react-native-star-rating/StarRating.js
+@@ -1,6 +1,7 @@
+ // React and react native imports
+ import React, { Component } from 'react';
+-import { View, ViewPropTypes, StyleSheet } from 'react-native';
++import { View, StyleSheet } from 'react-native';
++import {ViewPropTypes} from 'deprecated-react-native-prop-types';
+ import PropTypes from 'prop-types';
+ import { View as AnimatableView } from 'react-native-animatable';
+
diff --git a/CustomerApp/src/.DS_Store b/CustomerApp/src/.DS_Store
new file mode 100644
index 0000000..c694681
Binary files /dev/null and b/CustomerApp/src/.DS_Store differ
diff --git a/CustomerApp/src/Theme/Colors.js b/CustomerApp/src/Theme/Colors.js
new file mode 100644
index 0000000..5068c63
--- /dev/null
+++ b/CustomerApp/src/Theme/Colors.js
@@ -0,0 +1,26 @@
+const COLORS = {
+ white: '#FFFFFF',
+ black: '#000000',
+ black02: 'rgba(0, 0, 0, 0.2)',
+ primary: '#febb2c',
+ darkGrey: '#333333',
+ offWhite: '#FAFAFA',
+ lineGrey: '#e7e5e4',
+ lightGrey: '#a5a5a5',
+ lightWhite: '#FCFCFC',
+ whitishGrey: '#7F7F7F',
+ lightBlack: '#292929',
+ redishPink: '#ff4866',
+ primaryBlue: '#00b9c6',
+ primaryBlack: '#0b0b0b',
+ blueShadeGrey: '#f7f7fb',
+ primaryLightBlue: '#0cc8d5',
+ lightBlueShadeGrey: '#f8f9fa',
+ mediumBlueShadeGrey: '#f2f4f5',
+ black06: 'rgba(0,0,0,0.6)',
+ white06: 'rgba(255,255,255,0.6)',
+ redishOrange: '#FA7751',
+ blueColor: '#00b9c6',
+ yellowishOrange: '#fff1d4'
+}
+export { COLORS }
diff --git a/CustomerApp/src/Theme/Theme.js b/CustomerApp/src/Theme/Theme.js
new file mode 100644
index 0000000..95cea24
--- /dev/null
+++ b/CustomerApp/src/Theme/Theme.js
@@ -0,0 +1,82 @@
+import { DarkTheme, DefaultTheme } from '@react-navigation/native'
+import { COLORS } from './Colors'
+const Theme = {
+ Light: {
+ ...DefaultTheme,
+ colors: {
+ ...DefaultTheme.colors,
+ black: COLORS.black,
+ white: COLORS.white,
+ curve: COLORS.primary,
+ selected: COLORS.primary,
+ fontWhite: COLORS.white,
+ tagColor: COLORS.primary,
+ iconColor: COLORS.darkGrey,
+ iconColorPrimary: COLORS.primary,
+ cardContainer: COLORS.white,
+ rippleColor: COLORS.black02,
+ background: COLORS.white,
+ lightBackground: COLORS.lightBlueShadeGrey,
+ headerbackground: COLORS.primary,
+ headerbackground2: COLORS.offWhite,
+ headerTextColor: COLORS.primaryBlack,
+ fontMainColor: COLORS.primaryBlack,
+ fontSecondColor: COLORS.lightGrey,
+ placeHolderColor: COLORS.lightGrey,
+ buttonBackground: COLORS.primary,
+ buttonBackgroundLight: COLORS.mediumBlueShadeGrey,
+ buttonBackgroundBlue: COLORS.primaryLightBlue,
+ active: COLORS.primaryLightBlue,
+ buttonText: COLORS.white,
+ horizontalLine: COLORS.lineGrey,
+ shadowColor: COLORS.black06,
+ drawerBackground: COLORS.primary,
+ spinnerColor: COLORS.primary,
+ errorColor: COLORS.redishOrange,
+ radioColor: COLORS.white,
+ radioOuterColor: COLORS.primary,
+ blueColor: COLORS.blueColor,
+ chatBubblePrimary: COLORS.yellowishOrange
+ }
+ },
+ Dark: {
+ ...DarkTheme,
+ colors: {
+ ...DarkTheme.colors,
+ white: COLORS.white,
+ black: COLORS.black,
+ curve: COLORS.primary,
+ selected: COLORS.primary,
+ fontWhite: COLORS.white,
+ tagColor: COLORS.primary,
+ rippleColor: COLORS.black02,
+ background: COLORS.lightBlack,
+ lightBackground: COLORS.lightBlueShadeGrey,
+ cardContainer: COLORS.darkGrey,
+ iconColor: COLORS.lightWhite,
+ iconColorPrimary: COLORS.primary,
+ headerbackground: COLORS.black,
+ headerbackground2: COLORS.black,
+ headerTextColor: COLORS.primaryBlack,
+ fontMainColor: COLORS.lightWhite,
+ fontSecondColor: COLORS.whitishGrey,
+ placeHolderColor: COLORS.lightGrey,
+ buttonBackground: COLORS.primary,
+ buttonBackgroundLight: COLORS.mediumBlueShadeGrey,
+ buttonBackgroundBlue: COLORS.primaryLightBlue,
+ active: COLORS.primaryLightBlue,
+ buttonText: COLORS.white,
+ horizontalLine: COLORS.lineGrey,
+ shadowColor: COLORS.white06,
+ drawerBackground: COLORS.primary,
+ spinnerColor: COLORS.primary,
+ errorColor: COLORS.redishOrange,
+ radioColor: COLORS.white,
+ radioOuterColor: COLORS.primary,
+ blueColor: COLORS.blueColor,
+ chatBubblePrimary: COLORS.yellowishOrange
+ }
+ }
+}
+
+export default Theme
diff --git a/CustomerApp/src/Theme/index.js b/CustomerApp/src/Theme/index.js
new file mode 100644
index 0000000..2963af9
--- /dev/null
+++ b/CustomerApp/src/Theme/index.js
@@ -0,0 +1,4 @@
+import { COLORS } from './Colors'
+import THEME from './Theme'
+
+export { COLORS, THEME }
diff --git a/CustomerApp/src/apollo/index.js b/CustomerApp/src/apollo/index.js
new file mode 100644
index 0000000..aacc619
--- /dev/null
+++ b/CustomerApp/src/apollo/index.js
@@ -0,0 +1,92 @@
+import AsyncStorage from '@react-native-async-storage/async-storage'
+import { defaultDataIdFromObject, InMemoryCache } from 'apollo-cache-inmemory'
+import { persistCache } from 'apollo-cache-persist'
+import { ApolloClient } from 'apollo-client'
+import { ApolloLink, concat, Observable, split } from 'apollo-link'
+import { createHttpLink } from 'apollo-link-http'
+import { WebSocketLink } from 'apollo-link-ws'
+import { getMainDefinition } from 'apollo-utilities'
+import getEnvVars from '../../environment'
+
+const { GRAPHQL_URL, WS_GRAPHQL_URL } = getEnvVars()
+
+const cache = new InMemoryCache({
+ dataIdFromObject: object => {
+ switch (object.__typename) {
+ case 'CartItem':
+ return object.key // use `key` as the primary key
+ default:
+ return defaultDataIdFromObject(object) // fall back to default handling
+ }
+ }
+})
+
+const httpLink = createHttpLink({
+ uri: GRAPHQL_URL
+})
+
+const wsLink = new WebSocketLink({
+ uri: WS_GRAPHQL_URL,
+ options: {
+ reconnect: true
+ }
+})
+
+const request = async operation => {
+ const token = await AsyncStorage.getItem('token')
+
+ operation.setContext({
+ // get the authentication token from local storage if it exists
+ // return the headers to the context so httpLink can read them
+ headers: {
+ authorization: token ? `Bearer ${token}` : ''
+ }
+ })
+}
+
+const requestLink = new ApolloLink(
+ (operation, forward) =>
+ new Observable(observer => {
+ // console.log(observer)
+ let handle
+ Promise.resolve(operation)
+ .then(oper => request(oper))
+ .then(() => {
+ handle = forward(operation).subscribe({
+ next: observer.next.bind(observer),
+ error: observer.error.bind(observer),
+ complete: observer.complete.bind(observer)
+ })
+ })
+ .catch(observer.error.bind(observer))
+
+ return () => {
+ if (handle) handle.unsubscribe()
+ }
+ })
+)
+
+const terminatingLink = split(({ query }) => {
+ const { kind, operation } = getMainDefinition(query)
+ return kind === 'OperationDefinition' && operation === 'subscription'
+}, wsLink)
+
+const setupApollo = async() => {
+ await persistCache({
+ cache,
+ storage: AsyncStorage
+ })
+ const client = new ApolloClient({
+ link: concat(ApolloLink.from([terminatingLink, requestLink]), httpLink),
+ cache,
+ resolvers: {}
+ })
+
+ // set ref for global use
+ // eslint-disable-next-line no-undef
+ clientRef = client
+
+ return client
+}
+
+export default setupApollo
diff --git a/CustomerApp/src/apollo/server.js b/CustomerApp/src/apollo/server.js
new file mode 100644
index 0000000..aa0510e
--- /dev/null
+++ b/CustomerApp/src/apollo/server.js
@@ -0,0 +1,590 @@
+export const login = `
+mutation Login($facebookId:String,$email:String,$password:String,$type:String!,$appleId:String,$name:String,$notificationToken:String){
+ login(facebookId:$facebookId,email:$email,password:$password,type:$type,appleId:$appleId,name:$name,notificationToken:$notificationToken){
+ userId
+ token
+ tokenExpiration
+ name
+ email
+ phone
+ }
+}
+`
+
+export const categories = `
+{
+ categories{
+ _id
+ title
+ description
+ img_menu
+ }
+}`
+
+export const foods = `
+query FoodByCategory($category:String!,$onSale:Boolean,$inStock:Boolean,$min:Float,$max:Float,$search:String){
+ foodByCategory(category:$category,onSale:$onSale,inStock:$inStock,min:$min,max:$max,search:$search){
+ _id
+ title
+ description
+ variations{
+ _id
+ title
+ price
+ discounted
+ addons{
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options{
+ _id
+ title
+ description
+ price
+ }
+ }
+ }
+ category{_id}
+ img_url
+ stock
+ }
+ }`
+
+export const createUser = `
+ mutation CreateUser($facebookId:String,$phone:String,$email:String,$password:String,$name:String,$notificationToken:String,$appleId:String){
+ createUser(userInput:{
+ facebookId:$facebookId,
+ phone:$phone,
+ email:$email,
+ password:$password,
+ name:$name,
+ notificationToken:$notificationToken,
+ appleId:$appleId
+ }){
+ userId
+ token
+ tokenExpiration
+ name
+ email
+ phone
+ notificationToken
+ }
+ }`
+
+export const updateUser = `
+ mutation UpdateUser($name:String!,$phone:String!){
+ updateUser(updateUserInput:{name:$name,phone:$phone}){
+ _id
+ name
+ phone
+ }
+ }`
+
+export const updateNotificationStatus = `
+ mutation UpdateNotificationStatus($offerNotification:Boolean!,$orderNotification:Boolean!){
+ updateNotificationStatus(offerNotification:$offerNotification,orderNotification:$orderNotification){
+ _id
+ notificationToken
+ is_order_notification
+ is_offer_notification
+ }
+ }`
+export const profile = `
+ query{
+ profile{
+ _id
+ name
+ phone
+ email
+ notificationToken
+ is_order_notification
+ is_offer_notification
+ addresses{
+ _id
+ label
+ delivery_address
+ details
+ longitude
+ latitude
+ selected
+ }
+ }
+ }`
+
+export const order = `query Order($id:String!){
+ order(id:$id){
+ _id
+ delivery_address{
+ latitude
+ longitude
+ delivery_address
+ details
+ label
+ }
+ delivery_charges
+ order_id
+ user{
+ _id
+ phone
+ }
+ items{
+ _id
+ food{
+ _id
+ title
+ category{
+ _id
+ }
+ description
+ img_url
+
+ }
+ variation{
+ _id
+ title
+ price
+ }
+ addons{
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options{
+ _id
+ title
+ description
+ price
+ }
+ }
+ quantity
+ }
+ payment_status
+ payment_method
+ order_amount
+ paid_amount
+ order_status
+ status_queue{
+ pending
+ preparing
+ picked
+ delivered
+ cancelled
+ }
+ createdAt
+ review{
+ _id
+ rating
+ description
+ }
+ rider{
+ _id
+ }
+ }
+}
+`
+
+export const myOrders = `query Orders($offset:Int){
+ orders(offset:$offset){
+ _id
+ delivery_address{
+ latitude
+ longitude
+ delivery_address
+ details
+ label
+ }
+ delivery_charges
+ order_id
+ user{
+ _id
+ phone
+ }
+
+ items{
+ _id
+ food{
+ _id
+ title
+ category{
+ _id
+ }
+ description
+ img_url
+ }
+ variation{
+ _id
+ title
+ price
+ }
+ addons{
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options{
+ _id
+ title
+ description
+ price
+ }
+ }
+ quantity
+ }
+ payment_status
+ payment_method
+ order_amount
+ paid_amount
+ order_status
+ status_queue{
+ pending
+ preparing
+ picked
+ delivered
+ cancelled
+ }
+ createdAt
+ review{
+ _id
+ rating
+ description
+ }
+ rider{
+ _id
+ }
+ }
+}
+`
+
+//
+// can we get userId from request instead??
+// needs research
+//
+
+export const orderStatusChanged = `subscription OrderStatusChanged($userId:String!){
+ orderStatusChanged(userId:$userId)
+ {
+ userId
+ origin
+ order{
+ _id
+ delivery_address{
+ latitude
+ longitude
+ delivery_address
+ details
+ label
+ }
+ delivery_charges
+ order_id
+ user{
+ _id
+ phone
+ }
+
+ items{
+ _id
+ food{
+ _id
+ title
+ category{
+ _id
+ }
+ description
+ img_url
+ }
+ variation{
+ _id
+ title
+ price
+ }
+ addons{
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options{
+ _id
+ title
+ description
+ price
+ }
+ }
+ quantity
+ }
+ payment_status
+ payment_method
+ order_amount
+ paid_amount
+ order_status
+ status_queue{
+ pending
+ preparing
+ picked
+ delivered
+ cancelled
+ }
+ createdAt
+ review{
+ _id
+ rating
+ description
+ }
+ rider{
+ _id
+ }
+ }
+ }
+}
+`
+
+//
+// status queue??
+// can we use address id instead of address object, then get the address on backend??
+//
+export const placeOrder = `
+mutation PlaceOrder($orderInput:[OrderInput!]!,$paymentMethod:String!,$couponCode:String,$address:AddressInput!){
+ placeOrder(orderInput: $orderInput,paymentMethod:$paymentMethod,couponCode:$couponCode,address:$address) {
+ _id
+ order_id
+ delivery_address{
+ latitude
+ longitude
+ delivery_address
+ details
+ label
+ }
+ delivery_charges
+ items{
+ _id
+ food{
+ _id
+ title
+ category{
+ _id
+ }
+ description
+ img_url
+ }
+ variation{
+ _id
+ title
+ price
+ }
+ addons{
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options{
+ _id
+ title
+ description
+ price
+ }
+ }
+ quantity
+ }
+ user {
+ _id
+ phone
+ email
+ }
+ rider{
+ _id
+ }
+ payment_status
+ payment_method
+ paid_amount
+ order_amount
+ order_status
+ status_queue{
+ pending
+ preparing
+ picked
+ delivered
+ cancelled
+ }
+ createdAt
+ review{
+ _id
+ rating
+ description
+ }
+ }
+}`
+
+export const reviewOrder = `mutation ReviewOrder(
+ $orderId:String!,
+ $rating:Int!,
+ $description:String
+){
+ reviewOrder(reviewInput:{
+ orderId:$orderId,
+ rating:$rating,
+ description:$description
+ }){
+ _id
+ order_id
+ review{
+ _id
+ rating
+ description
+ }
+ createdAt
+ updatedAt
+ is_active
+ }
+}`
+
+//
+// use this to push token instead of login, signup mutation?
+// needs research
+//
+export const pushToken = `mutation PushToken($token:String!){
+ pushToken(token:$token){
+ _id
+ notificationToken
+ }
+}`
+
+export const getConfiguration = `query Configuration{
+ configuration{
+ _id
+ currency
+ currency_symbol
+ delivery_charges
+ }
+}`
+
+export const foodByIds = `query FoodByIds($ids:[String!]!){
+ foodByIds(ids: $ids) {
+ _id
+ title
+ description
+ img_url
+ stock
+ category {
+ _id
+ }
+ variations {
+ _id
+ title
+ price
+ discounted
+ addons {
+ _id
+ title
+ description
+ quantity_minimum
+ quantity_maximum
+ options {
+ _id
+ title
+ description
+ price
+ }
+ }
+ }
+ }
+}`
+
+export const getCoupon = `mutation Coupon($coupon:String!){
+ coupon(coupon:$coupon){
+ _id
+ code
+ discount
+ enabled
+ }
+}`
+
+export const deleteAddress = `mutation DeleteAddress($id:ID!){
+ deleteAddress(id:$id){
+ _id
+ addresses{
+ _id
+ label
+ delivery_address
+ details
+ longitude
+ latitude
+ selected
+ }
+ }
+}`
+
+export const createAddress = `mutation CreateAddress($addressInput:AddressInput!){
+ createAddress(addressInput:$addressInput){
+ _id
+ addresses{
+ _id
+ label
+ delivery_address
+ details
+ longitude
+ latitude
+ selected
+ }
+ }
+}`
+
+export const editAddress = `mutation EditAddress($addressInput:AddressInput!){
+ editAddress(addressInput:$addressInput){
+ _id
+ label
+ delivery_address
+ details
+ longitude
+ latitude
+ }
+}`
+
+export const changePassword = `mutation ChangePassword($oldPassword:String!,$newPassword:String!){
+ changePassword(oldPassword:$oldPassword,newPassword:$newPassword)
+}`
+
+export const forgotPassword = `mutation ForgotPassword($email:String!){
+ forgotPassword(email:$email){
+ result
+ }
+}`
+
+export const selectAddress = `mutation SelectAddress($id:String!){
+ selectAddress(id:$id){
+ _id
+ addresses{
+ _id
+ label
+ delivery_address
+ details
+ longitude
+ latitude
+ selected
+ }
+ }
+}`
+
+export const subscriptionRiderLocation = `subscription SubscriptionRiderLocation($riderId:String!){
+ subscriptionRiderLocation(riderId:$riderId) {
+ _id
+ location {
+ latitude
+ longitude
+ }
+ }
+}`
+
+export const rider = `query Rider($id:String){
+ rider(id:$id){
+ _id
+ location {
+ latitude
+ longitude
+ }
+ }
+}`
diff --git a/CustomerApp/src/assets/.DS_Store b/CustomerApp/src/assets/.DS_Store
new file mode 100644
index 0000000..1c976ac
Binary files /dev/null and b/CustomerApp/src/assets/.DS_Store differ
diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf
new file mode 100644
index 0000000..b94d47f
Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf differ
diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf
new file mode 100644
index 0000000..2ab0221
Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf differ
diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf
new file mode 100644
index 0000000..e90e87e
Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf differ
diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf
new file mode 100644
index 0000000..be06e7f
Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf differ
diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf
new file mode 100644
index 0000000..dabf7c2
Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf differ
diff --git a/CustomerApp/src/assets/font/icomoon.ttf b/CustomerApp/src/assets/font/icomoon.ttf
new file mode 100644
index 0000000..18ab765
Binary files /dev/null and b/CustomerApp/src/assets/font/icomoon.ttf differ
diff --git a/CustomerApp/src/assets/images/.DS_Store b/CustomerApp/src/assets/images/.DS_Store
new file mode 100644
index 0000000..ea4530d
Binary files /dev/null and b/CustomerApp/src/assets/images/.DS_Store differ
diff --git a/CustomerApp/src/assets/images/SVG/Logo.js b/CustomerApp/src/assets/images/SVG/Logo.js
new file mode 100644
index 0000000..1bd0626
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/Logo.js
@@ -0,0 +1,20 @@
+import * as React from 'react'
+import Svg, { Path } from 'react-native-svg'
+
+function LogoAlphabet(props) {
+ return (
+
+ )
+}
+
+export default React.memo(LogoAlphabet)
diff --git a/CustomerApp/src/assets/images/SVG/LogoName.js b/CustomerApp/src/assets/images/SVG/LogoName.js
new file mode 100644
index 0000000..57180ae
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/LogoName.js
@@ -0,0 +1,27 @@
+import * as React from 'react'
+import Svg, { Text, TSpan } from 'react-native-svg'
+
+function LogoName(props) {
+ return (
+
+ )
+}
+
+export default React.memo(LogoName)
diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js b/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js
new file mode 100644
index 0000000..cc009b8
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js
@@ -0,0 +1,18 @@
+import * as React from 'react'
+import Svg, { Path } from 'react-native-svg'
+
+function CartIcon(props) {
+ return (
+
+ )
+}
+
+export default CartIcon
diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js
new file mode 100644
index 0000000..4d07318
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js
@@ -0,0 +1,72 @@
+import * as React from 'react'
+import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
+/* SVGR has dropped some elements not supported by react-native-svg: style */
+
+function EmptyAddress(props) {
+ return (
+
+ )
+}
+
+export default React.memo(EmptyAddress)
diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js
new file mode 100644
index 0000000..a290bea
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js
@@ -0,0 +1,116 @@
+import * as React from 'react'
+import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
+/* SVGR has dropped some elements not supported by react-native-svg: style */
+
+function EmptyCart(props) {
+ return (
+
+ )
+}
+
+export default React.memo(EmptyCart)
diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js
new file mode 100644
index 0000000..4a996d0
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js
@@ -0,0 +1,535 @@
+import * as React from 'react'
+import Svg, {
+ Defs,
+ LinearGradient,
+ Stop,
+ G,
+ Path,
+ Circle,
+ Ellipse
+} from 'react-native-svg'
+/* SVGR has dropped some elements not supported by react-native-svg: style */
+
+function EmptyFood(props) {
+ return (
+
+ )
+}
+
+export default React.memo(EmptyFood)
diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js
new file mode 100644
index 0000000..69e97fc
--- /dev/null
+++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js
@@ -0,0 +1,88 @@
+import * as React from 'react'
+import Svg, { Defs, G, Path, Circle } from 'react-native-svg'
+/* SVGR has dropped some elements not supported by react-native-svg: style */
+
+function EmptyOrder(props) {
+ return (
+
+ )
+}
+
+export default React.memo(EmptyOrder)
diff --git a/CustomerApp/src/assets/images/cashIcon.png b/CustomerApp/src/assets/images/cashIcon.png
new file mode 100644
index 0000000..65a2228
Binary files /dev/null and b/CustomerApp/src/assets/images/cashIcon.png differ
diff --git a/CustomerApp/src/assets/images/defaultNotification.png b/CustomerApp/src/assets/images/defaultNotification.png
new file mode 100755
index 0000000..99ceb13
Binary files /dev/null and b/CustomerApp/src/assets/images/defaultNotification.png differ
diff --git a/CustomerApp/src/assets/images/facebook.png b/CustomerApp/src/assets/images/facebook.png
new file mode 100644
index 0000000..c69e1bd
Binary files /dev/null and b/CustomerApp/src/assets/images/facebook.png differ
diff --git a/CustomerApp/src/assets/images/food_placeholder.png b/CustomerApp/src/assets/images/food_placeholder.png
new file mode 100644
index 0000000..978fb34
Binary files /dev/null and b/CustomerApp/src/assets/images/food_placeholder.png differ
diff --git a/CustomerApp/src/assets/images/google.png b/CustomerApp/src/assets/images/google.png
new file mode 100644
index 0000000..05b1acd
Binary files /dev/null and b/CustomerApp/src/assets/images/google.png differ
diff --git a/CustomerApp/src/assets/images/home.png b/CustomerApp/src/assets/images/home.png
new file mode 100644
index 0000000..5c100b2
Binary files /dev/null and b/CustomerApp/src/assets/images/home.png differ
diff --git a/CustomerApp/src/assets/images/imagePlaceholder.png b/CustomerApp/src/assets/images/imagePlaceholder.png
new file mode 100644
index 0000000..32e9e28
Binary files /dev/null and b/CustomerApp/src/assets/images/imagePlaceholder.png differ
diff --git a/CustomerApp/src/assets/images/location.png b/CustomerApp/src/assets/images/location.png
new file mode 100755
index 0000000..d418e5b
Binary files /dev/null and b/CustomerApp/src/assets/images/location.png differ
diff --git a/CustomerApp/src/assets/images/login_reg_food.jpg b/CustomerApp/src/assets/images/login_reg_food.jpg
new file mode 100755
index 0000000..8f33323
Binary files /dev/null and b/CustomerApp/src/assets/images/login_reg_food.jpg differ
diff --git a/CustomerApp/src/assets/images/markerEnatega.png b/CustomerApp/src/assets/images/markerEnatega.png
new file mode 100644
index 0000000..1e5af7b
Binary files /dev/null and b/CustomerApp/src/assets/images/markerEnatega.png differ
diff --git a/CustomerApp/src/assets/images/masterIcon.png b/CustomerApp/src/assets/images/masterIcon.png
new file mode 100644
index 0000000..a83afac
Binary files /dev/null and b/CustomerApp/src/assets/images/masterIcon.png differ
diff --git a/CustomerApp/src/assets/images/notificationDefault.png b/CustomerApp/src/assets/images/notificationDefault.png
new file mode 100755
index 0000000..793f65a
Binary files /dev/null and b/CustomerApp/src/assets/images/notificationDefault.png differ
diff --git a/CustomerApp/src/assets/images/paypal.png b/CustomerApp/src/assets/images/paypal.png
new file mode 100644
index 0000000..1eb9446
Binary files /dev/null and b/CustomerApp/src/assets/images/paypal.png differ
diff --git a/CustomerApp/src/assets/images/placeholder.png b/CustomerApp/src/assets/images/placeholder.png
new file mode 100755
index 0000000..c13e0c3
Binary files /dev/null and b/CustomerApp/src/assets/images/placeholder.png differ
diff --git a/CustomerApp/src/assets/images/rider.png b/CustomerApp/src/assets/images/rider.png
new file mode 100644
index 0000000..81b3ee4
Binary files /dev/null and b/CustomerApp/src/assets/images/rider.png differ
diff --git a/CustomerApp/src/assets/images/searchLocation.png b/CustomerApp/src/assets/images/searchLocation.png
new file mode 100644
index 0000000..39e98c7
Binary files /dev/null and b/CustomerApp/src/assets/images/searchLocation.png differ
diff --git a/CustomerApp/src/assets/images/stripe.png b/CustomerApp/src/assets/images/stripe.png
new file mode 100644
index 0000000..64f2236
Binary files /dev/null and b/CustomerApp/src/assets/images/stripe.png differ
diff --git a/CustomerApp/src/assets/images/visaIcon.png b/CustomerApp/src/assets/images/visaIcon.png
new file mode 100644
index 0000000..c5446ed
Binary files /dev/null and b/CustomerApp/src/assets/images/visaIcon.png differ
diff --git a/CustomerApp/src/components/CartItem/CartItem.js b/CustomerApp/src/components/CartItem/CartItem.js
new file mode 100755
index 0000000..1d1c8b1
--- /dev/null
+++ b/CustomerApp/src/components/CartItem/CartItem.js
@@ -0,0 +1,88 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useContext } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import ConfigurationContext from '../../context/Configuration'
+import { alignment } from '../../utils/alignment'
+import { ICONS_NAME } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import { CustomIcon } from '../CustomIcon'
+import EnategaImage from '../EnategaImage/EnategaImage'
+import TextDefault from '../Text/TextDefault/TextDefault'
+import useStyle from './styles'
+
+const cartItem = props => {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const configuration = useContext(ConfigurationContext)
+
+ return (
+
+
+
+
+
+
+ {props.dealName}
+
+
+
+
+ {configuration.currency_symbol}
+ {parseFloat(props.dealPrice).toFixed(2)}
+
+
+
+
+
+
+
+
+ {props.quantity}
+
+
+
+
+
+
+
+
+
+ )
+}
+cartItem.propTypes = {
+ removeQuantity: PropTypes.func,
+ quantity: PropTypes.number,
+ addQuantity: PropTypes.func,
+ dealName: PropTypes.string,
+ dealPrice: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ image: PropTypes.string
+}
+export default cartItem
diff --git a/CustomerApp/src/components/CartItem/styles.js b/CustomerApp/src/components/CartItem/styles.js
new file mode 100755
index 0000000..54698a7
--- /dev/null
+++ b/CustomerApp/src/components/CartItem/styles.js
@@ -0,0 +1,78 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+const { width } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ itemContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ width: '100%',
+ ...alignment.MBmedium,
+ backgroundColor: colors.cardContainer,
+ elevation: 5,
+ padding: 10,
+ shadowColor: colors.placeHolderColor,
+ shadowOffset: {
+ width: verticalScale(2),
+ height: verticalScale(1)
+ },
+ borderRadius: 20,
+ height: width * 0.28,
+ shadowOpacity: 0.3,
+ shadowRadius: verticalScale(10),
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+ imgResponsive: {
+ width: moderateScale(75),
+ height: moderateScale(75),
+ borderRadius: moderateScale(20)
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ textContainer: {
+ flex: 1,
+ height: '100%',
+ justifyContent: 'space-evenly',
+ ...alignment.MLsmall
+ },
+ actionContainer: {
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ alignItems: 'center'
+ },
+ actionContainerBtns: {
+ width: scale(24),
+ aspectRatio: 1,
+ backgroundColor: colors.lightBackground,
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: scale(8),
+ elevation: 3,
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1)
+ },
+ tagbtn: {
+ backgroundColor: colors.iconColorPrimary
+ },
+ actionContainerView: {
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/CustomIcon/index.js b/CustomerApp/src/components/CustomIcon/index.js
new file mode 100644
index 0000000..dac51f6
--- /dev/null
+++ b/CustomerApp/src/components/CustomIcon/index.js
@@ -0,0 +1,8 @@
+import { createIconSetFromIcoMoon } from '@expo/vector-icons'
+import icoMoonConfig from './selection.json'
+
+export const CustomIcon = createIconSetFromIcoMoon(
+ icoMoonConfig,
+ 'icomoon',
+ 'icomoon.ttf'
+)
diff --git a/CustomerApp/src/components/CustomIcon/selection.json b/CustomerApp/src/components/CustomIcon/selection.json
new file mode 100644
index 0000000..aff417b
--- /dev/null
+++ b/CustomerApp/src/components/CustomIcon/selection.json
@@ -0,0 +1 @@
+{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M438.784 211.338c-8.929 2.173-15.854 6.822-29.161 19.584-7.053 6.764-65.124 62.159-129.047 123.103-63.923 60.941-117.53 112.545-119.124 114.678-18.289 24.43-18.061 62.874 0.52 87.176 1.874 2.447 50.867 49.679 108.877 104.957s115.891 110.449 128.627 122.601c28.772 27.456 34.071 30.643 50.949 30.643 28.805 0 49.905-29.261 41.603-57.697-3.453-11.832 4.188-4.032-111.322-113.636l-90.844-86.203 271.58-0.512c200.781-0.379 272.42-0.819 274.798-1.687 40.11-14.674 39.378-68.012-1.167-85.007-1.126-0.471-124.076-1.088-273.221-1.37l-271.173-0.512 91.461-87.163c115.387-109.965 106.171-100.524 109.914-112.604 10.186-32.883-19.709-64.509-53.268-56.351z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (1)"]},"attrs":[{}],"properties":{"order":32,"id":16,"name":"back","prevSize":32,"code":59649},"setIdx":0,"setId":1,"iconIdx":0},{"icon":{"paths":["M857.6 281.6h-115.2c0-127.246-103.154-230.4-230.4-230.4s-230.4 103.154-230.4 230.4v0h-115.2c-63.623 0-115.2 51.577-115.2 115.2v0 384c0.134 105.985 86.015 191.866 191.987 192l537.613 0c105.985-0.134 191.866-86.015 192-191.987l0-0.013v-384c0-63.623-51.577-115.2-115.2-115.2v0zM512 128c84.831 0 153.6 68.769 153.6 153.6v0h-307.2c0-84.831 68.769-153.6 153.6-153.6v0zM896 780.8c0 63.623-51.577 115.2-115.2 115.2v0h-537.6c-63.623 0-115.2-51.577-115.2-115.2v0-384c0-21.208 17.192-38.4 38.4-38.4v0h115.2v76.8c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-76.8h307.2v76.8c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-76.8h115.2c21.208 0 38.4 17.192 38.4 38.4v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 10"]},"attrs":[{}],"properties":{"order":41,"id":8,"name":"cart","prevSize":32,"code":59657},"setIdx":0,"setId":1,"iconIdx":1},{"icon":{"paths":["M826.184 615.004l-140.462-278.292v-99.686l54.149-185.825h-151.173c-0.012-0-0.026-0-0.041-0-31.922 0-60.582 13.964-80.205 36.117l-0.098 0.112c-19.721-22.265-48.381-36.229-80.302-36.229-0.003 0-0.007 0-0.010 0l-151.193-0 54.149 185.836v99.686l-140.462 278.282c-16.682 32.352-26.461 70.607-26.461 111.145 0 136.222 110.429 246.651 246.651 246.651 0 0 0.001-0 0.001-0l195.266 0c136.209-0.017 246.621-110.44 246.621-246.651 0-40.538-9.78-78.793-27.109-112.532l0.647 1.387zM428.042 105.206c29.451 0.035 53.315 23.9 53.35 53.347l0 0.003h54.006c0.029-29.449 23.892-53.315 53.337-53.35l79.189-0-29.42 100.966h-260.25l-29.42-100.966zM631.716 260.168v55.972h-246.682v-55.962zM770.058 827.116c-34.197 55.35-94.537 91.68-163.362 91.68-0.251 0-0.501-0-0.752-0.001l0.039 0h-195.256c-0.012 0-0.026 0-0.041 0-106.401 0-192.655-86.255-192.655-192.655 0-31.66 7.637-61.537 21.169-87.888l-0.505 1.083 135.916-269.189h267.448l135.875 269.189c13.153 25.273 20.867 55.188 20.867 86.905 0 37.357-10.703 72.214-29.209 101.673l0.467-0.797z","M544.379 605.972h-57.917c-13.058 0-23.644-10.586-23.644-23.644s10.586-23.644 23.644-23.644h97.782v-54.006h-48.916v-36.434h-54.006v36.618c-40.584 2.805-72.444 36.415-72.444 77.466 0 42.853 34.717 77.596 77.56 77.64l57.922 0c14.189 0 25.692 11.503 25.692 25.692s-11.503 25.692-25.692 25.692l-124.774 0v54.006h61.747v36.434h53.996v-36.434h9.052c43.626-0.51 78.795-35.995 78.795-79.693s-35.169-79.183-78.746-79.692l-0.048-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 15"]},"attrs":[{},{}],"properties":{"order":46,"id":3,"name":"cash","prevSize":32,"code":59662},"setIdx":0,"setId":1,"iconIdx":2},{"icon":{"paths":["M475.136 103.534c-262.963 23.017-435.53 287.636-351.716 539.336 50.196 150.748 177.659 253.783 342.5 276.856 15.452 2.163 79.8 1.81 96.256-0.53 50.173-7.132 80.545-16.141 129.060-38.29 105.436-48.133 191.127-154.957 219.535-273.674 8.253-34.483 10.317-53.535 10.317-95.232 0-242.173-204.616-429.591-445.952-408.466zM543.744 165.955c178.24 15.235 314.775 165.079 314.844 345.533 0.097 253.189-256.509 419.853-488.94 317.563-75.428-33.196-141.44-99.205-174.705-174.7-107.528-244.045 83.195-511.099 348.8-488.397zM658.012 366.653c-7.7 1.92-12.099 6.088-117.371 111.217l-106.015 105.869-38.71-39.386c-42.604-43.351-45.64-45.932-56.814-48.261-29.724-6.198-52.961 22.915-40.486 50.724 4.618 10.296 94.328 98.721 105.864 104.346 20.349 9.923 45.12 9.295 64.399-1.631 5.34-3.026 225.987-222.546 230.118-228.946 17.428-26.98-9.096-61.883-40.986-53.932z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector"],"defaultCode":59648},"attrs":[{}],"properties":{"order":34,"id":18,"name":"checked","prevSize":32,"code":59648},"setIdx":0,"setId":1,"iconIdx":3},{"icon":{"paths":["M583.854 551.383c0 0.096 0.001 0.21 0.001 0.323 0 39.684-32.17 71.854-71.854 71.854s-71.854-32.17-71.854-71.854c0-26.454 14.295-49.568 35.582-62.041l0.339-0.184v-153.672c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032v153.672c21.564 12.574 35.845 35.56 35.932 61.888l0 0.013zM801.577 283.32c65.456 70.326 105.631 164.947 105.631 268.952 0 218.27-176.943 395.213-395.213 395.213s-395.213-176.943-395.213-395.213c0-104.005 40.175-198.627 105.852-269.193l-0.221 0.241-24.136-26.839c-13.048 4.744-28.109 7.487-43.811 7.487-0.614 0-1.227-0.004-1.839-0.013l0.093 0.001c-0.18 0.003-0.393 0.005-0.607 0.005-19.845 0-35.932-16.087-35.932-35.932s16.087-35.932 35.932-35.932c0.213 0 0.426 0.002 0.639 0.006l-0.032-0c28.201 0 35.932-7.721 35.932-35.932-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032c0.006 0.453 0.009 0.987 0.009 1.523 0 17.842-3.702 34.82-10.38 50.207l0.315-0.816 25.364 28.17c55.567-42.167 124.090-70.069 198.687-77.090l1.567-0.119v-37.796c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032v37.796c76.168 7.139 144.694 35.041 201.24 77.92l-0.977-0.71 25.364-28.17c-6.362-14.57-10.064-31.548-10.064-49.39 0-0.521 0.003-1.042 0.009-1.562l-0.001 0.079c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032c0 28.201 7.721 35.932 35.932 35.932 19.582 0.341 35.326 16.296 35.326 35.927s-15.743 35.586-35.294 35.927l-0.032 0c-0.519 0.007-1.132 0.012-1.746 0.012-15.702 0-30.763-2.743-44.731-7.776l0.92 0.289zM835.369 551.383c0-178.586-144.773-323.359-323.359-323.359s-323.359 144.773-323.359 323.359c0 178.583 144.767 323.353 323.348 323.359l0 0c178.582-0.006 323.348-144.776 323.348-323.359v-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 7"]},"attrs":[{}],"properties":{"order":38,"id":11,"name":"clock","prevSize":32,"code":59654},"setIdx":0,"setId":1,"iconIdx":4},{"icon":{"paths":["M860.836 170.445v0c-10.41-10.407-24.79-16.844-40.673-16.844s-30.263 6.437-40.673 16.844l-263.854 263.844-263.803-263.844c-10.41-10.407-24.79-16.844-40.673-16.844s-30.263 6.437-40.673 16.844l0-0c-10.407 10.41-16.844 24.79-16.844 40.673s6.437 30.263 16.844 40.673l263.803 263.844-263.844 263.844c-10.407 10.41-16.844 24.79-16.844 40.673s6.437 30.263 16.844 40.673l-0-0c10.41 10.407 24.79 16.844 40.673 16.844s30.263-6.437 40.673-16.844l263.844-263.833 263.844 263.844c10.41 10.407 24.79 16.844 40.673 16.844s30.263-6.437 40.673-16.844l-0 0c10.407-10.41 16.844-24.79 16.844-40.673s-6.437-30.263-16.844-40.673l-263.833-263.854 263.844-263.803c10.42-10.412 16.865-24.8 16.865-40.694s-6.445-30.282-16.864-40.693l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 18"]},"attrs":[{}],"properties":{"order":59,"id":21,"name":"cross","prevSize":32,"code":59675},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M357.181 821.637h-61.932c-51.3 0-92.887-41.587-92.887-92.887v0-433.5c0-51.3 41.587-92.887 92.887-92.887v0h61.932c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966v0h-61.932c-85.462 0.105-154.714 69.357-154.819 154.808l-0 0.010v433.49c0.105 85.462 69.357 154.714 154.808 154.819l61.942 0c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966v0z","M464.374 304.323l-142.029 141.998c-16.751 16.833-27.106 40.044-27.106 65.674s10.355 48.841 27.11 65.678l-0.004-0.004 141.998 141.998c5.637 5.821 13.524 9.434 22.254 9.434 17.102 0 30.966-13.864 30.966-30.966 0-8.731-3.613-16.617-9.426-22.246l-0.008-0.008-132.874-132.925h477.338c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966h-477.368l132.936-132.915c5.821-5.637 9.434-13.524 9.434-22.254 0-17.102-13.864-30.966-30.966-30.966-8.731 0-16.617 3.613-22.246 9.426l-0.008 0.008z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 3"]},"attrs":[{},{}],"properties":{"order":35,"id":15,"name":"exit","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":6},{"icon":{"paths":["M356.352 129.633c-47.355 5.294-83.661 30.088-103.66 70.792l-6.175 12.567-36.987 0.008c-49.646 0.010-55.273 1.129-67.325 13.386-20.242 20.58-15.734 54.541 9.185 69.181 8.064 4.739 9.157 4.851 53.189 5.437l42.276 0.563 3.976 8.973c28.631 64.643 107.773 93.107 171.633 61.734 28.157-13.834 51.172-37.862 61.514-64.22l2.744-6.999 182.879-0.013c149.286-0.010 183.818-0.264 187.999-1.38 45.294-12.099 41.49-78.999-4.872-85.706-3.607-0.522-84.751-0.932-186.158-0.945l-179.768-0.020-3.302-8.079c-19.256-47.094-76.434-80.947-127.148-75.279zM376.32 218.481c43.791 11.697 38.295 75.666-6.728 78.272-35.937 2.081-56.479-39.624-32.458-65.907 10.278-11.244 25.454-16.033 39.186-12.365zM634.88 382.551c-11.761 2.066-15.501 2.939-22.362 5.228-35.274 11.763-67.43 42.094-78.487 74.035l-1.244 3.594-370.483 1.024-7.288 3.418c-31.626 14.828-34.424 58.703-4.92 77.187 10.125 6.344-3.922 5.919 197.99 5.97l183.882 0.044 6.925 14.036c41.966 85.061 159.468 95.649 215.951 19.456 5.158-6.961 17.252-29.481 17.252-32.131 0-1.114 8.005-1.423 43.264-1.667l43.264-0.297 6.144-2.867c33.523-15.642 33.28-63.982-0.399-79.941l-6.769-3.208-85.143-0.614-3.226-7.885c-14.264-34.875-48.069-63.355-86.735-73.070-7.928-1.992-40.453-3.571-47.616-2.312zM669.184 473.405c30.057 13.962 30.559 58.327 0.817 72.077-37.028 17.121-72.783-23.319-50.959-57.636 10.301-16.2 32.561-22.61 50.143-14.441zM351.882 634.918c-33.672 3.802-65.72 22.216-87.124 50.061-4.977 6.474-16.95 28.68-16.95 31.434 0 1.172-6.298 1.413-37.12 1.431-50.883 0.028-56.422 1.108-68.483 13.373-20.636 20.979-15.468 55.741 10.371 69.768 7.69 4.175 8.346 4.237 51.996 4.836l42.268 0.579 3.482 8.010c29.371 67.579 113.761 95.788 178.557 59.684 23.962-13.353 44.951-36.488 54.676-60.27l3.246-7.936 182.84-0.013c149.253-0.010 183.777-0.264 187.958-1.38 45.271-12.093 41.467-79.004-4.872-85.706-3.607-0.522-84.736-0.932-186.125-0.945l-179.73-0.020-4.447-9.692c-22.866-49.848-75.587-79.416-130.545-73.213zM376.32 723.313c36.506 9.751 41.521 58.573 7.68 74.78-19.917 9.539-43.93 0.748-53.558-19.607-13.896-29.379 14.52-63.549 45.878-55.173z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (3)"]},"attrs":[{}],"properties":{"order":49,"id":19,"name":"filter","prevSize":32,"code":59665},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M939.581 398.838l-291.441-291.471c-34.801-34.704-82.827-56.162-135.864-56.162s-101.063 21.458-135.869 56.166l0.004-0.004-291.42 291.471c-20.873 20.734-33.792 49.451-33.792 81.187 0 0.11 0 0.22 0 0.331l-0-0.017v377.201c0.006 63.658 51.612 115.261 115.272 115.261h691.64c63.646-0.018 115.235-51.614 115.241-115.261l0-0.001v-377.201c0-0.099 0-0.217 0-0.334 0-31.725-12.911-60.435-33.766-81.16l-0.006-0.006zM627.548 895.959h-230.543v-151.153c-0.003-0.323-0.005-0.704-0.005-1.086 0-63.663 51.609-115.272 115.272-115.272s115.272 51.609 115.272 115.272c0 0.382-0.002 0.764-0.006 1.145l0-0.058zM896.512 857.539c0 21.212-17.19 38.409-38.399 38.42l-153.724 0v-151.153c0-106.101-86.012-192.113-192.113-192.113s-192.113 86.012-192.113 192.113h-0v151.153h-153.692c-0.015 0-0.033 0-0.051 0-21.219 0-38.42-17.201-38.42-38.42l0-0v-377.201c0.039-10.605 4.335-20.198 11.266-27.168l-0.002 0.002 291.482-291.359c20.897-20.802 49.714-33.662 81.536-33.662s60.64 12.86 81.54 33.666l-0.004-0.004 291.43 291.471c6.904 6.942 11.193 16.49 11.264 27.040l0 0.014z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 9"]},"attrs":[{}],"properties":{"order":40,"id":9,"name":"home","prevSize":32,"code":59656},"setIdx":0,"setId":1,"iconIdx":8},{"icon":{"paths":["M512 51.2c-254.493 0-460.8 206.307-460.8 460.8s206.307 460.8 460.8 460.8c254.493 0 460.8-206.307 460.8-460.8v0c0-254.493-206.307-460.8-460.8-460.8v0zM512 896c-212.077 0-384-171.923-384-384s171.923-384 384-384c212.077 0 384 171.923 384 384v0c0 212.077-171.923 384-384 384v0z","M512 243.2c-21.208 0-38.4 17.192-38.4 38.4v0 307.2c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-307.2c0-21.208-17.192-38.4-38.4-38.4v0z","M483.84 704h56.32c5.655 0 10.24 4.585 10.24 10.24v56.32c0 5.655-4.585 10.24-10.24 10.24h-56.32c-5.655 0-10.24-4.585-10.24-10.24v-56.32c0-5.655 4.585-10.24 10.24-10.24z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 13"]},"attrs":[{},{},{}],"properties":{"order":44,"id":5,"name":"info","prevSize":32,"code":59660},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M508.969 281.661c-84.831 0-153.6 68.769-153.6 153.6s68.769 153.6 153.6 153.6c84.831 0 153.6-68.769 153.6-153.6v0c0-84.831-68.769-153.6-153.6-153.6v0zM508.969 512.061c-42.415 0-76.8-34.385-76.8-76.8s34.385-76.8 76.8-76.8c42.415 0 76.8 34.385 76.8 76.8v0c0 42.415-34.385 76.8-76.8 76.8v0z","M508.959 972.82c-0.308 0.002-0.673 0.003-1.037 0.003-67.52 0-127.317-33.063-164.085-83.881l-0.407-0.591c-146.33-201.882-220.549-353.618-220.549-451.082 0-213.225 172.853-386.079 386.079-386.079s386.079 172.853 386.079 386.079v0c0 97.454-74.22 249.19-220.549 451.041-37.174 51.433-96.985 84.513-164.522 84.513-0.354 0-0.708-0.001-1.062-0.003l0.054 0zM508.959 135.045c-166.889 0.198-302.126 135.429-302.336 302.296l-0 0.020c0 77.179 72.704 219.894 204.616 401.859 22.209 30.334 57.69 49.811 97.72 49.811s75.511-19.477 97.483-49.472l0.237-0.339c131.932-181.965 204.616-324.68 204.616-401.859-0.198-166.896-135.44-302.138-302.317-302.336l-0.019-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 11"]},"attrs":[{},{}],"properties":{"order":42,"id":7,"name":"location","prevSize":32,"code":59658},"setIdx":0,"setId":1,"iconIdx":10},{"icon":{"paths":["M543.853 1023.985c-18.239-0.177-35.256-0.692-51.993-1.562-266.004-13.26-481.93-224.354-491.462-480.648-0.371-7.401-0.583-16.071-0.583-24.79 0-127.396 45.166-244.243 120.36-335.402l-0.72 0.899c82.296-96.458 198.066-162.231 329.138-179.273l2.619-0.278c14.773-1.853 31.869-2.91 49.213-2.91 2.9 0 5.792 0.030 8.678 0.088l-0.432-0.007h3.492q121.282-0.118 242.564-0.103h230.689c0.060-0 0.131-0 0.202-0 24.164 0 45.336 12.814 57.090 32.017l0.167 0.293c6.208 9.938 9.89 22.009 9.89 34.94 0 11.239-2.781 21.828-7.692 31.117l0.175-0.363-27.993 54.144-44.302 85.348c-56.103 108.037-114.122 219.727-170.284 330.018-13.93 32.804-45.873 55.392-83.092 55.392-1.784 0-3.555-0.052-5.313-0.154l0.243 0.011h-1.827c-72.192-0.781-149.083-1.134-249.355-1.134q-65.709 0-131.448 0.133l-88.987 0.103c10.446 23.626 21.724 43.778 34.626 62.736l-0.872-1.359c51.090 73.225 134.931 120.535 229.822 120.535 1.154 0 2.307-0.007 3.458-0.021l-0.175 0.002c21.495 0.442 44.199 0.634 71.632 0.634q17.311 0 34.814-0.074h0.177c0.017-0 0.036-0 0.056-0 14.291 0 26.821 7.536 33.835 18.85l0.098 0.17c3.692 5.933 5.882 13.133 5.882 20.846 0 6.655-1.63 12.93-4.513 18.446l0.105-0.22-72.192 140.037c-6.755 12.908-20.042 21.572-35.355 21.599l-0.004 0zM358.085 401.591c89.002 0 184.457-0.133 280.943-1.149 1.395-1.652 2.678-3.493 3.782-5.449l0.093-0.179c25.488-46.866 50.343-95.263 74.401-142.041l16.81-32.692-32.958-0.192c-30.762-0.192-61.039-0.383-91.050-0.383-46.586 0-84.715 0.457-119.956 1.473-65.791 2.714-124.977 28.947-169.825 70.451l0.175-0.16c-34.312 29.283-61.164 66.292-77.986 108.393l-0.659 1.869z"],"attrs":[{}],"width":1053,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Path 27559"]},"attrs":[{}],"properties":{"order":50,"id":20,"name":"logo","prevSize":32,"code":59666},"setIdx":0,"setId":1,"iconIdx":11},{"icon":{"paths":["M98.304 196.027c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h560.128l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.316-1.958-553.61-1.887-560.64 0.072zM98.304 462.267c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h826.368l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.332-1.964-819.837-1.892-826.88 0.072zM98.304 728.507c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h375.808l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.293-1.953-369.308-1.882-376.32 0.072z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (2)"]},"attrs":[{}],"properties":{"order":33,"id":17,"name":"menu","prevSize":32,"code":59653},"setIdx":0,"setId":1,"iconIdx":12},{"icon":{"paths":["M971.919 483.574c-15.412-241.963-215.431-432.374-459.922-432.374-254.493 0-460.8 206.307-460.8 460.8s206.307 460.8 460.8 460.8c0.084 0 0.168-0 0.252-0l267.865 0c105.887-0.111 191.695-85.919 191.805-191.795l0-0.011zM895.191 780.995c-0.006 63.557-51.53 115.077-115.087 115.077h-267.868c-113.769-0.051-215.998-49.417-286.477-127.88l-0.314-0.356c-60.604-67.117-97.685-156.489-97.685-254.522 0-15.941 0.981-31.654 2.885-47.080l-0.186 1.847c21.568-174.909 157.686-312.398 330.067-335.865l1.996-0.222c14.954-1.979 32.267-3.121 49.841-3.144l0.028-0c0.318-0.001 0.695-0.002 1.072-0.002 92.973 0 178.16 33.339 244.258 88.713l-0.594-0.484c78.636 65.7 130.462 161.208 137.998 268.928l0.068 1.213z","M358.134 397.373h153.446c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359v0h-153.446c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359v0z","M665.027 474.102h-306.893c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359h306.893c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359h0z","M665.027 627.548h-306.893c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359h306.893c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359h0z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 12"]},"attrs":[{},{},{},{}],"properties":{"order":43,"id":6,"name":"message","prevSize":32,"code":59659},"setIdx":0,"setId":1,"iconIdx":13},{"icon":{"paths":["M101.481 457.252c-60.078 14.633-59.604 104.097 0.632 119.788 8.847 2.304 810.926 2.304 819.773 0 60.631-15.793 60.626-105.385-0.010-119.875-8.591-2.053-811.958-1.966-820.396 0.087z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector"]},"attrs":[{}],"properties":{"order":60,"id":30,"name":"minus","prevSize":32,"code":59671},"setIdx":0,"setId":1,"iconIdx":14},{"icon":{"paths":["M838.4 204.8h-652.8c-74.194 0.082-134.318 60.206-134.4 134.392l-0 0.008v345.6c0.082 74.194 60.206 134.318 134.392 134.4l652.808 0c74.194-0.082 134.318-60.206 134.4-134.392l0-0.008v-345.6c-0.082-74.194-60.206-134.318-134.392-134.4l-0.008-0zM934.4 684.8c-0.064 52.994-43.006 95.936-95.994 96l-652.806 0c-52.994-0.064-95.936-43.006-96-95.994l-0-0.006v-345.6c0.064-52.994 43.006-95.936 95.994-96l652.806-0c52.994 0.064 95.936 43.006 96 95.994l0 0.006z","M326.84 449.874c-2.37-4.548-5.815-8.249-10.010-10.858l-0.117-0.068c-4.639-2.783-10.056-4.842-15.833-5.857l-0.285-0.041c-6.4-1.102-13.77-1.732-21.288-1.732-0.213 0-0.425 0.001-0.638 0.002l0.033-0h-38.728c-4.252 0.19-7.778 3.091-8.902 7.007l-0.017 0.068-26.051 113.5c-0.147 0.472-0.232 1.015-0.232 1.578 0 3.031 2.457 5.489 5.489 5.489 0.121 0 0.241-0.004 0.36-0.012l-0.016 0.001h18.545c4.263-0.128 7.81-3.049 8.883-6.989l0.015-0.067 6.359-27.556c1.098-3.993 4.636-6.901 8.874-7.035l0.015-0h5.304c1.539 0.096 3.338 0.151 5.15 0.151 17.733 0 34.238-5.255 48.044-14.294l-0.335 0.206c11.501-7.924 18.944-21.021 18.944-35.857 0-0.325-0.004-0.65-0.011-0.973l0.001 0.048c0.018-0.419 0.029-0.911 0.029-1.405 0-5.576-1.323-10.844-3.672-15.505l0.090 0.198zM286.843 486.953c-5.968 3.896-13.274 6.214-21.121 6.214-0.819 0-1.632-0.025-2.439-0.075l0.111 0.005h-4.536c-0.097 0.006-0.211 0.010-0.326 0.010-3.054 0-5.53-2.476-5.53-5.53 0-0.555 0.082-1.090 0.234-1.595l-0.010 0.039 5.581-24.095c1.059-3.998 4.592-6.917 8.824-7.035l0.013-0h6.083c0.551-0.036 1.194-0.057 1.843-0.057 5.24 0 10.163 1.357 14.436 3.739l-0.151-0.077c3.264 2.242 5.377 5.955 5.377 10.161 0 0.313-0.012 0.622-0.035 0.929l0.002-0.041c0.019 0.324 0.029 0.703 0.029 1.085 0 6.701-3.282 12.635-8.326 16.283l-0.059 0.040z","M855.511 440.187l-1.157 0.348-1.556 0.215-1.905-0.297-0.973-0.942-0.451-1.485v-10.486h6.195v-2.55h-6.195v-5.12h-3.072v5.12h-2.048v2.55h2.048v9.605l1.434 4.751 4.219 1.516 1.772-0.154 1.874-0.369v-2.714z","M884.265 426.271l-4.434-1.823-3.267 0.666-3.318 2.243-1.935-2.15-3.133-0.748-3.011 0.666-2.847 1.833v-2.048h-3.011v18.033h3v-13.394l2.56-1.567 2.509-0.625 2.048 0.369 1.024 1.024 0.451 1.731 0.154 2.232v10.301h3.011v-11.52l-0.051-0.963-0.051-0.881 2.57-1.638 2.54-0.635 1.987 0.369 1.085 1.024 0.379 1.741 0.205 2.202v10.301h3.072v-11.684z","M416.256 466.094c-8.408-3.833-18.236-6.067-28.586-6.067-1.605 0-3.197 0.054-4.775 0.159l0.214-0.011c-7.923 0.004-15.695 0.637-23.272 1.851l0.836-0.11c-5.55 0.85-6.093 1.024-9.513 1.751-4.18 1.011-7.375 4.336-8.181 8.513l-0.011 0.068-2.273 9.329c-1.28 5.96 2.15 5.724 3.584 5.222 2.937-1.116 6.643-2.238 10.436-3.136l0.654-0.131c5.182-1.343 11.163-2.183 17.317-2.323l0.091-0.002c0.647-0.033 1.405-0.051 2.167-0.051 5.265 0 10.322 0.889 15.030 2.524l-0.321-0.097c3.296 1.227 5.602 4.346 5.602 8.004 0 0.149-0.004 0.297-0.011 0.444l0.001-0.021-0.328 2.621-2.673 1.649c-10.527 0.666-18.125 1.638-27.351 2.97-8.75 1.111-16.7 3.386-24.091 6.687l0.539-0.215c-6.54 2.702-11.949 7.025-15.89 12.478l-0.074 0.107c-3.337 5.198-5.32 11.542-5.32 18.35 0 0.367 0.006 0.734 0.017 1.098l-0.001-0.053c-0.005 0.181-0.008 0.394-0.008 0.607 0 6.737 2.907 12.795 7.536 16.988l0.019 0.017c4.905 4.168 11.311 6.704 18.309 6.704 0.436 0 0.869-0.010 1.3-0.029l-0.061 0.002c0.268 0.005 0.585 0.008 0.902 0.008 3.803 0 7.512-0.398 11.089-1.155l-0.348 0.062 8.98-3.072 7.608-4.219 6.994-4.618 0.092 0.133-0.707 2.97v0.123c-0.121 0.431-0.19 0.925-0.19 1.436 0 2.917 2.263 5.305 5.129 5.506l0.017 0.001 0.072 0.082h17.224l0.246-0.113c3.849-0.523 6.941-3.264 7.971-6.875l0.017-0.068 13.517-58.532 0.707-4.772 0.328-4.475c0.014-0.28 0.022-0.608 0.022-0.937 0-7.524-4.246-14.056-10.473-17.331l-0.107-0.051zM386.355 531.896l-2.888 3.809-7.291 3.768c-2.858 1.242-6.183 1.99-9.675 2.048l-0.022 0c-0.351 0.020-0.762 0.031-1.176 0.031-3.409 0-6.639-0.767-9.527-2.137l0.135 0.058-3.584-6.953c-0.014-0.23-0.021-0.5-0.021-0.771 0-3.119 1.027-5.998 2.761-8.318l-0.026 0.036 7.864-5.345c3.489-1.182 7.621-2.146 11.878-2.716l0.349-0.038c4.239-0.522 12.616-1.485 13.711-1.516l1.28 2.253c-0.256 1.362-2.632 11.305-3.768 15.79z","M753.101 466.166c-8.422-3.837-18.265-6.073-28.63-6.073-1.585 0-3.159 0.052-4.718 0.155l0.212-0.011c-0.019-0-0.042-0-0.065-0-7.895 0-15.639 0.648-23.181 1.894l0.82-0.112c-5.56 0.809-6.144 1.024-9.554 1.72-4.161 1.026-7.335 4.353-8.12 8.524l-0.011 0.067-2.273 9.318c-1.27 5.96 2.048 5.683 3.645 5.222 2.821-1.065 6.493-2.192 10.241-3.127l0.757-0.16c5.17-1.315 11.148-2.153 17.294-2.322l0.114-0.002c0.638-0.032 1.386-0.050 2.138-0.050 5.261 0 10.314 0.892 15.016 2.533l-0.32-0.097c3.295 1.22 5.602 4.336 5.602 7.99 0 0.15-0.004 0.3-0.012 0.448l0.001-0.021-0.287 2.611-2.652 1.69c-10.629 0.635-18.248 1.608-27.382 2.949-8.75 1.112-16.7 3.386-24.091 6.687l0.539-0.215c-6.544 2.709-11.953 7.042-15.89 12.507l-0.074 0.108c-3.35 5.165-5.341 11.48-5.341 18.26 0 0.37 0.006 0.739 0.018 1.106l-0.001-0.054c-0.007 0.212-0.011 0.462-0.011 0.712 0 6.723 2.927 12.762 7.577 16.912l0.022 0.019c4.915 4.19 11.341 6.739 18.361 6.739 0.385 0 0.768-0.008 1.149-0.023l-0.055 0.002c0.298 0.006 0.65 0.010 1.002 0.010 3.765 0 7.435-0.403 10.971-1.167l-0.34 0.062 8.96-3.072 7.67-4.219 6.943-4.669 0.123 0.154-0.635 3-0.072 0.051v0.051c-0.138 0.456-0.218 0.98-0.218 1.523 0 2.898 2.271 5.265 5.13 5.419l0.014 0.001v0.072h17.203l0.287-0.092c3.831-0.543 6.894-3.307 7.87-6.927l0.015-0.066 13.558-58.45 0.717-4.792 0.389-4.485c0.017-0.303 0.026-0.657 0.026-1.013 0-7.467-4.189-13.956-10.346-17.245l-0.105-0.051zM723.261 531.968l-3.011 3.85-7.229 3.738c-2.846 1.23-6.155 1.976-9.629 2.048l-0.027 0c-0.385 0.024-0.834 0.038-1.286 0.038-3.365 0-6.55-0.77-9.39-2.143l0.129 0.056-3.625-6.932c-0.011-0.207-0.017-0.449-0.017-0.693 0-3.142 1-6.050 2.699-8.423l-0.030 0.044c2.112-2.376 4.785-4.208 7.814-5.294l0.133-0.041c3.479-1.171 7.603-2.132 11.851-2.705l0.355-0.039c4.219-0.522 12.564-1.516 13.64-1.526l1.311 2.253c-0.184 1.362-2.57 11.264-3.676 15.78z","M663.624 450.284c-2.437-4.547-5.911-8.254-10.121-10.897l-0.119-0.070c-4.631-2.833-10.055-4.905-15.85-5.881l-0.267-0.037c-6.246-1.084-13.438-1.704-20.776-1.704-0.364 0-0.728 0.002-1.091 0.005l0.056-0h-38.779c-4.225 0.199-7.724 3.090-8.831 6.987l-0.016 0.068-26.051 113.562c-0.141 0.463-0.221 0.994-0.221 1.545 0 3.037 2.462 5.499 5.499 5.499 0.11 0 0.22-0.003 0.329-0.010l-0.015 0.001h18.575c4.249-0.156 7.783-3.047 8.902-6.957l0.017-0.068 6.277-27.566c1.133-3.982 4.667-6.877 8.902-7.034l0.017-0.001h5.304c1.538 0.096 3.335 0.15 5.144 0.15 17.771 0 34.315-5.25 48.167-14.284l-0.34 0.208c11.46-8.033 18.859-21.181 18.859-36.057 0-0.284-0.003-0.567-0.008-0.849l0.001 0.042c0.008-0.288 0.013-0.627 0.013-0.966 0-5.704-1.32-11.099-3.671-15.897l0.094 0.213zM623.626 487.414c-5.991 3.855-13.306 6.146-21.157 6.146-0.789 0-1.572-0.023-2.349-0.069l0.107 0.005h-4.618c-0.101 0.007-0.218 0.010-0.337 0.010-3.065 0-5.55-2.485-5.55-5.55 0-0.543 0.078-1.069 0.224-1.565l-0.010 0.039 5.622-24.054c1.074-3.997 4.609-6.912 8.844-7.035l0.014-0h6.011c0.534-0.034 1.157-0.053 1.785-0.053 5.257 0 10.199 1.351 14.497 3.726l-0.155-0.078c3.286 2.255 5.414 5.991 5.414 10.223 0 0.29-0.010 0.579-0.030 0.864l0.002-0.039c0.016 0.298 0.024 0.646 0.024 0.997 0 6.723-3.259 12.685-8.283 16.392l-0.056 0.039z","M822.651 439.685c0.145-0.466 0.229-1.003 0.229-1.558 0-2.997-2.43-5.427-5.427-5.427-0.127 0-0.253 0.004-0.379 0.013l0.017-0.001h-16.609c-3.571 0.259-6.568 2.476-7.943 5.572l-0.024 0.060-0.922 1.434-0.84 3.676-23.224 105.544-0.758 3.246v0.082c-0.113 0.407-0.179 0.875-0.179 1.358 0 2.755 2.121 5.015 4.819 5.235l0.019 0.001 0.287 0.389h17.244c3.601-0.268 6.617-2.523 7.974-5.663l0.023-0.061 0.891-1.352 24.852-112.538z","M542.29 461.588c-4.393 0.051-22.231 0-22.231 0-4.888 0.537-9.063 3.194-11.637 7.018l-0.036 0.057s-26.552 45.578-29.133 50.176h-3.072l-8.315-49.859c-1.314-4.245-5.204-7.275-9.801-7.275-0.107 0-0.215 0.002-0.321 0.005l0.016-0h-16.609c-0.093-0.006-0.203-0.009-0.312-0.009-3.026 0-5.478 2.453-5.478 5.478 0 0.573 0.088 1.126 0.251 1.645l-0.011-0.039s12.616 71.793 15.145 88.689c1.178 9.318-0.154 10.977-0.154 10.977l-16.384 28.611c-2.427 3.891-1.116 7.066 2.867 7.066h19.21c4.879-0.486 9.045-3.166 11.545-7.025l0.037-0.061 73.882-124.928s7.148-10.67 0.543-10.527z"],"attrs":[{},{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 17"]},"attrs":[{},{},{},{},{},{},{},{},{}],"properties":{"order":48,"id":1,"name":"paypal","prevSize":32,"code":59664},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M810.045 270.52l-46.305-46.305c-14.299-14.301-34.054-23.147-55.875-23.147s-41.576 8.846-55.874 23.147l-435.067 435.036-15.677 141.015c-0.116 0.983-0.182 2.122-0.182 3.277 0 16.344 13.231 29.598 29.567 29.634l0.003 0c1.169-0 2.323-0.067 3.457-0.197l-0.139 0.013 140.923-15.565 435.159-435.118c14.301-14.299 23.147-34.054 23.147-55.875s-8.846-41.576-23.147-55.874l-0-0zM347.668 760.822l-83.436 9.216 9.298-83.599 323.789-323.789 74.25 74.25-323.901 323.922zM768.133 340.326l-54.671 54.671-74.24-74.25 54.671-54.671c3.572-3.576 8.509-5.789 13.962-5.789s10.39 2.212 13.962 5.789l0 0 46.305 46.305c3.576 3.578 5.787 8.519 5.787 13.978 0 5.453-2.207 10.391-5.777 13.968l0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 5"]},"attrs":[{}],"properties":{"order":37,"id":13,"name":"pencil","prevSize":32,"code":59652},"setIdx":0,"setId":1,"iconIdx":16},{"icon":{"paths":["M996.494 508.315v0c-0.002-14.72-5.618-29.44-16.85-40.671s-25.951-16.848-40.671-16.85l-373.139-0.007 0.029-373.103c-0.002-14.72-5.618-29.44-16.85-40.671s-25.951-16.848-40.671-16.85l0 0c-14.72 0.002-29.44 5.618-40.671 16.85s-16.848 25.951-16.85 40.671l-0.029 373.102h-373.132c-14.72 0.002-29.44 5.618-40.671 16.85s-16.848 25.951-16.85 40.671l0-0c0.002 14.72 5.618 29.44 16.85 40.671s25.951 16.848 40.671 16.85l373.124 0.007 0 373.132c0.002 14.72 5.618 29.44 16.85 40.671s25.951 16.848 40.671 16.85l-0-0c14.72-0.002 29.44-5.618 40.671-16.85s16.848-25.951 16.85-40.671l0.014-373.131 373.103 0.029c14.73 0.005 29.462-5.611 40.7-16.85s16.855-25.97 16.85-40.699l-0-0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 24"]},"attrs":[{}],"properties":{"order":56,"id":24,"name":"plus","prevSize":32,"code":59672},"setIdx":0,"setId":1,"iconIdx":17},{"icon":{"paths":["M477.696 51.884c-46.966 3.894-108.708 18.388-139.364 32.717-2.87 1.341-5.512 2.44-5.873 2.44-1.848 0-32.842 15.030-45.284 21.96-87.7 48.85-162.184 131.443-198.595 220.216-1.848 4.506-4.303 10.348-5.455 12.984-42.673 97.592-42.048 244.004 1.467 342.971 1.91 4.344 3.471 8.182 3.471 8.53 0 3.453 22.42 46.653 32.714 63.035 74.647 118.787 196.47 195.85 337.902 213.757 19.978 2.532 86.666 2.529 106.652 0 66.422-8.41 124.101-28.078 184.092-62.776 57.403-33.198 115.994-90.721 153.784-150.981 10.322-16.456 32.727-59.612 32.727-63.035 0-0.348 1.551-4.165 3.448-8.479 35.809-81.482 43.602-196.764 19.461-287.91-8.901-33.603-26.56-79.411-38.492-99.84-0.658-1.126-3.026-5.504-5.258-9.728-33.971-64.233-95.821-128.852-161.943-169.196-18.598-11.346-58.056-31.508-61.665-31.508-0.364 0-2.611-0.942-4.992-2.097-47.683-23.081-144.417-38.397-208.799-33.060zM560.125 136.215c248.678 33.341 396.89 289.851 301.394 521.623-83.336 202.266-324.324 291.169-520.527 192.031-250.586-126.618-280.284-472.868-55.048-641.782 76.938-57.7 179.456-84.572 274.181-71.872z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (2)"]},"attrs":[{}],"properties":{"order":62,"id":32,"name":"radio","prevSize":32,"code":59669},"setIdx":0,"setId":1,"iconIdx":18},{"icon":{"paths":["M478.208 51.866c-44.772 4.227-78.948 11.208-114.688 23.432-322.975 110.474-418.87 522.662-177.498 762.952 89.052 88.653 199.373 134.006 325.978 134.006 106.342 0 200.727-31.826 282.112-95.124 262.559-204.206 230.797-607.872-60.588-769.981-73.106-40.673-175.409-62.822-255.316-55.283zM531.144 277.565c165.732 13.727 264.937 189.847 191.209 339.451-84.147 170.737-329.439 173.404-418.504 4.552-86.154-163.338 43.284-359.242 227.295-344.003z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (3)"]},"attrs":[{}],"properties":{"order":63,"id":33,"name":"radioSelect","prevSize":32,"code":59668},"setIdx":0,"setId":1,"iconIdx":19},{"icon":{"paths":["M874.865 485.622c-17.235 0.334-31.223 13.788-32.404 30.77l-0.006 0.104c-11.039 136.745-95.365 254.075-215.9 300.36-32.891 12.862-70.971 20.316-110.793 20.316-92.944 0-176.403-40.607-233.605-105.048l-0.28-0.322h90.051c18.377-1.333 32.78-16.569 32.78-35.169s-14.404-33.836-32.666-35.163l-0.115-0.007h-131.246c-36.544 1.351-65.656 31.302-65.656 68.052 0 0.804 0.014 1.605 0.042 2.402l-0.003-0.116v140.677c-0.012 0.34-0.019 0.739-0.019 1.14 0 18.361 14.533 33.327 32.724 34.023l0.063 0.002c18.254-0.698 32.787-15.664 32.787-34.025 0-0.401-0.007-0.8-0.021-1.197l0.002 0.058v-85.74c108.298 114.289 268.37 151.378 411.034 95.232s242.34-195.42 256-357.673c0.097-1.007 0.153-2.178 0.153-3.361 0-9.057-3.25-17.355-8.648-23.792l0.047 0.057c-5.851-7.009-14.554-11.469-24.301-11.581l-0.019-0z","M816.148 116.357c-18.254 0.698-32.787 15.664-32.787 34.025 0 0.401 0.007 0.8 0.021 1.197l-0.002-0.058v85.74c-108.339-114.278-268.401-151.378-411.064-95.242s-242.35 195.42-255.969 357.673c-0.097 1.007-0.153 2.178-0.153 3.361 0 9.057 3.25 17.355 8.648 23.792l-0.047-0.057c5.858 7.023 14.578 11.489 24.343 11.592l0.017 0c17.235-0.334 31.223-13.788 32.404-30.77l0.006-0.104c11.039-136.755 95.365-254.034 215.9-300.37 32.895-12.866 70.981-20.322 110.808-20.322 92.947 0 176.408 40.609 233.61 105.054l0.281 0.322h-90.051c-18.254 0.698-32.787 15.664-32.787 34.025 0 0.401 0.007 0.8 0.021 1.197l-0.002-0.058c-0.012 0.34-0.019 0.739-0.019 1.14 0 18.361 14.533 33.327 32.724 34.023l0.063 0.002h131.226c36.544-1.351 65.656-31.302 65.656-68.052 0-0.804-0.014-1.605-0.042-2.402l0.003 0.116v-140.657c0.012-0.339 0.019-0.738 0.019-1.138 0-18.375-14.556-33.351-32.767-34.024l-0.061-0.002z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 8"]},"attrs":[{},{}],"properties":{"order":39,"id":10,"name":"refresh","prevSize":32,"code":59655},"setIdx":0,"setId":1,"iconIdx":20},{"icon":{"paths":["M453.932 60.16c-8.187 4.513-7.918 2.97-8.492 48.704-0.594 47.345 0.466 43.451-12.429 45.658-111.071 19-216.776 94.211-275.031 195.686-117.496 204.659-36.636 466.545 175.332 567.846 238.551 114.007 519.767-25.321 572.966-283.876 6.513-31.647 10.132-77.734 7.204-91.684-9.513-45.286-71.954-52.495-91.85-10.604l-3.666 7.724-1.362 23.311c-9.047 154.934-112.415 269.978-264.668 294.566-109.632 17.705-231.009-35.32-295.171-128.95-120.020-175.142-35.469-411.779 168.43-471.401 7.565-2.212 15.099-4.18 16.742-4.372l2.99-0.353 0.512 35.328c0.568 39.163 0.699 39.944 7.473 44.073 6.881 4.196 15.923 2.255 24.891-5.34 2.877-2.437 8.177-6.822 11.776-9.746 109.885-89.252 129.152-105.462 132.076-111.122 6.2-12.014 1.994-20.457-18.519-37.169-8.73-7.112-21.402-17.462-28.16-22.999-67.709-55.491-103.936-84.726-106.307-85.793-4.050-1.823-10.936-1.582-14.738 0.512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (1)"]},"attrs":[{}],"properties":{"order":61,"id":31,"name":"reload","prevSize":32,"code":59670},"setIdx":0,"setId":1,"iconIdx":21},{"icon":{"paths":["M517.007 358.4c-84.831 0-153.6 68.769-153.6 153.6s68.769 153.6 153.6 153.6c84.831 0 153.6-68.769 153.6-153.6v0c0-84.831-68.769-153.6-153.6-153.6v0zM517.007 588.8c-42.415 0-76.8-34.385-76.8-76.8s34.385-76.8 76.8-76.8c42.415 0 76.8 34.385 76.8 76.8v0c0 42.415-34.385 76.8-76.8 76.8v0z","M873.902 584.96l-17.050-9.83c3.662-18.993 5.757-40.837 5.757-63.171s-2.095-44.177-6.1-65.346l0.342 2.175 17.050-9.83c34.714-20.296 57.664-57.388 57.664-99.84 0-63.659-51.605-115.264-115.264-115.264-21.206 0-41.075 5.727-58.145 15.719l0.545-0.295-17.091 9.871c-30.957-26.578-67.287-47.983-107.002-62.301l-2.403-0.757v-19.692c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2v0 19.702c-42.107 15.123-78.421 36.574-109.817 63.583l0.454-0.381-17.162-9.943c-16.525-9.697-36.394-15.424-57.6-15.424-63.659 0-115.264 51.605-115.264 115.264 0 42.452 22.95 79.544 57.119 99.545l0.545 0.295 17.050 9.83c-3.662 18.993-5.757 40.837-5.757 63.171s2.095 44.177 6.1 65.346l-0.342-2.175-17.050 9.83c-34.714 20.296-57.664 57.388-57.664 99.84 0 63.659 51.605 115.264 115.264 115.264 21.206 0 41.075-5.727 58.145-15.719l-0.545 0.295 17.091-9.871c30.968 26.582 67.312 47.987 107.042 62.302l2.403 0.756v19.692c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2v0-19.702c42.107-15.126 78.422-36.58 109.816-63.592l-0.453 0.381 17.162 9.912c16.525 9.697 36.394 15.424 57.6 15.424 63.659 0 115.264-51.605 115.264-115.264 0-42.452-22.95-79.544-57.119-99.545l-0.545-0.295zM776.059 439.962c6.193 21.586 9.754 46.378 9.754 72.003s-3.561 50.417-10.215 73.91l0.462-1.907c-0.884 3.072-1.393 6.601-1.393 10.248 0 14.143 7.646 26.5 19.029 33.163l0.181 0.098 41.626 24.044c11.571 6.765 19.221 19.129 19.221 33.28 0 21.22-17.202 38.421-38.421 38.421-7.069 0-13.692-1.909-19.382-5.24l0.182 0.098-41.708-24.115c-5.518-3.25-12.156-5.169-19.242-5.169-10.733 0-20.437 4.403-27.405 11.502l-0.006 0.006c-33.26 33.933-75.398 59.044-122.657 71.575l-1.871 0.422c-16.712 4.403-28.836 19.381-28.836 37.19 0 0.008 0 0.016 0 0.024l-0-0.001v48.128c0 21.208-17.192 38.4-38.4 38.4s-38.4-17.192-38.4-38.4v0-48.118c0-0.007 0-0.014 0-0.022 0-17.809-12.124-32.787-28.568-37.13l-0.268-0.060c-49.127-13.005-91.251-38.166-124.439-72.101l-0.048-0.050c-6.974-7.104-16.678-11.508-27.411-11.508-7.086 0-13.725 1.92-19.423 5.267l0.18-0.098-41.626 24.074c-5.508 3.232-12.131 5.141-19.2 5.141-21.22 0-38.421-17.202-38.421-38.421 0-14.151 7.65-26.515 19.040-33.182l0.182-0.098 41.626-24.033c11.565-6.762 19.21-19.119 19.21-33.261 0-3.647-0.509-7.176-1.459-10.519l0.066 0.271c-6.193-21.586-9.754-46.378-9.754-72.003s3.561-50.417 10.215-73.91l-0.462 1.907c0.858-3.027 1.351-6.504 1.351-10.095 0-14.142-7.645-26.499-19.028-33.163l-0.181-0.098-41.636-23.972c-11.571-6.765-19.221-19.129-19.221-33.28 0-21.22 17.202-38.421 38.421-38.421 7.069 0 13.692 1.909 19.382 5.24l-0.182-0.098 41.697 24.115c5.541 3.284 12.213 5.225 19.338 5.225 10.664 0 20.313-4.347 27.271-11.366l0.003-0.003c33.26-33.933 75.398-59.044 122.657-71.575l1.871-0.422c16.712-4.403 28.836-19.381 28.836-37.19 0-0.062-0-0.124-0-0.185l0 0.010v-48.108c0-21.208 17.192-38.4 38.4-38.4s38.4 17.192 38.4 38.4v0 48.077c-0 0.007-0 0.014-0 0.022 0 17.809 12.124 32.787 28.568 37.13l0.268 0.060c49.151 12.995 91.297 38.157 124.502 72.102l0.048 0.049c6.974 7.104 16.678 11.508 27.411 11.508 7.086 0 13.725-1.92 19.423-5.267l-0.18 0.098 41.626-24.074c5.508-3.232 12.131-5.141 19.2-5.141 21.22 0 38.421 17.202 38.421 38.421 0 14.151-7.65 26.515-19.040 33.182l-0.182 0.098-41.626 24.033c-11.525 6.771-19.139 19.106-19.139 33.22 0 3.607 0.497 7.097 1.427 10.407l-0.065-0.27z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 14"]},"attrs":[{},{}],"properties":{"order":45,"id":4,"name":"setting","prevSize":32,"code":59661},"setIdx":0,"setId":1,"iconIdx":22},{"icon":{"paths":["M512 344.433c-92.545 0-167.567 75.022-167.567 167.567s75.022 167.567 167.567 167.567c92.545 0 167.567-75.022 167.567-167.567v0c0-0.015 0-0.033 0-0.051 0-92.517-75-167.516-167.516-167.516-0.018 0-0.036 0-0.054 0l0.003-0zM886.508 470.108c-20.137-174.999-157.617-312.478-330.87-332.452l-1.745-0.164v-86.292h-83.784v86.292c-175.010 20.115-312.501 157.606-332.452 330.872l-0.163 1.744h-86.292v83.784h86.292c20.137 174.999 157.617 312.478 330.87 332.452l1.745 0.164v86.292h83.784v-86.292c174.999-20.137 312.478-157.617 332.452-330.87l0.164-1.745h86.292v-83.784zM512 805.233c-161.948 0-293.233-131.285-293.233-293.233s131.285-293.233 293.233-293.233c161.948 0 293.233 131.285 293.233 293.233v0c-0.035 161.934-131.299 293.198-293.229 293.233l-0.003 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 19"]},"attrs":[{}],"properties":{"order":51,"id":29,"name":"target","prevSize":32,"code":59667},"setIdx":0,"setId":1,"iconIdx":23},{"icon":{"paths":["M828.211 227.85h-110.060c-17.219-81.592-88.567-141.969-174.037-142.080l-0.012-0h-71.035c-85.495 0.096-156.859 60.478-173.874 140.918l-0.206 1.162h-110.070c-0.179-0.003-0.391-0.005-0.603-0.005-19.619 0-35.523 15.904-35.523 35.523s15.904 35.523 35.523 35.523c0.212 0 0.424-0.002 0.635-0.006l-0.032 0h35.512v461.701c0.093 98.058 79.548 177.527 177.592 177.644l213.126 0c98.050-0.122 177.499-79.589 177.592-177.635l0-0.009v-461.701h35.471c19.357-0.339 34.919-16.111 34.919-35.517s-15.562-35.178-34.888-35.517l-0.032-0zM473.068 156.805h71.035c46.105 0.057 85.358 29.328 100.249 70.292l0.236 0.743h-272.005c15.127-41.707 54.38-70.977 100.478-71.035l0.007-0zM721.715 760.586c0 0.015 0 0.033 0 0.051 0 58.85-47.707 106.557-106.557 106.557-0.004 0-0.007-0-0.011-0l-213.114 0c-58.85 0-106.557-47.707-106.557-106.557 0-0.018 0-0.036 0-0.054l-0 0.003v-461.701h426.24z","M437.555 725.115c19.619 0 35.523-15.904 35.523-35.523v0-213.105c-0.339-19.357-16.111-34.919-35.517-34.919s-35.178 15.562-35.517 34.888l-0 0.032v213.115c0.006 19.611 15.902 35.506 35.512 35.512l0.001 0z","M579.625 725.115c19.619 0 35.523-15.904 35.523-35.523v0-213.105c0.003-0.179 0.005-0.391 0.005-0.603 0-19.619-15.904-35.523-35.523-35.523s-35.523 15.904-35.523 35.523c0 0.212 0.002 0.424 0.006 0.635l-0-0.032v213.115c0.006 19.611 15.902 35.506 35.512 35.512l0.001 0z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 4"]},"attrs":[{},{},{}],"properties":{"order":36,"id":14,"name":"trash","prevSize":32,"code":59651},"setIdx":0,"setId":1,"iconIdx":24},{"icon":{"paths":["M423.148 398.182c-2.119-0.878-4.58-1.387-7.16-1.387-8.029 0-14.905 4.936-17.759 11.939l-0.046 0.128-71.997 179.937h-6.144v-172.8c-0.006-10.602-8.598-19.194-19.199-19.2l-76.801-0c-10.604 0-19.2 8.596-19.2 19.2s8.596 19.2 19.2 19.2v0h57.6v172.8c0.006 10.602 8.598 19.194 19.199 19.2l38.401 0c8.029-0.006 14.905-4.937 17.771-11.935l0.046-0.128 76.8-192c0.873-2.114 1.38-4.568 1.38-7.14 0-8.038-4.947-14.92-11.962-17.768l-0.128-0.046z","M496.527 397.179c-1.069-0.208-2.298-0.328-3.555-0.328-9.302 0-17.079 6.527-19 15.251l-0.024 0.129-38.4 192c-0.235 1.126-0.369 2.421-0.369 3.746 0 9.281 6.586 17.025 15.339 18.812l0.124 0.021c1.114 0.241 2.393 0.379 3.705 0.379 0.033 0 0.066-0 0.1-0l-0.005 0c9.238-0.014 16.945-6.554 18.758-15.256l0.022-0.125 38.4-192c0.241-1.141 0.379-2.452 0.379-3.796 0-9.285-6.591-17.031-15.349-18.814l-0.123-0.021z","M651.162 400.906c-3.072-0.84-76.995-18.975-105.472 27.269-6.061 8.825-9.68 19.739-9.68 31.498 0 4.393 0.505 8.668 1.46 12.769l-0.074-0.379c6.717 27.648 35.369 44.698 49.152 52.91 22.118 13.138 33.792 26.419 31.375 35.441-2.827 9.948-9.393 18.029-18.044 22.789l-0.194 0.098c-14.397 7.68-35.942 6.994-62.249-1.925-1.844-0.648-3.971-1.022-6.185-1.022-10.617 0-19.224 8.607-19.224 19.224 0 8.403 5.391 15.547 12.904 18.161l0.135 0.041c14.968 5.57 32.258 8.958 50.289 9.326l0.163 0.003c0.488 0.010 1.063 0.015 1.64 0.015 14.836 0 28.815-3.669 41.080-10.148l-0.48 0.231c18.109-9.843 31.541-26.357 37.115-46.161l0.128-0.533c5.263-19.456 1.116-48.845-48.804-78.531-8.489-5.069-28.529-17.009-31.447-29.030-0.186-0.975-0.292-2.097-0.292-3.244 0-4.309 1.5-8.268 4.006-11.384l-0.027 0.035c11.264-18.432 50.493-13.435 63.365-10.24 1.412 0.372 3.034 0.586 4.705 0.586 10.599 0 19.192-8.592 19.192-19.192 0-8.928-6.096-16.432-14.353-18.577l-0.133-0.029z","M800 396.8h-38.441c-8.029 0.006-14.905 4.937-17.771 11.935l-0.046 0.128-76.8 192c-0.879 2.12-1.389 4.582-1.389 7.163 0 8.026 4.932 14.899 11.931 17.756l0.128 0.046c2.090 0.875 4.519 1.383 7.067 1.383 0.036 0 0.071-0 0.107-0l-0.006 0c8.029-0.006 14.905-4.937 17.771-11.935l0.046-0.128 71.997-179.937h6.144v172.8c0 10.604 8.596 19.2 19.2 19.2s19.2-8.596 19.2-19.2v0-192c0-0 0-0 0-0 0-10.584-8.56-19.169-19.135-19.21l-0.004-0z","M800 512h-76.8c-10.604 0-19.2 8.596-19.2 19.2s8.596 19.2 19.2 19.2v0h76.8c10.604 0 19.2-8.596 19.2-19.2s-8.596-19.2-19.2-19.2v0z","M838.4 204.8h-652.8c-74.194 0.082-134.318 60.206-134.4 134.392l-0 0.008v345.6c0.082 74.194 60.206 134.318 134.392 134.4l652.808 0c74.194-0.082 134.318-60.206 134.4-134.392l0-0.008v-345.6c-0.082-74.194-60.206-134.318-134.392-134.4l-0.008-0zM934.4 684.8c-0.064 52.994-43.006 95.936-95.994 96l-652.806 0c-52.994-0.064-95.936-43.006-96-95.994l-0-0.006v-345.6c0.064-52.994 43.006-95.936 95.994-96l652.806-0c52.994 0.064 95.936 43.006 96 95.994l0 0.006z"],"attrs":[{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 16"]},"attrs":[{},{},{},{},{},{}],"properties":{"order":47,"id":2,"name":"visa","prevSize":32,"code":59663},"setIdx":0,"setId":1,"iconIdx":25}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"autoHost":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"quickUsageToken":{"Enatega-SingleVendor":"YmFjMTZkYWQ3ZWUzYzE2MTYxNzQ1N2FjNjc4Y2NiZGQjMSMxNjIzMjYwNzE0IyMj"},"gridSize":16,"showGrid":false}}
\ No newline at end of file
diff --git a/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js
new file mode 100644
index 0000000..29c4079
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js
@@ -0,0 +1,81 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import { ICONS_NAME } from '../../../utils/constant'
+import { scale } from '../../../utils/scaling'
+import { CustomIcon } from '../../CustomIcon'
+import { FlashMessage } from '../../FlashMessage/FlashMessage'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyle from './styles'
+
+function CartComponent(props) {
+ const { colors } = useTheme()
+ const styles = useStyle()
+ const [quantity, setQuantity] = useState(1)
+
+ function onAdd() {
+ if (props.stock > quantity) setQuantity(quantity + 1)
+ else {
+ FlashMessage({
+ message: 'No more items in stock'
+ })
+ }
+ }
+ function onRemove() {
+ if (quantity === 1) return
+ setQuantity(quantity - 1)
+ }
+
+ return (
+
+
+
+
+
+
+ {quantity}
+
+
+
+
+
+
+ Add To Cart
+
+
+
+
+ )
+}
+CartComponent.propTypes = {
+ stock: PropTypes.number.isRequired,
+ onPress: PropTypes.func,
+ disabled: PropTypes.bool
+}
+
+export default CartComponent
diff --git a/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js
new file mode 100644
index 0000000..89cb714
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js
@@ -0,0 +1,55 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../../utils/scaling'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mainContainer: {
+ width: '100%',
+ height: height * 0.08,
+ backgroundColor: 'transparent',
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.MBlarge
+ },
+ subContainer: {
+ width: '90%',
+ height: '70%',
+ alignItems: 'center',
+ justifyContent: 'space-around',
+ flexDirection: 'row'
+ },
+ icon: {
+ width: '10%',
+ height: '90%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.white,
+ borderRadius: scale(12),
+ elevation: 3,
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1)
+ },
+ btnContainer: {
+ width: '50%',
+ height: '100%',
+ borderRadius: moderateScale(12),
+ backgroundColor: colors.horizontalLine,
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js b/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js
new file mode 100644
index 0000000..996a01e
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js
@@ -0,0 +1,67 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useContext, useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import ConfigurationContext from '../../../context/Configuration'
+import { alignment } from '../../../utils/alignment'
+import CheckboxBtn from '../../FdCheckbox/CheckboxBtn'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyle from './styles'
+
+function CheckComponent(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const [options, setOptions] = useState(
+ props.options.map(option => ({ ...option, checked: false }))
+ )
+ const configuration = useContext(ConfigurationContext)
+
+ function onPress(option) {
+ const tempOptions = options
+ const index = tempOptions.findIndex(opt => opt._id === option._id)
+ tempOptions[index].checked = !tempOptions[index].checked
+ setOptions(tempOptions)
+ props.onPress(option)
+ }
+ return (
+
+ {options.map(option => (
+
+
+
+
+ {option.title}
+
+
+
+ {`${configuration.currency_symbol} ${option.price}`}
+
+
+ ))}
+
+ )
+}
+CheckComponent.propTypes = {
+ options: PropTypes.arrayOf(PropTypes.object),
+ onPress: PropTypes.func
+}
+
+export default CheckComponent
diff --git a/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js
new file mode 100644
index 0000000..03c3f23
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js
@@ -0,0 +1,29 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mainContainer: {
+ width: '100%',
+ flexDirection: 'row',
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderBottomColor: colors.horizontalLine,
+ ...alignment.PBsmall,
+ ...alignment.MBsmall
+ },
+ leftContainer: {
+ flex: 1,
+ flexDirection: 'row',
+ alignItems: 'center'
+ },
+ rightContainer: {
+ justifyContent: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js
new file mode 100644
index 0000000..2e98f8c
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js
@@ -0,0 +1,46 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useContext } from 'react'
+import { View } from 'react-native'
+import ConfigurationContext from '../../../context/Configuration'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import styles from './styles'
+
+function HeadingComponent(props) {
+ const configuration = useContext(ConfigurationContext)
+ const { colors } = useTheme()
+
+ return (
+ <>
+
+
+
+ {props.title}
+
+
+
+ {`${configuration.currency_symbol} ${props.price}`}
+
+
+
+
+ {props.desc}
+
+
+ >
+ )
+}
+
+HeadingComponent.propTypes = {
+ title: PropTypes.string,
+ price: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
+ desc: PropTypes.string
+}
+export default HeadingComponent
diff --git a/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js
new file mode 100644
index 0000000..9e9873e
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js
@@ -0,0 +1,25 @@
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+const styles = StyleSheet.create({
+ topContainer: {
+ width: '100%',
+ flexDirection: 'row',
+ ...alignment.PTsmall,
+ ...alignment.PBxSmall
+ },
+ titleContainer: {
+ width: '70%',
+ ...alignment.PRxSmall,
+ justifyContent: 'center'
+ },
+ priceContainer: {
+ width: '30%',
+ justifyContent: 'center',
+ alignItems: 'flex-end'
+ },
+ descContainer: {
+ width: '100%',
+ ...alignment.MBsmall
+ }
+})
+export default styles
diff --git a/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js b/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js
new file mode 100644
index 0000000..7e5bd8f
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js
@@ -0,0 +1,18 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import { Image } from 'react-native'
+import { styles } from './styles'
+
+function ImageHeader(props) {
+ return (
+
+ )
+}
+ImageHeader.propTypes = {
+ image: PropTypes.string
+}
+export default ImageHeader
diff --git a/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js b/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js
new file mode 100644
index 0000000..5355075
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js
@@ -0,0 +1,14 @@
+import { Dimensions, StyleSheet } from 'react-native'
+import { moderateScale } from '../../../utils/scaling'
+const { height } = Dimensions.get('window')
+
+export const styles = StyleSheet.create({
+ backgroundImage: {
+ width: '100%',
+ borderTopLeftRadius: moderateScale(30),
+ borderTopRightRadius: moderateScale(30),
+ // borderTopEndRadius:moderateScale(20),
+ // borderTopStartRadius:moderateScale(20),
+ height: height * 0.22
+ }
+})
diff --git a/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js b/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js
new file mode 100644
index 0000000..0c4fdfa
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js
@@ -0,0 +1,70 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useContext, useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import ConfigurationContext from '../../../context/Configuration'
+import { alignment } from '../../../utils/alignment'
+import RadioButton from '../../FdRadioBtn/RadioBtn'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyle from './styles'
+
+function RadioComponent(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const [options] = useState(props.options)
+ const [selected, setSelected] = useState(props.selected || null)
+ const configuration = useContext(ConfigurationContext)
+
+ function onPress(option) {
+ setSelected(option)
+ props.onPress(option)
+ }
+ return (
+ <>
+ {options.map(option => {
+ const isChecked = selected._id === option._id
+ return (
+
+
+
+
+ {option.title}
+
+
+
+ {`${configuration.currency_symbol} ${option.price}`}
+
+
+ )
+ })}
+ >
+ )
+}
+
+RadioComponent.propTypes = {
+ selected: PropTypes.any,
+ options: PropTypes.arrayOf(PropTypes.object),
+ onPress: PropTypes.func
+}
+export default RadioComponent
diff --git a/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js
new file mode 100644
index 0000000..dbd3324
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js
@@ -0,0 +1,27 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ mainContainer: {
+ width: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderBottomColor: colors.horizontalLine,
+ ...alignment.PBsmall,
+ ...alignment.MBsmall
+ },
+ leftContainer: {
+ flex: 1,
+ flexDirection: 'row',
+ alignItems: 'center'
+ },
+ rightContainer: {
+ justifyContent: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js b/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js
new file mode 100644
index 0000000..5235b8a
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js
@@ -0,0 +1,46 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { View } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import styles from './styles'
+
+function TitleComponent(props) {
+ const { colors } = useTheme()
+
+ return (
+
+
+
+ {props.title}
+
+
+ {props.subTitle}
+
+
+
+ ({props.status})
+
+
+ )
+}
+TitleComponent.propTypes = {
+ title: PropTypes.string.isRequired,
+ subTitle: PropTypes.string,
+ error: PropTypes.bool,
+ status: PropTypes.string
+}
+
+export default TitleComponent
diff --git a/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js
new file mode 100644
index 0000000..d04a8b8
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js
@@ -0,0 +1,19 @@
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+
+const styles = StyleSheet.create({
+ mainContainer: {
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: 'flex-start',
+ ...alignment.MBmedium,
+ ...alignment.MTsmall
+ },
+ leftContainer: {
+ // width: '70%'
+ },
+ rightContainer: {
+ width: '30%'
+ }
+})
+export default styles
diff --git a/CustomerApp/src/components/CustomizeComponents/index.js b/CustomerApp/src/components/CustomizeComponents/index.js
new file mode 100644
index 0000000..30b2c56
--- /dev/null
+++ b/CustomerApp/src/components/CustomizeComponents/index.js
@@ -0,0 +1,15 @@
+import CartComponent from './CartComponent/CartComponent'
+import CheckComponent from './CheckComponent/CheckComponent'
+import HeadingComponent from './HeadingComponent/HeadingComponent'
+import ImageHeader from './ImageHeader/ImageHeader'
+import RadioComponent from './RadioComponent/RadioComponent'
+import TitleComponent from './TitleComponent/TitleComponent'
+
+export {
+ CartComponent,
+ CheckComponent,
+ HeadingComponent,
+ ImageHeader,
+ RadioComponent,
+ TitleComponent
+}
diff --git a/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js
new file mode 100644
index 0000000..57f1532
--- /dev/null
+++ b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js
@@ -0,0 +1,58 @@
+import { useNavigation } from '@react-navigation/native'
+import React, { useContext } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import UserContext from '../../../context/User'
+import { alignment } from '../../../utils/alignment'
+import { NAVIGATION_SCREEN } from '../../../utils/constant'
+import { TextDefault } from '../../Text'
+import useStyle from './styles'
+
+function DrawerProfile() {
+ const styles = useStyle()
+ const navigation = useNavigation()
+ const { isLoggedIn, loadingProfile, profile } = useContext(UserContext)
+
+ if (loadingProfile) return Loading...
+ return (
+
+ {!isLoggedIn && (
+
+ {
+ navigation.navigate(NAVIGATION_SCREEN.CreateAccount)
+ }}>
+
+ Login/Create Account
+
+
+
+ )}
+
+ {isLoggedIn && profile && (
+ <>
+
+
+ {profile.name.substr(0, 1).toUpperCase()}
+
+
+
+ Welcome
+
+
+ {profile.name}
+
+ >
+ )}
+
+
+ )
+}
+export default DrawerProfile
diff --git a/CustomerApp/src/components/Drawer/Profile/styles.js b/CustomerApp/src/components/Drawer/Profile/styles.js
new file mode 100644
index 0000000..fa91c28
--- /dev/null
+++ b/CustomerApp/src/components/Drawer/Profile/styles.js
@@ -0,0 +1,55 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { scale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ mainContainer: {
+ flex: 1,
+ backgroundColor: colors.headerBackground
+ },
+ logInContainer: {
+ width: '100%',
+ height: '100%',
+ justifyContent: 'flex-end',
+ ...alignment.PBlarge,
+ ...alignment.PLmedium
+ },
+ whiteFont: {
+ color: colors.fontWhite
+ },
+ loggedInContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ ...alignment.Plarge
+ },
+ imgContainer: {
+ width: scale(70),
+ height: scale(70),
+ borderRadius: scale(15),
+ borderStyle: 'dashed',
+ borderColor: colors.cardContainer,
+ borderWidth: 2,
+ justifyContent: 'center',
+ alignItems: 'center',
+ overflow: 'hidden',
+ backgroundColor: 'transparent',
+ padding: 2,
+ ...alignment.MBsmall
+ },
+ imgResponsive: {
+ width: '100%',
+ height: '100%',
+ borderRadius: scale(15)
+ },
+ loadingView: {
+ backgroundColor: 'transparent',
+ width: '100%',
+ height: '100%'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/Drawer/index.js b/CustomerApp/src/components/Drawer/index.js
new file mode 100644
index 0000000..2fff47b
--- /dev/null
+++ b/CustomerApp/src/components/Drawer/index.js
@@ -0,0 +1,3 @@
+import DrawerProfile from './Profile/DrawerProfile'
+
+export { DrawerProfile }
diff --git a/CustomerApp/src/components/EnategaImage/EnategaImage.js b/CustomerApp/src/components/EnategaImage/EnategaImage.js
new file mode 100644
index 0000000..59d3907
--- /dev/null
+++ b/CustomerApp/src/components/EnategaImage/EnategaImage.js
@@ -0,0 +1,59 @@
+/* eslint-disable react/prop-types */
+import React, { useState } from 'react'
+import { Image, Platform, View } from 'react-native'
+import { isObject } from 'validate.js'
+import Spinner from '../Spinner/Spinner'
+import useStyle from './styles'
+
+const iosPlacholder = require('../../assets/images/food_placeholder.png')
+const PLACEHOLDER = require('../../assets/images/imagePlaceholder.png')
+
+function EnategaImage({
+ imgSource,
+ imgStyle = null,
+ resizeMode = 'cover',
+ spinnerProps
+}) {
+ const styles = useStyle()
+ const [startImgLoading, setStartImgLoading] = useState(false)
+
+ const imageUrl = isObject(imgSource)
+ ? { ...imgSource, cache: 'force-cache' }
+ : imgSource || PLACEHOLDER
+ const style = imgStyle || styles.imgContainer
+
+ const androidImage = (
+ setStartImgLoading(true)}
+ onLoadEnd={() => setStartImgLoading(false)}
+ resizeMode={imgSource ? resizeMode : 'contain'}
+ />
+ )
+
+ const iosImage = (
+
+ )
+
+ return (
+
+ {startImgLoading && (
+
+ )}
+ {Platform.OS === 'ios' ? iosImage : androidImage}
+
+ )
+}
+
+export default React.memo(EnategaImage)
diff --git a/CustomerApp/src/components/EnategaImage/styles.js b/CustomerApp/src/components/EnategaImage/styles.js
new file mode 100644
index 0000000..a31b58b
--- /dev/null
+++ b/CustomerApp/src/components/EnategaImage/styles.js
@@ -0,0 +1,20 @@
+import { StyleSheet } from 'react-native'
+
+const useStyle = () => {
+ return StyleSheet.create({
+ imgContainer: {
+ width: 50,
+ height: 50,
+ borderRadius: 8,
+ overflow: 'hidden'
+ },
+ imgResponsive: {
+ flex: 1,
+ backgroundColor: 'white',
+ height: undefined,
+ width: undefined
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js b/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js
new file mode 100644
index 0000000..2e77fa1
--- /dev/null
+++ b/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js
@@ -0,0 +1,31 @@
+import { AntDesign } from '@expo/vector-icons'
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { TouchableOpacity } from 'react-native'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+function CheckboxBtn(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ return (
+
+ {props.checked ? (
+
+ ) : null}
+
+ )
+}
+CheckboxBtn.propTypes = {
+ onPress: PropTypes.func,
+ checked: PropTypes.bool
+}
+export default CheckboxBtn
diff --git a/CustomerApp/src/components/FdCheckbox/styles.js b/CustomerApp/src/components/FdCheckbox/styles.js
new file mode 100644
index 0000000..880532b
--- /dev/null
+++ b/CustomerApp/src/components/FdCheckbox/styles.js
@@ -0,0 +1,19 @@
+import { scale } from '../../utils/scaling'
+import { StyleSheet } from 'react-native'
+import { useTheme } from '@react-navigation/native'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ mainContainer: {
+ borderColor: colors.horizontalLine,
+ borderWidth: StyleSheet.hairlineWidth,
+ width: scale(20),
+ height: scale(20),
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/FdRadioBtn/RadioBtn.js b/CustomerApp/src/components/FdRadioBtn/RadioBtn.js
new file mode 100644
index 0000000..5d06f21
--- /dev/null
+++ b/CustomerApp/src/components/FdRadioBtn/RadioBtn.js
@@ -0,0 +1,50 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import styles from './styles'
+
+const DEFAULT_SIZE_MULTIPLIER = 0.7
+
+function RadioButton(props) {
+ const { colors } = useTheme()
+
+ const {
+ size = 16,
+ innerColor = colors.radioColor,
+ outerColor = colors.radioOuterColor,
+ isSelected = false,
+ onPress = () => null
+ } = props
+
+ const outerStyle = {
+ borderColor: isSelected ? outerColor : colors.fontSecondColor,
+ width: size + size * DEFAULT_SIZE_MULTIPLIER,
+ height: size + size * DEFAULT_SIZE_MULTIPLIER,
+ borderRadius: (size + size * DEFAULT_SIZE_MULTIPLIER) / 2,
+ borderWidth: isSelected ? size / 2 : 1
+ }
+
+ const innerStyle = {
+ width: size / 2,
+ height: size / 2,
+ borderRadius: size / 2,
+ backgroundColor: innerColor
+ }
+
+ return (
+
+ {isSelected ? : null}
+
+ )
+}
+
+RadioButton.propTypes = {
+ size: PropTypes.number,
+ innerColor: PropTypes.string,
+ outerColor: PropTypes.string,
+ isSelected: PropTypes.bool,
+ onPress: PropTypes.func
+}
+
+export default RadioButton
diff --git a/CustomerApp/src/components/FdRadioBtn/styles.js b/CustomerApp/src/components/FdRadioBtn/styles.js
new file mode 100644
index 0000000..8c46fa6
--- /dev/null
+++ b/CustomerApp/src/components/FdRadioBtn/styles.js
@@ -0,0 +1,7 @@
+export default {
+ radio: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ alignSelf: 'center'
+ }
+}
diff --git a/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js
new file mode 100644
index 0000000..1b36b0d
--- /dev/null
+++ b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js
@@ -0,0 +1,44 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { TouchableOpacity } from 'react-native'
+import Spinner from '../../../components/Spinner/Spinner'
+import TextDefault from '../../../components/Text/TextDefault/TextDefault'
+import { COLORS } from '../../../Theme'
+import { alignment } from '../../../utils/alignment'
+import { ICONS_NAME } from '../../../utils/constant'
+import { scale } from '../../../utils/scaling'
+import { CustomIcon } from '../../CustomIcon'
+import useStyle from './styles'
+
+const FdEmailBtn = props => {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ return (
+
+ {props.loadingIcon ? (
+
+ ) : (
+ <>
+
+
+ Signup using Email
+
+ >
+ )}
+
+ )
+}
+FdEmailBtn.propTypes = {
+ onPress: PropTypes.func,
+ loadingIcon: PropTypes.bool
+}
+export default FdEmailBtn
diff --git a/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js
new file mode 100644
index 0000000..c85197d
--- /dev/null
+++ b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js
@@ -0,0 +1,26 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale } from '../../../utils/scaling'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ mainContainer: {
+ width: '100%',
+ height: height * 0.07,
+ backgroundColor: colors.buttonBackgroundLight,
+ flexDirection: 'row',
+ alignItems: 'center',
+ borderRadius: moderateScale(20)
+ },
+ marginLeft5: {
+ ...alignment.Pmedium
+ },
+ marginLeft10: {
+ ...alignment.MLmedium
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js
new file mode 100644
index 0000000..6eb30f7
--- /dev/null
+++ b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js
@@ -0,0 +1,50 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { Image, TouchableOpacity } from 'react-native'
+import Spinner from '../../../components/Spinner/Spinner'
+import TextDefault from '../../../components/Text/TextDefault/TextDefault'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale } from '../../../utils/scaling'
+import useStyle from './styles'
+
+const FdGoogleBtn = props => {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ return (
+
+ {props.loadingIcon ? (
+
+ ) : (
+ <>
+
+
+ Signup with Google
+
+ >
+ )}
+
+ )
+}
+
+FdGoogleBtn.propTypes = {
+ onPress: PropTypes.func,
+ loadingIcon: PropTypes.bool,
+ onPressIn: PropTypes.func
+}
+export default FdGoogleBtn
diff --git a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js
new file mode 100644
index 0000000..c03c6ec
--- /dev/null
+++ b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js
@@ -0,0 +1,27 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale } from '../../../utils/scaling'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ mainContainer: {
+ width: '100%',
+ height: height * 0.07,
+ backgroundColor: colors.buttonBackgroundLight,
+ flexDirection: 'row',
+ alignItems: 'center',
+ borderRadius: moderateScale(20)
+ },
+ marginLeft5: {
+ ...alignment.Pmedium
+ },
+ marginLeft10: {
+ ...alignment.MLmedium
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/FdSocialBtn/index.js b/CustomerApp/src/components/FdSocialBtn/index.js
new file mode 100644
index 0000000..88ccc62
--- /dev/null
+++ b/CustomerApp/src/components/FdSocialBtn/index.js
@@ -0,0 +1,5 @@
+import FdEmailBtn from "./FdEmailBtn/FdEmailBtn";
+
+import FdGoogleBtn from "./FdGoogleBtn/FdGoogleBtn";
+
+export { FdEmailBtn, FdGoogleBtn };
diff --git a/CustomerApp/src/components/FdSwitch/SwitchBtn.js b/CustomerApp/src/components/FdSwitch/SwitchBtn.js
new file mode 100644
index 0000000..1d8b652
--- /dev/null
+++ b/CustomerApp/src/components/FdSwitch/SwitchBtn.js
@@ -0,0 +1,38 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { Switch, TouchableOpacity } from 'react-native'
+import useStyle from './styles'
+
+function SwitchBtn(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ return (
+
+
+
+ )
+}
+SwitchBtn.propTypes = {
+ onPress: PropTypes.func,
+ checked: PropTypes.bool,
+ isEnabled: PropTypes.bool
+}
+export default SwitchBtn
diff --git a/CustomerApp/src/components/FdSwitch/styles.js b/CustomerApp/src/components/FdSwitch/styles.js
new file mode 100644
index 0000000..2598068
--- /dev/null
+++ b/CustomerApp/src/components/FdSwitch/styles.js
@@ -0,0 +1,14 @@
+import { StyleSheet } from 'react-native'
+import { scale } from '../../utils/scaling'
+
+const useStyle = () => {
+ return StyleSheet.create({
+ mainContainer: {
+ width: scale(20),
+ height: scale(20),
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/FlashMessage/FlashMessage.js b/CustomerApp/src/components/FlashMessage/FlashMessage.js
new file mode 100644
index 0000000..dc4eb80
--- /dev/null
+++ b/CustomerApp/src/components/FlashMessage/FlashMessage.js
@@ -0,0 +1,20 @@
+import PropTypes from 'prop-types'
+import { showMessage } from 'react-native-flash-message'
+import { scale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+
+export const FlashMessage = props => {
+ showMessage({
+ backgroundColor: '#323232',
+ message: props.message,
+ type: 'info',
+ position: 'bottom',
+ titleStyle: {
+ fontSize: scale(12),
+ ...textStyles.Medium
+ }
+ })
+}
+FlashMessage.propTypes = {
+ message: PropTypes.string.isRequired
+}
diff --git a/CustomerApp/src/components/FlashMessage/styles.js b/CustomerApp/src/components/FlashMessage/styles.js
new file mode 100644
index 0000000..98f2621
--- /dev/null
+++ b/CustomerApp/src/components/FlashMessage/styles.js
@@ -0,0 +1,13 @@
+import { textStyles } from '../../utils/textStyles'
+import { alignment } from '../../utils/alignment'
+
+export default {
+ text: {
+ ...textStyles.Bold,
+ ...textStyles.H5,
+ ...alignment.PTxSmall
+ },
+ container: {
+ borderRadius: 50
+ }
+}
diff --git a/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js
new file mode 100644
index 0000000..aa53938
--- /dev/null
+++ b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js
@@ -0,0 +1,210 @@
+import {
+ CommonActions,
+ useNavigation,
+ useTheme
+} from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useCallback, useContext } from 'react'
+import { Pressable, View } from 'react-native'
+import UserContext from '../../../context/User'
+import { ICONS_NAME, NAVIGATION_SCREEN } from '../../../utils/constant'
+import { scale } from '../../../utils/scaling'
+import { CustomIcon } from '../../CustomIcon'
+import { FlashMessage } from '../../FlashMessage/FlashMessage'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyles from './styles'
+
+function HeaderIcon({ icon, iconColor, iconSize = scale(20) }) {
+ const { colors } = useTheme()
+ return (
+
+ )
+}
+
+function LeftButton(props) {
+ const { icon, outerView, iconColor } = props
+ const styles = useStyles()
+ const navigation = useNavigation()
+ const { colors } = useTheme()
+
+ switch (icon) {
+ case ICONS_NAME.Menu:
+ return (
+
+ [
+ {
+ opacity: pressed ? 0.7 : 1
+ }
+ ]}
+ onPress={() => navigation.toggleDrawer()}>
+
+
+
+ )
+ case ICONS_NAME.Back:
+ return (
+
+ [
+ {
+ opacity: pressed ? 0.7 : 1
+ }
+ ]}
+ onPress={() => navigation.goBack()}>
+
+
+
+ )
+ case ICONS_NAME.Cross:
+ return (
+
+ [
+ {
+ opacity: pressed ? 0.7 : 1
+ }
+ ]}
+ onPress={() =>
+ navigation.dispatch(state => {
+ const routes = state.routes.filter(r => r.name === 'Menu')
+ return CommonActions.reset({
+ ...state,
+ routes,
+ index: 0
+ })
+ })
+ }>
+
+
+
+ )
+ default:
+ return null
+ }
+}
+
+function RightButton(props) {
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const {
+ outerView,
+ onPress = () => null,
+ icon = null,
+ iconColor = colors.iconColor,
+ iconSize = scale(20)
+ } = props
+ const styles = useStyles()
+ const { cartCount } = useContext(UserContext)
+
+ const navigateCart = useCallback(() => {
+ if (cartCount > 0) {
+ navigation.navigate(NAVIGATION_SCREEN.Cart)
+ } else {
+ FlashMessage({
+ message: 'Cart is empty.'
+ })
+ }
+ }, [cartCount])
+
+ switch (icon) {
+ case ICONS_NAME.Cart:
+ return (
+
+ [
+ {
+ opacity: pressed ? 0.7 : 1
+ }
+ ]}
+ onPress={() => navigateCart()}>
+
+
+
+ {cartCount}
+
+
+
+
+ )
+ case ICONS_NAME.Filter:
+ case ICONS_NAME.Pencil:
+ case ICONS_NAME.Cross:
+ case ICONS_NAME.Plus:
+ return (
+
+ [
+ {
+ opacity: pressed ? 0.7 : 1
+ }
+ ]}
+ onPress={onPress}>
+
+
+
+ )
+ default:
+ return null
+ }
+}
+
+HeaderIcon.propTypes = {
+ outerView: PropTypes.object,
+ icon: PropTypes.string,
+ iconColor: PropTypes.string,
+ iconSize: PropTypes.number
+}
+LeftButton.propTypes = {
+ outerView: PropTypes.object,
+ icon: PropTypes.string,
+ iconColor: PropTypes.string
+}
+RightButton.propTypes = {
+ outerView: PropTypes.object,
+ icon: PropTypes.string,
+ iconColor: PropTypes.string,
+ iconSize: PropTypes.number,
+ onPress: PropTypes.func
+}
+
+export { HeaderIcon, LeftButton, RightButton }
diff --git a/CustomerApp/src/components/Header/HeaderIcons/styles.js b/CustomerApp/src/components/Header/HeaderIcons/styles.js
new file mode 100644
index 0000000..c946186
--- /dev/null
+++ b/CustomerApp/src/components/Header/HeaderIcons/styles.js
@@ -0,0 +1,74 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { scale, verticalScale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ leftIconPadding: {
+ ...alignment.PLsmall,
+ ...alignment.PRlarge
+ },
+ rightContainer: {
+ position: 'relative',
+ height: '100%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: 'transparent',
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+ imgContainer: {
+ width: verticalScale(20),
+ height: verticalScale(20)
+ },
+ absoluteContainer: {
+ width: verticalScale(10),
+ height: verticalScale(10),
+ backgroundColor: colors.cardContainer,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: verticalScale(5),
+ position: 'absolute',
+ right: scale(8),
+ top: scale(8)
+ },
+ touchAreaPassword: {
+ width: '40%',
+ height: '70%',
+ justifyContent: 'center',
+ alignItems: 'flex-end'
+ },
+ titlePasswordText: {
+ backgroundColor: colors.cardContainer,
+ height: '75%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: scale(7),
+ ...alignment.PLxSmall,
+ ...alignment.PRxSmall
+ },
+ btnContainer: {
+ backgroundColor: 'rgba(255, 255, 255,0.01)',
+ height: '100%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ width: 80
+ },
+ cartCount: {
+ backgroundColor: colors.blueColor,
+ top: scale(11),
+ right: scale(-5),
+ width: scale(15),
+ height: scale(15),
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: 10,
+ position: 'absolute'
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js b/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js
new file mode 100644
index 0000000..c90e3d2
--- /dev/null
+++ b/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js
@@ -0,0 +1,44 @@
+import { useNavigation, useTheme } from '@react-navigation/native'
+import React from 'react'
+import { View, TouchableOpacity } from 'react-native'
+import { CustomIcon } from '../../CustomIcon'
+import PropTypes from 'prop-types'
+import { TextDefault } from '../../Text'
+import useStyle from './styles'
+import { scale } from '../../../utils/scaling'
+import { ICONS_NAME } from '../../../utils/constant'
+
+function RegistrationHeader({ title, back = false }) {
+ const styles = useStyle()
+ const navigation = useNavigation()
+ const { colors } = useTheme()
+
+ return (
+
+ {back ? (
+ navigation.goBack()}
+ style={[styles.backBtnWidth, styles.backBtn]}>
+
+
+ ) : (
+
+ )}
+
+ {title || ''}
+
+
+
+ )
+}
+
+RegistrationHeader.propTypes = {
+ title: PropTypes.string.isRequired,
+ back: PropTypes.bool
+}
+
+export default React.memo(RegistrationHeader)
diff --git a/CustomerApp/src/components/Header/RegistrationHeader/styles.js b/CustomerApp/src/components/Header/RegistrationHeader/styles.js
new file mode 100644
index 0000000..1301270
--- /dev/null
+++ b/CustomerApp/src/components/Header/RegistrationHeader/styles.js
@@ -0,0 +1,28 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { moderateScale, scale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ headerContainer: {
+ paddingHorizontal: moderateScale(20),
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'center',
+ justifyContent: 'space-between'
+ },
+ backBtnWidth: {
+ width: scale(40),
+ aspectRatio: 1
+ },
+ backBtn: {
+ backgroundColor: colors.white,
+ borderRadius: scale(13),
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/Header/index.js b/CustomerApp/src/components/Header/index.js
new file mode 100644
index 0000000..8b573a8
--- /dev/null
+++ b/CustomerApp/src/components/Header/index.js
@@ -0,0 +1,4 @@
+import { BackButton, LeftButton, RightButton } from './HeaderIcons/HeaderIcons'
+import RegistrationHeader from './RegistrationHeader/RegistrationHeader'
+
+export { BackButton, LeftButton, RightButton, RegistrationHeader }
diff --git a/CustomerApp/src/components/Menu/MenuCard/MenuCard.js b/CustomerApp/src/components/Menu/MenuCard/MenuCard.js
new file mode 100755
index 0000000..2c4bedd
--- /dev/null
+++ b/CustomerApp/src/components/Menu/MenuCard/MenuCard.js
@@ -0,0 +1,46 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import EnategaImage from '../../EnategaImage/EnategaImage'
+import { TextDefault } from '../../Text'
+import useStyle from './styles'
+function MenuCard(props) {
+ const { colors } = useTheme()
+ const styles = useStyle()
+ return (
+
+
+
+
+
+ {props.title}
+
+
+ {props.description}
+
+
+
+
+ )
+}
+MenuCard.propTypes = {
+ onPress: PropTypes.func,
+ image: PropTypes.string,
+ title: PropTypes.string.isRequired,
+ description: PropTypes.string
+}
+export default MenuCard
diff --git a/CustomerApp/src/components/Menu/MenuCard/styles.js b/CustomerApp/src/components/Menu/MenuCard/styles.js
new file mode 100644
index 0000000..0bdb03b
--- /dev/null
+++ b/CustomerApp/src/components/Menu/MenuCard/styles.js
@@ -0,0 +1,62 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { moderateScale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: 20
+ },
+ container: {
+ width: '100%',
+ height: '100%',
+ justifyContent: 'center',
+ borderRadius: 20,
+ overflow: 'hidden'
+ },
+ imgResponsive: {
+ flex: 1,
+ width: undefined,
+ height: undefined
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ imgCard: {
+ position: 'relative',
+ flex: 1,
+ borderRadius: 20,
+ width: undefined,
+ height: undefined
+ },
+ blackOverlay: {
+ width: '100%',
+ height: '100%',
+ backgroundColor: colors.black,
+ opacity: 0.4,
+ borderRadius: 20,
+ position: 'absolute'
+ },
+ textContainer: {
+ width: '100%',
+ padding: moderateScale(10, 0.2),
+ paddingLeft: moderateScale(20),
+ alignSelf: 'flex-end',
+ bottom: 0,
+ position: 'absolute',
+ backgroundColor: 'rgba(52, 52, 52, 0.8)',
+ justifyContent: 'center',
+ borderBottomEndRadius: 20,
+ borderBottomStartRadius: 20
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/Menu/StatusCard/StatusCard.js b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js
new file mode 100644
index 0000000..2f476d4
--- /dev/null
+++ b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js
@@ -0,0 +1,115 @@
+import { useNavigation, useTheme } from "@react-navigation/native";
+import React, { useContext } from "react";
+import { FlatList, TouchableOpacity, View } from "react-native";
+import ConfigurationContext from "../../../context/Configuration";
+import UserContext from "../../../context/User";
+import { alignment } from "../../../utils/alignment";
+import { NAVIGATION_SCREEN } from "../../../utils/constant";
+import Spinner from "../../Spinner/Spinner";
+import TextDefault from "../../Text/TextDefault/TextDefault";
+import TextError from "../../Text/TextError/TextError";
+import useStyle from "./styles";
+
+export const orderStatuses = [
+ {
+ key: "PENDING",
+ status: 1,
+ statusText: "Your order is still pending.",
+ },
+ {
+ key: "ACCEPTED",
+ status: 2,
+ statusText: "Restaurant is preparing Food.",
+ },
+ {
+ key: "PICKED",
+ status: 3,
+ statusText: "Rider is on the way.",
+ },
+ {
+ key: "DELIVERED",
+ status: 4,
+ statusText: "Order is delivered.",
+ },
+ {
+ key: "COMPLETED",
+ status: 5,
+ statusText: "Order is completed.",
+ },
+];
+
+const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"];
+
+const StatusCard = () => {
+ const { colors } = useTheme();
+ const styles = useStyle();
+ const navigation = useNavigation();
+ const {
+ loadingOrders,
+ errorOrders,
+ orders,
+ networkStatusOrders,
+ fetchOrders,
+ } = useContext(UserContext);
+ const configuration = useContext(ConfigurationContext);
+
+ const checkStatus = (status) => {
+ const obj = orderStatuses.filter((x) => {
+ return x.key === status;
+ });
+ return obj[0];
+ };
+
+ if (loadingOrders) return ;
+ if (errorOrders) return {errorOrders.message};
+
+ return (
+ networkStatusOrders === 7 && fetchOrders()}
+ data={orders.filter((o) => orderStatusActive.includes(o.order_status))}
+ //keyExtractor={(item) => item._id}
+ keyExtractor={(item, index) => String(index)}
+ renderItem={({ item, index }) => (
+
+ navigation.navigate(NAVIGATION_SCREEN.OrderDetail, {
+ _id: item._id,
+ currency_symbol: configuration.currency_symbol,
+ })
+ }
+ >
+
+
+
+ Your order ID
+
+
+ {item.order_id}
+
+
+ Status
+
+
+
+ {item.order_status}{" "}
+
+ {/* {checkStatus(item.order_status).status}.{' '} */}(
+ {checkStatus(item.order_status).statusText})
+
+
+
+
+
+ )}
+ />
+ );
+};
+
+export default StatusCard;
diff --git a/CustomerApp/src/components/Menu/StatusCard/styles.js b/CustomerApp/src/components/Menu/StatusCard/styles.js
new file mode 100644
index 0000000..296a9c9
--- /dev/null
+++ b/CustomerApp/src/components/Menu/StatusCard/styles.js
@@ -0,0 +1,49 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale, scale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ mainContainer: {
+ flexGrow: 1,
+ marginLeft: scale(5),
+ ...alignment.PBmedium
+ },
+ lightText: {
+ color: colors.fontSecondColor
+ },
+ statusContainer: {
+ marginTop: 20,
+ width: scale(275),
+ padding: moderateScale(15),
+ backgroundColor: '#f7f7fb',
+ borderRadius: 10,
+ borderStyle: 'dashed',
+ borderColor: '#a5a5a5',
+ borderWidth: 2
+ // shadowOpacity: 1,
+ // shadowRadius: verticalScale(4),
+ // borderWidth: 1,
+ // borderColor: '#FFF',
+ // ...alignment.PBmedium,
+ // ...alignment.MBsmall,
+ // ...alignment.MTxSmall,
+ // ...alignment.MLmedium
+ },
+ textContainer: {},
+ statusCircleContainer: {
+ flexDirection: 'row',
+ justifyContent: 'flex-start',
+ ...alignment.MTsmall,
+ ...alignment.MBsmall
+ },
+ statusCircle: {
+ ...alignment.MTxSmall,
+ ...alignment.MBxSmall,
+ ...alignment.MRxSmall
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/Menu/index.js b/CustomerApp/src/components/Menu/index.js
new file mode 100644
index 0000000..2c7477a
--- /dev/null
+++ b/CustomerApp/src/components/Menu/index.js
@@ -0,0 +1,4 @@
+import MenuCard from './MenuCard/MenuCard'
+import StatusCard from './StatusCard/StatusCard'
+
+export { MenuCard, StatusCard }
diff --git a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js
new file mode 100644
index 0000000..8c02171
--- /dev/null
+++ b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js
@@ -0,0 +1,243 @@
+import { MaterialIcons } from '@expo/vector-icons'
+import MultiSlider from '@ptomasroos/react-native-multi-slider'
+import { useTheme } from '@react-navigation/native'
+import { get, keys } from 'lodash'
+import PropTypes from 'prop-types'
+import React, { useCallback, useContext, useEffect, useState } from 'react'
+import { Switch, TouchableOpacity, View } from 'react-native'
+import ConfigurationContext from '../../../context/Configuration'
+import { alignment } from '../../../utils/alignment'
+import { SORT_DATA } from '../../../utils/constant'
+import { moderateScale } from '../../../utils/scaling'
+import RadioBtn from '../../FdRadioBtn/RadioBtn'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyle from './styles'
+
+const FilterModal = props => {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const configuration = useContext(ConfigurationContext)
+ const [filters, setFilters] = useState({})
+
+ useEffect(() => {
+ setFilters({
+ onSale: false,
+ inStock: false,
+ min: 0,
+ max: 1000,
+ sort: keys(SORT_DATA)[0],
+ ...props.filterObj
+ })
+ }, [props.filterObj])
+
+ const setSortValue = useCallback(sortKey => {
+ setFilters(previousState => ({
+ ...previousState,
+ sort: sortKey
+ }))
+ }, [])
+
+ const toggleSaleSwitch = useCallback(() => {
+ setFilters(previousState => ({
+ ...previousState,
+ onSale: !previousState.onSale
+ }))
+ }, [])
+
+ const toggleStockSwitch = useCallback(() => {
+ setFilters(previousState => ({
+ ...previousState,
+ inStock: !previousState.inStock
+ }))
+ }, [])
+
+ const clearItems = useCallback(() => {
+ setFilters({
+ onSale: false,
+ inStock: false,
+ min: 0,
+ max: 1000,
+ sort: keys(SORT_DATA)[0]
+ })
+ }, [])
+
+ const priceSliderChange = useCallback(values => {
+ setFilters(previousState => ({
+ ...previousState,
+ min: values[0],
+ max: values[1]
+ }))
+ }, [])
+
+ function applyFilters() {
+ props.setFilters({ ...filters })
+ props.closeFilterModal()
+ }
+
+ return (
+
+
+
+ Filters
+
+
+
+ Reset
+
+
+
+
+
+
+
+
+ Show sale items only
+
+
+
+
+
+
+ Show stock items only
+
+
+
+
+
+
+
+
+ Price Range
+
+
+
+ {configuration.currency_symbol} {get(filters, 'min')} -{' '}
+ {configuration.currency_symbol} {get(filters, 'max')}
+
+
+
+
+
+
+
+ {configuration.currency_symbol} 0
+
+
+ {configuration.currency_symbol} 1000
+
+
+
+
+ Sorting
+
+
+ {keys(SORT_DATA).map(item => {
+ const isSelected = get(filters, 'sort') === item
+ return (
+ setSortValue(item)}>
+
+ {get(SORT_DATA, item)}
+
+ setSortValue(item)}
+ />
+
+ )
+ })}
+
+
+
+
+ Apply Filter
+
+
+ props.closeFilterModal()}
+ style={[styles.width100, alignment.PBlarge, alignment.PTlarge]}>
+ Close
+
+
+
+ )
+}
+FilterModal.propTypes = {
+ filterObj: PropTypes.object,
+ closeFilterModal: PropTypes.func,
+ setFilters: PropTypes.func
+}
+
+export default FilterModal
diff --git a/CustomerApp/src/components/Modals/FilterModal/styles.js b/CustomerApp/src/components/Modals/FilterModal/styles.js
new file mode 100644
index 0000000..6a1dd58
--- /dev/null
+++ b/CustomerApp/src/components/Modals/FilterModal/styles.js
@@ -0,0 +1,77 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ width100: {
+ width: '100%'
+ },
+ line: {
+ width: '100%',
+ alignSelf: 'center',
+ borderBottomColor: colors.horizontalLine,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ ...alignment.MTmedium,
+ ...alignment.MBmedium
+ },
+ sotRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ width: '100%',
+ alignSelf: 'center',
+ justifyContent: 'space-between',
+ borderBottomColor: colors.horizontalLine,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ ...alignment.PTmedium,
+ ...alignment.PBmedium
+ },
+ priceRangeRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ paddingTop: verticalScale(10),
+ paddingBottom: verticalScale(10),
+ ...alignment.PRlarge
+ },
+ trackStyle: {
+ height: 10,
+ borderRadius: 10,
+ backgroundColor: colors.horizontalLine,
+ borderStyle: 'solid',
+ borderWidth: 0,
+ borderColor: 'lightgray'
+ },
+ selectedMarker: {
+ width: scale(15),
+ height: scale(30)
+ },
+ markerStyle: {
+ width: scale(12),
+ height: scale(25),
+ backgroundColor: colors.tagColor,
+ shadowColor: 'rgba(0, 0, 0, 0.15)',
+ shadowOffset: {
+ width: 0,
+ height: 0
+ },
+ shadowRadius: 9,
+ shadowOpacity: 1,
+ elevation: 3,
+ marginTop: 8
+ },
+ applyBtn: {
+ width: '100%',
+ maxHeight: scale(50),
+ backgroundColor: colors.buttonBackgroundBlue,
+ alignSelf: 'center',
+ alignItems: 'center',
+ padding: moderateScale(14),
+ borderRadius: 20,
+ ...alignment.MTmedium
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js b/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js
new file mode 100644
index 0000000..9a08117
--- /dev/null
+++ b/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js
@@ -0,0 +1,118 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import i18n from '../../../../i18n'
+import RadioButton from '../../../components/FdRadioBtn/RadioBtn'
+import { alignment } from '../../../utils/alignment'
+import { ICONS_NAME } from '../../../utils/constant'
+import { scale } from '../../../utils/scaling'
+import { CustomIcon } from '../../CustomIcon'
+import TextDefault from '../../Text/TextDefault/TextDefault'
+import useStyles from './styles'
+
+function PaymentModal(props) {
+ const styles = useStyles()
+ const { colors } = useTheme()
+ const [selectedPayment, setSelectedPayment] = useState(
+ props.payment ?? {},
+ {}
+ )
+
+ const CASH = [
+ {
+ payment: 'STRIPE',
+ label: i18n.t('creditCart'),
+ index: 0,
+ icon: ICONS_NAME.Visa,
+ iconSize: scale(30)
+ },
+ {
+ payment: 'PAYPAL',
+ label: i18n.t('paypal'),
+ index: 1,
+ icon: ICONS_NAME.Paypal,
+ iconSize: scale(30)
+ },
+ {
+ payment: 'COD',
+ label: i18n.t('cod'),
+ index: 2,
+ icon: ICONS_NAME.Cash,
+ iconSize: scale(25)
+ }
+ ]
+
+ function onSelectPayment(payment) {
+ setSelectedPayment(payment)
+ props.paymentChange(payment)
+ }
+
+ return (
+
+
+ Change Payment Method
+
+ {CASH.map((item, index) => (
+
+ {
+ onSelectPayment(item)
+ }}>
+
+
+
+
+
+ {item.label}
+
+
+ {
+ onSelectPayment(item)
+ }}
+ />
+
+
+
+
+ ))}
+
+
+ Done
+
+
+
+ Cancel
+
+
+ )
+}
+
+PaymentModal.propTypes = {
+ payment: PropTypes.object,
+ paymentChange: PropTypes.func,
+ onClose: PropTypes.func
+}
+export default PaymentModal
diff --git a/CustomerApp/src/components/Modals/PaymentModal/styles.js b/CustomerApp/src/components/Modals/PaymentModal/styles.js
new file mode 100644
index 0000000..a0f11f2
--- /dev/null
+++ b/CustomerApp/src/components/Modals/PaymentModal/styles.js
@@ -0,0 +1,59 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale, scale } from '../../../utils/scaling'
+
+const useStyles = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ mainContainer: {
+ backgroundColor: colors.background,
+ ...alignment.PTlarge,
+ ...alignment.PBlarge,
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+ radioContainer: {
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ radioGroup: {
+ width: '80%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ ...alignment.PRsmall,
+ ...alignment.PLxSmall
+ },
+ button: {
+ width: '80%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: colors.buttonBackgroundBlue,
+ borderRadius: moderateScale(18),
+ height: moderateScale(50),
+ ...alignment.MTlarge
+ },
+ horizontalLine: {
+ width: '80%',
+ opacity: 0.5,
+ borderBottomColor: colors.placeHolderColor,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ ...alignment.MBsmall,
+ ...alignment.MTsmall
+ },
+ iconContainer: {
+ width: scale(30)
+ },
+ width100: {
+ width: '100%',
+ alignItems: 'center',
+ justifyContent: 'center'
+ }
+ })
+}
+export default useStyles
diff --git a/CustomerApp/src/components/Modals/index.js b/CustomerApp/src/components/Modals/index.js
new file mode 100644
index 0000000..4c3d2da
--- /dev/null
+++ b/CustomerApp/src/components/Modals/index.js
@@ -0,0 +1,3 @@
+import FilterModal from './FilterModal/FilterModal'
+
+export { FilterModal }
diff --git a/CustomerApp/src/components/MyOrders/ActiveOrders.js b/CustomerApp/src/components/MyOrders/ActiveOrders.js
new file mode 100644
index 0000000..7b34e93
--- /dev/null
+++ b/CustomerApp/src/components/MyOrders/ActiveOrders.js
@@ -0,0 +1,139 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useContext } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import ConfigurationContext from '../../context/Configuration'
+import { COLORS } from '../../Theme/Colors'
+import { alignment } from '../../utils/alignment'
+import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import { CustomIcon } from '../CustomIcon/index'
+import EnategaImage from '../EnategaImage/EnategaImage'
+import TextDefault from '../Text/TextDefault/TextDefault'
+import TextError from '../Text/TextError/TextError'
+import TextLine from '../Text/TextLine/TextLine'
+import useStyle from './styles'
+
+export const orderStatuses = [
+ {
+ key: 'PENDING',
+ status: 1,
+ icon: ICONS_NAME.Clock,
+ color: COLORS.primary
+ },
+ {
+ key: 'ACCEPTED',
+ status: 2,
+ icon: ICONS_NAME.Checked,
+ color: COLORS.blueColor
+ },
+ {
+ key: 'PICKED',
+ status: 3,
+ icon: ICONS_NAME.Checked,
+ color: COLORS.blueColor
+ },
+ {
+ key: 'DELIVERED',
+ status: 4,
+ icon: ICONS_NAME.Checked,
+ color: COLORS.blueColor
+ },
+ {
+ key: 'COMPLETED',
+ status: 5,
+ icon: ICONS_NAME.Checked,
+ color: COLORS.blueColor
+ }
+]
+
+const ActiveOrders = ({
+ navigation,
+ loading,
+ error,
+ activeOrders,
+ pastOrders
+}) => {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const configuration = useContext(ConfigurationContext)
+ if (loading) {
+ return Loading...
+ }
+ if (error) return
+ if (!activeOrders || (activeOrders && !activeOrders.length)) {
+ if (!pastOrders || (pastOrders && !pastOrders.length)) {
+ return
+ }
+ return
+ }
+
+ const checkStatus = status => {
+ const obj = orderStatuses.filter(x => {
+ return x.key === status
+ })
+ return obj[0]
+ }
+
+ return (
+
+
+ {activeOrders.map((item, index) => (
+
+ navigation.navigate(NAVIGATION_SCREEN.OrderDetail, {
+ _id: item._id
+ })
+ }>
+
+
+
+
+
+
+ {'ID: '}
+ {item.order_id}
+
+
+ {configuration.currency_symbol}
+ {item.order_amount}
+
+
+
+
+
+
+ {item.order_status}
+
+
+
+
+ ))}
+
+
+ )
+}
+
+ActiveOrders.propTypes = {
+ loading: PropTypes.bool,
+ error: PropTypes.object,
+ activeOrders: PropTypes.arrayOf(PropTypes.object),
+ navigation: PropTypes.object,
+ pastOrders: PropTypes.arrayOf(PropTypes.object)
+}
+
+export default ActiveOrders
diff --git a/CustomerApp/src/components/MyOrders/styles.js b/CustomerApp/src/components/MyOrders/styles.js
new file mode 100644
index 0000000..342eb74
--- /dev/null
+++ b/CustomerApp/src/components/MyOrders/styles.js
@@ -0,0 +1,67 @@
+import { scale, verticalScale } from '../../utils/scaling'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { useTheme } from '@react-navigation/native'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: colors.cardContainer,
+ borderRadius: scale(20),
+ elevation: 3,
+ width: '85%',
+ alignSelf: 'center',
+ shadowColor: 'black',
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1),
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ ...alignment.Psmall,
+ ...alignment.MBmedium
+ },
+ imgContainer: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: 20,
+ overflow: 'hidden'
+ },
+ rightContainer: {
+ width: '25%',
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ Vline: {
+ borderRightWidth: StyleSheet.hairlineWidth,
+ borderColor: colors.placeHolderColor,
+ shadowOffset: {
+ width: 2,
+ height: 2
+ },
+ shadowRadius: 10,
+ shadowColor: colors.lightBackground,
+ shadowOpacity: 0.6
+ },
+ imgResponsive: {
+ width: scale(70),
+ height: scale(70)
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ infoContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ ...alignment.PRxSmall,
+ ...alignment.PLsmall
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js b/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js
new file mode 100644
index 0000000..ac0952c
--- /dev/null
+++ b/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js
@@ -0,0 +1,131 @@
+import React, { useEffect } from 'react'
+import { View, Dimensions, Text, Image } from 'react-native'
+import { useQuery } from '@apollo/react-hooks'
+import gql from 'graphql-tag'
+import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps'
+import PropTypes from 'prop-types'
+import Spinner from '../../../components/Spinner/Spinner'
+import { rider, subscriptionRiderLocation } from '../../../apollo/server'
+import { scale } from '../../../utils/scaling'
+
+const { width, height } = Dimensions.get('window')
+
+const RIDER = gql`
+ ${rider}
+`
+const RIDER_LOCATION = gql`
+ ${subscriptionRiderLocation}
+`
+const ASPECT_RATIO = width / height
+const LATITUDE_DELTA = 0.0922
+const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO
+const DEFAULT_PADDING = { top: 40, right: 40, bottom: 40, left: 40 }
+
+const TrackingRider = ({ id, delivery_address: deliveryAddress }) => {
+ let map = null
+ const { loading, error, data, subscribeToMore } = useQuery(RIDER, {
+ variables: { id }
+ })
+ useEffect(() => {
+ const unsubscribe = subscribeToMore({
+ document: RIDER_LOCATION,
+ variables: { riderId: id },
+ updateQuery: (prev, { subscriptionData }) => {
+ if (!subscriptionData.data) return prev
+ return {
+ rider: {
+ ...prev.rider,
+ ...subscriptionData.data.subscriptionRiderLocation
+ }
+ }
+ }
+ })
+ return unsubscribe
+ }, [])
+
+ useEffect(() => {
+ if (map && data) {
+ const rider = {
+ latitude: parseFloat(data.rider.location.latitude),
+ longitude: parseFloat(data.rider.location.longitude)
+ }
+ const destination = {
+ latitude: parseFloat(deliveryAddress.latitude),
+ longitude: parseFloat(deliveryAddress.longitude)
+ }
+ fitMarkers([rider, destination])
+ }
+ }, [data])
+
+ const fitMarkers = markers => {
+ map.fitToCoordinates(markers, {
+ edgePadding: DEFAULT_PADDING,
+ animated: true
+ })
+ }
+
+ if (loading) return
+ if (error) return error
+
+ return (
+ <>
+
+ {
+ map = ref
+ }}
+ style={{ flex: 1 }}
+ // scrollEnabled={false}
+ // zoomEnabled={false}
+ // zoomControlEnabled={false}
+ // rotateEnabled={false}
+ // cacheEnabled={true}
+ initialRegion={{
+ latitude: parseFloat(data.rider.location.latitude),
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: parseFloat(data.rider.location.longitude),
+ longitudeDelta: LONGITUDE_DELTA
+ }}
+ provider={PROVIDER_GOOGLE}>
+
+
+
+
+
+
+
+
+ >
+ )
+}
+TrackingRider.propTypes = {
+ delivery_address: PropTypes.shape({
+ latitude: PropTypes.string,
+ longitude: PropTypes.string
+ }),
+ id: PropTypes.string
+}
+
+export default TrackingRider
diff --git a/CustomerApp/src/components/OrderDetail/index.js b/CustomerApp/src/components/OrderDetail/index.js
new file mode 100644
index 0000000..dff63ae
--- /dev/null
+++ b/CustomerApp/src/components/OrderDetail/index.js
@@ -0,0 +1,3 @@
+import TrackingRider from './TrackingRider/TrackingRider'
+
+export { TrackingRider }
diff --git a/CustomerApp/src/components/Sidebar/Sidebar.js b/CustomerApp/src/components/Sidebar/Sidebar.js
new file mode 100755
index 0000000..e2de142
--- /dev/null
+++ b/CustomerApp/src/components/Sidebar/Sidebar.js
@@ -0,0 +1,174 @@
+/* eslint-disable react/prop-types */
+import { SimpleLineIcons } from '@expo/vector-icons'
+import { DrawerContentScrollView, DrawerItem } from '@react-navigation/drawer'
+import {
+ DrawerActions,
+ useNavigation,
+ useTheme
+} from '@react-navigation/native'
+import React, { useContext } from 'react'
+import { Animated, View } from 'react-native'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import i18n from '../../../i18n'
+import UserContext from '../../context/User'
+import NavigationService from '../../routes/navigationService'
+import { alignment } from '../../utils/alignment'
+import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import { CustomIcon } from '../CustomIcon'
+import SideDrawerProfile from '../Drawer/Profile/DrawerProfile'
+import { TextDefault } from '../Text'
+import useStyle from './styles'
+
+const MENU = [
+ {
+ title: 'home',
+ icon: ICONS_NAME.Home,
+ navigateTo: NAVIGATION_SCREEN.Menu,
+ isAuth: false
+ },
+ {
+ title: 'titleProfile',
+ icon: 'user',
+ navigateTo: 'Profile',
+ isAuth: true
+ },
+ {
+ title: 'titleOrders',
+ icon: ICONS_NAME.Cart,
+ navigateTo: NAVIGATION_SCREEN.MyOrders,
+ isAuth: true
+ },
+ {
+ title: 'myAddresses',
+ icon: ICONS_NAME.Location,
+ navigateTo: NAVIGATION_SCREEN.Addresses,
+ isAuth: true
+ },
+ // {
+ // title: 'titleChat',
+ // icon: ICONS_NAME.Message,
+ // navigateTo: NAVIGATION_SCREEN.Chat,
+ // isAuth: false
+ // },
+ {
+ title: 'titleHelp',
+ icon: ICONS_NAME.Info,
+ navigateTo: NAVIGATION_SCREEN.Help,
+ isAuth: false
+ },
+ {
+ title: 'titleSettings',
+ icon: ICONS_NAME.Setting,
+ navigateTo: NAVIGATION_SCREEN.Settings,
+ isAuth: true
+ }
+]
+
+function SidebBar(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const inset = useSafeAreaInsets()
+ const { isLoggedIn, logout } = useContext(UserContext)
+ const navigationName = NavigationService.currentRoute()?.name
+ return (
+
+
+
+
+
+
+
+ {MENU.map((item, index) => (
+ (
+
+ {i18n.t(item.title)}
+
+ )}
+ icon={props => {
+ if (item.icon !== 'user') {
+ return (
+
+ )
+ } else {
+ return (
+
+ )
+ }
+ }}
+ onPress={async() => {
+ if (item.isAuth && !isLoggedIn) {
+ navigation.navigate(NAVIGATION_SCREEN.CreateAccount)
+ } else {
+ navigation.navigate(item.navigateTo)
+ }
+ }}
+ />
+ ))}
+
+
+ {isLoggedIn && (
+ (
+
+ {i18n.t('titleLogout')}
+
+ )}
+ icon={() => (
+
+ )}
+ onPress={async() => {
+ logout()
+ navigation.reset({
+ routes: [{ name: 'Menu' }]
+ })
+ navigation.dispatch(DrawerActions.closeDrawer())
+ // await client.resetStore();
+ }}
+ />
+ )}
+
+
+
+
+ )
+}
+export default SidebBar
diff --git a/CustomerApp/src/components/Sidebar/styles.js b/CustomerApp/src/components/Sidebar/styles.js
new file mode 100644
index 0000000..4e8aeaf
--- /dev/null
+++ b/CustomerApp/src/components/Sidebar/styles.js
@@ -0,0 +1,41 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { scale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ scrollContent: {
+ flexGrow: 1,
+ backgroundColor: 'transparent'
+ },
+ whiteFont: {
+ color: colors.fontWhite
+ },
+ textView: {
+ marginHorizontal: -25,
+ ...alignment.PLxSmall
+ },
+ headerContainer: {
+ height: '25%',
+ minHeight: scale(200),
+ justifyContent: 'center',
+ backgroundColor: 'transparent'
+ },
+ menuContainer: {
+ flexGrow: 1,
+ backgroundColor: 'transparent',
+ justifyContent: 'space-between',
+ ...alignment.PTlarge
+ },
+ drawerItem: {
+ marginVertical: 0
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/Spinner/Spinner.js b/CustomerApp/src/components/Spinner/Spinner.js
new file mode 100644
index 0000000..62462e2
--- /dev/null
+++ b/CustomerApp/src/components/Spinner/Spinner.js
@@ -0,0 +1,34 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { ActivityIndicator, StyleSheet } from 'react-native'
+
+function Spinner(props) {
+ const { colors } = useTheme()
+
+ return (
+
+ )
+}
+Spinner.propTypes = {
+ backColor: PropTypes.string,
+ spinnerColor: PropTypes.string,
+ size: PropTypes.string
+}
+
+const styles = StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mainContainer: {
+ backgroundColor: 'transparent',
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+})
+export default Spinner
diff --git a/CustomerApp/src/components/Text/TextDefault/TextDefault.js b/CustomerApp/src/components/Text/TextDefault/TextDefault.js
new file mode 100644
index 0000000..9e842ad
--- /dev/null
+++ b/CustomerApp/src/components/Text/TextDefault/TextDefault.js
@@ -0,0 +1,65 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { StyleSheet, Text } from 'react-native'
+import { textStyles } from '../../../utils/textStyles'
+import color from './styles'
+
+function TextDefault(props) {
+ const { colors } = useTheme()
+ const textColor = props.textColor || colors.fontMainColor
+ const defaultStyle = StyleSheet.flatten([
+ color(textColor).color,
+ textStyles.Regular,
+ textStyles.Normal
+ ])
+ var customStyles = [defaultStyle]
+
+ if (props.light) customStyles.push(textStyles.Light)
+ if (props.medium) customStyles.push(textStyles.Medium)
+ if (props.regular) customStyles.push(textStyles.Regular)
+ if (props.bold) customStyles.push(textStyles.Bold)
+ if (props.bolder) customStyles.push(textStyles.Bolder)
+ if (props.center) customStyles.push(textStyles.Center)
+ if (props.right) customStyles.push(textStyles.Right)
+ if (props.small) customStyles.push(textStyles.Small)
+ if (props.H5) customStyles.push(textStyles.H5)
+ if (props.H4) customStyles.push(textStyles.H4)
+ if (props.H3) customStyles.push(textStyles.H3)
+ if (props.H2) customStyles.push(textStyles.H2)
+ if (props.H1) customStyles.push(textStyles.H1)
+ if (props.uppercase) customStyles.push(textStyles.UpperCase)
+ if (props.lineOver) customStyles.push(textStyles.LineOver)
+
+ customStyles = StyleSheet.flatten([customStyles, props.style])
+ return (
+
+ {props.children}
+
+ )
+}
+
+TextDefault.propTypes = {
+ light: PropTypes.bool,
+ regular: PropTypes.bool,
+ medium: PropTypes.bool,
+ bold: PropTypes.bool,
+ bolder: PropTypes.bool,
+ center: PropTypes.bool,
+ right: PropTypes.bool,
+ small: PropTypes.bool,
+ H5: PropTypes.bool,
+ H4: PropTypes.bool,
+ H3: PropTypes.bool,
+ H2: PropTypes.bool,
+ H1: PropTypes.bool,
+ uppercase: PropTypes.bool,
+ lineOver: PropTypes.bool,
+ numberOfLines: PropTypes.number,
+ textColor: PropTypes.string,
+ style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
+ children: PropTypes.node.isRequired
+}
+export default TextDefault
diff --git a/CustomerApp/src/components/Text/TextDefault/styles.js b/CustomerApp/src/components/Text/TextDefault/styles.js
new file mode 100644
index 0000000..14a2c89
--- /dev/null
+++ b/CustomerApp/src/components/Text/TextDefault/styles.js
@@ -0,0 +1,10 @@
+import { StyleSheet } from 'react-native'
+
+const color = textColor =>
+ StyleSheet.create({
+ color: {
+ color: textColor
+ }
+ })
+
+export default color
diff --git a/CustomerApp/src/components/Text/TextError/TextError.js b/CustomerApp/src/components/Text/TextError/TextError.js
new file mode 100644
index 0000000..5b7b5e3
--- /dev/null
+++ b/CustomerApp/src/components/Text/TextError/TextError.js
@@ -0,0 +1,33 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React from 'react'
+import { View } from 'react-native'
+import TextDefault from '../TextDefault/TextDefault'
+
+function TextError(props) {
+ const { colors } = useTheme()
+
+ return (
+
+
+ {props.text}
+
+
+ )
+}
+TextError.propTypes = {
+ text: PropTypes.string,
+ backColor: PropTypes.string,
+ textColor: PropTypes.string
+}
+export default TextError
diff --git a/CustomerApp/src/components/Text/TextLine/TextLine.js b/CustomerApp/src/components/Text/TextLine/TextLine.js
new file mode 100644
index 0000000..6477f7d
--- /dev/null
+++ b/CustomerApp/src/components/Text/TextLine/TextLine.js
@@ -0,0 +1,25 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import { View } from 'react-native'
+import TextDefault from '../TextDefault/TextDefault'
+import useStyle from './styles'
+
+const TextLine = props => {
+ const styles = useStyle()
+ return (
+
+
+
+ {props.headerName}
+
+
+
+ )
+}
+
+TextLine.propTypes = {
+ headerName: PropTypes.string.isRequired,
+ lineWidth: PropTypes.string.isRequired,
+ textWidth: PropTypes.string.isRequired
+}
+export default TextLine
diff --git a/CustomerApp/src/components/Text/TextLine/styles.js b/CustomerApp/src/components/Text/TextLine/styles.js
new file mode 100644
index 0000000..254f0e4
--- /dev/null
+++ b/CustomerApp/src/components/Text/TextLine/styles.js
@@ -0,0 +1,25 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ headingContainer: {
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.PTlarge,
+ ...alignment.PBlarge
+ },
+ line: {
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderColor: colors.text,
+ opacity: 0.6
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/components/Text/index.js b/CustomerApp/src/components/Text/index.js
new file mode 100644
index 0000000..71be559
--- /dev/null
+++ b/CustomerApp/src/components/Text/index.js
@@ -0,0 +1,5 @@
+import TextDefault from './TextDefault/TextDefault'
+import TextError from './TextError/TextError'
+import TextLine from './TextLine/TextLine'
+
+export { TextDefault, TextError, TextLine }
diff --git a/CustomerApp/src/components/Triangle/Triangle.js b/CustomerApp/src/components/Triangle/Triangle.js
new file mode 100644
index 0000000..49ee304
--- /dev/null
+++ b/CustomerApp/src/components/Triangle/Triangle.js
@@ -0,0 +1,16 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import { View } from 'react-native'
+import useStyle from './styles'
+
+const Triangle = props => {
+ const styles = useStyle()
+
+ return
+}
+
+Triangle.propTypes = {
+ style: PropTypes.object
+}
+
+export default Triangle
diff --git a/CustomerApp/src/components/Triangle/styles.js b/CustomerApp/src/components/Triangle/styles.js
new file mode 100644
index 0000000..205fa33
--- /dev/null
+++ b/CustomerApp/src/components/Triangle/styles.js
@@ -0,0 +1,22 @@
+import { scale } from '../../utils/scaling'
+import { StyleSheet } from 'react-native'
+import { useTheme } from '@react-navigation/native'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ triangle: {
+ width: 0,
+ height: 0,
+ backgroundColor: 'transparent',
+ borderStyle: 'solid',
+ borderLeftWidth: scale(7),
+ borderRightWidth: scale(7),
+ borderBottomWidth: scale(8),
+ borderLeftColor: 'transparent',
+ borderRightColor: 'transparent',
+ borderBottomColor: colors.background
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/components/WrapperView/WrapperView.js b/CustomerApp/src/components/WrapperView/WrapperView.js
new file mode 100644
index 0000000..1d26f20
--- /dev/null
+++ b/CustomerApp/src/components/WrapperView/WrapperView.js
@@ -0,0 +1,21 @@
+import PropTypes from 'prop-types'
+import React from 'react'
+import { View } from 'react-native'
+import useStyle from './styles'
+function WrapperView({ children }) {
+ const styles = useStyle()
+
+ return (
+
+
+
+ {children}
+
+ )
+}
+
+WrapperView.propTypes = {
+ children: PropTypes.node
+}
+
+export default React.memo(WrapperView)
diff --git a/CustomerApp/src/components/WrapperView/styles.js b/CustomerApp/src/components/WrapperView/styles.js
new file mode 100644
index 0000000..83ad011
--- /dev/null
+++ b/CustomerApp/src/components/WrapperView/styles.js
@@ -0,0 +1,50 @@
+import { useTheme } from "@react-navigation/native";
+import { useHeaderHeight } from "@react-navigation/elements";
+import { StyleSheet } from "react-native";
+import { useSafeAreaInsets } from "react-native-safe-area-context";
+import { scale } from "../../utils/scaling";
+
+const useStyle = () => {
+ const { colors } = useTheme();
+ const inset = useSafeAreaInsets();
+ const headerHeight = useHeaderHeight();
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1,
+ },
+ wrapperView: {
+ backgroundColor: colors.background,
+ paddingTop: headerHeight,
+ paddingBottom: inset.bottom,
+ },
+ topCurve: {
+ position: "absolute",
+ opacity: 0.2,
+ left: -75,
+ borderTopRightRadius: scale(90),
+ borderBottomEndRadius: scale(200),
+ top: -20,
+ width: scale(250),
+ height: scale(260),
+ borderRadius: 100,
+ backgroundColor: colors.curve,
+ },
+ bottomCurve: {
+ position: "absolute",
+ height: scale(185),
+ width: scale(170),
+ borderTopRightRadius: scale(110),
+ borderTopLeftRadius: scale(90),
+ borderBottomRightRadius: scale(100),
+ borderBottomLeftRadius: scale(110),
+ right: -90,
+ backgroundColor: colors.curve,
+ opacity: 0.2,
+ bottom: -80,
+ zIndex: -1,
+ },
+ });
+};
+
+export default useStyle;
diff --git a/CustomerApp/src/components/index.js b/CustomerApp/src/components/index.js
new file mode 100644
index 0000000..acd9d5e
--- /dev/null
+++ b/CustomerApp/src/components/index.js
@@ -0,0 +1,65 @@
+import CartItem from "./CartItem/CartItem";
+import {
+ CartComponent,
+ CheckComponent,
+ HeadingComponent,
+ ImageHeader,
+ RadioComponent,
+ TitleComponent,
+} from "./CustomizeComponents";
+import { DrawerProfile } from "./Drawer";
+import CheckboxBtn from "./FdCheckbox/CheckboxBtn";
+import RadioBtn from "./FdRadioBtn/RadioBtn";
+import { FdEmailBtn, FdGoogleBtn } from "./FdSocialBtn";
+import { FlashMessage } from "./FlashMessage/FlashMessage";
+import {
+ BackButton,
+ LeftButton,
+ RightButton,
+ RegistrationHeader,
+} from "./Header";
+import { MenuCard, StatusCard } from "./Menu";
+import { FilterModal } from "./Modals";
+import ActiveOrders from "./MyOrders/ActiveOrders";
+import { TrackingRider } from "./OrderDetail";
+import Sidebar from "./Sidebar/Sidebar";
+import Spinner from "./Spinner/Spinner";
+import { TextDefault, TextError, TextLine } from "./Text";
+import Triangle from "./Triangle/Triangle";
+import EnategaImage from "./EnategaImage/EnategaImage";
+import WrapperView from "./WrapperView/WrapperView";
+import { CustomIcon } from "./CustomIcon";
+
+export {
+ WrapperView,
+ CustomIcon,
+ CartItem,
+ EnategaImage,
+ CartComponent,
+ CheckComponent,
+ HeadingComponent,
+ ImageHeader,
+ RadioComponent,
+ TitleComponent,
+ DrawerProfile,
+ RadioBtn,
+ CheckboxBtn,
+ FdEmailBtn,
+ FdGoogleBtn,
+ FlashMessage,
+ BackButton,
+ LeftButton,
+ RightButton,
+ MenuCard,
+ StatusCard,
+ FilterModal,
+ RegistrationHeader,
+ ActiveOrders,
+ Sidebar,
+ Triangle,
+ TextDefault,
+ TextError,
+ TextLine,
+ Spinner,
+ TrackingRider,
+};
diff --git a/CustomerApp/src/context/Configuration.js b/CustomerApp/src/context/Configuration.js
new file mode 100644
index 0000000..03b18c4
--- /dev/null
+++ b/CustomerApp/src/context/Configuration.js
@@ -0,0 +1,32 @@
+import React from 'react'
+import { useQuery } from '@apollo/react-hooks'
+import gql from 'graphql-tag'
+import PropTypes from 'prop-types'
+
+import { getConfiguration } from '../apollo/server'
+
+const GETCONFIGURATION = gql`
+ ${getConfiguration}
+`
+
+const ConfigurationContext = React.createContext({})
+
+export const ConfigurationProvider = props => {
+ const { loading, data, error } = useQuery(GETCONFIGURATION)
+ const configuration =
+ loading || error || !data.configuration
+ ? { currency: '', currency_symbol: '', delivery_charges: 0 }
+ : data.configuration
+ return (
+
+ {props.children}
+
+ )
+}
+
+ConfigurationProvider.propTypes = {
+ children: PropTypes.node.isRequired
+}
+
+export const ConfigurationConsumer = ConfigurationContext.Consumer
+export default ConfigurationContext
diff --git a/CustomerApp/src/context/User.js b/CustomerApp/src/context/User.js
new file mode 100644
index 0000000..9090031
--- /dev/null
+++ b/CustomerApp/src/context/User.js
@@ -0,0 +1,248 @@
+import PropTypes from 'prop-types'
+import React, { useState, useEffect } from 'react'
+import { useLazyQuery, useApolloClient } from '@apollo/react-hooks'
+import gql from 'graphql-tag'
+import uuid from 'uuid'
+import { profile, myOrders, orderStatusChanged } from '../apollo/server'
+import AsyncStorage from '@react-native-async-storage/async-storage'
+
+const PROFILE = gql`
+ ${profile}
+`
+const ORDERS = gql`
+ ${myOrders}
+` // rename this 'orders' when user context is complete
+const SUBSCRIPTION_ORDERS = gql`
+ ${orderStatusChanged}
+` // rename this 'subscriptionOrders' when user context is complete
+
+const UserContext = React.createContext({})
+
+export const UserProvider = props => {
+ const client = useApolloClient()
+ const [token, setToken] = useState('')
+ const [cart, setCart] = useState([]) // use initial state of cart here
+
+ const [
+ fetchProfile,
+ {
+ called: calledProfile,
+ loading: loadingProfile,
+ error: errorProfile,
+ data: dataProfile
+ }
+ ] = useLazyQuery(PROFILE, {
+ fetchPolicy: 'network-only',
+ onCompleted,
+ onError
+ })
+ const [
+ fetchOrders,
+ {
+ called: calledOrders,
+ loading: loadingOrders,
+ error: errorOrders,
+ data: dataOrders,
+ networkStatus: networkStatusOrders,
+ fetchMore: fetchMoreOrders,
+ subscribeToMore: subscribeToMoreOrders
+ }
+ ] = useLazyQuery(ORDERS, {
+ fetchPolicy: 'network-only',
+ onCompleted,
+ onError
+ })
+
+ useEffect(() => {
+ let isSubscribed = true
+ ;(async() => {
+ const token = await AsyncStorage.getItem('token')
+ isSubscribed && setToken(token)
+ })()
+ return () => {
+ isSubscribed = false
+ }
+ }, [])
+
+ useEffect(() => {
+ if (!token) return
+ let isSubscribed = true
+ ;(async() => {
+ isSubscribed && (await fetchProfile())
+ isSubscribed && (await fetchOrders())
+ })()
+ return () => {
+ isSubscribed = false
+ }
+ }, [token])
+
+ useEffect(() => {
+ if (!dataProfile) return
+ subscribeOrders()
+ }, [dataProfile])
+
+ useEffect(() => {
+ let isSubscribed = true
+ ;(async() => {
+ const cart = await AsyncStorage.getItem('cartItems')
+ isSubscribed && setCart(cart ? JSON.parse(cart) : [])
+ })()
+ return () => {
+ isSubscribed = false
+ }
+ }, [])
+
+ function onCompleted({ profile, orders }) {}
+ function onError(error) {
+ console.log('error context', error)
+ }
+
+ const setTokenAsync = async token => {
+ await AsyncStorage.setItem('token', token)
+ setToken(token)
+ }
+
+ const logout = async() => {
+ try {
+ await AsyncStorage.removeItem('token')
+ setToken(null)
+ await client.resetStore()
+ } catch (error) {
+ console.log('error on logout', error)
+ }
+ }
+
+ const subscribeOrders = () => {
+ try {
+ const unsubscribeOrders = subscribeToMoreOrders({
+ document: SUBSCRIPTION_ORDERS,
+ variables: { userId: dataProfile.profile._id },
+ updateQuery: (prev, { subscriptionData }) => {
+ if (!subscriptionData.data) return prev
+ const { _id } = subscriptionData.data.orderStatusChanged.order
+ if (subscriptionData.data.orderStatusChanged.origin === 'new') {
+ if (prev.orders.findIndex(o => o._id === _id) > -1) return prev
+ return {
+ orders: [
+ subscriptionData.data.orderStatusChanged.order,
+ ...prev.orders
+ ]
+ }
+ } else {
+ const { orders } = prev
+ const orderIndex = orders.findIndex(o => o._id === _id)
+ if (orderIndex > -1) {
+ orders[orderIndex] =
+ subscriptionData.data.orderStatusChanged.order
+ }
+ return {
+ orders: [...orders]
+ }
+ }
+ }
+ })
+ client.onResetStore(unsubscribeOrders)
+ } catch (error) {
+ console.log('error subscribing order', error.message)
+ }
+ }
+
+ const fetchMoreOrdersFunc = () => {
+ if (networkStatusOrders === 7) {
+ fetchMoreOrders({
+ variables: { offset: dataOrders.orders.length + 1 },
+ updateQuery: (previousResult, { fetchMoreResult }) => {
+ // Don't do anything if there weren't any new items
+ if (!fetchMoreResult || fetchMoreResult.orders.length === 0) {
+ return previousResult
+ }
+ // setOrders(previousResult.orders.concat(fetchMoreResult.orders))
+ return {
+ // Append the new feed results to the old one
+ orders: previousResult.orders.concat(fetchMoreResult.orders)
+ }
+ }
+ })
+ }
+ }
+
+ const clearCart = async() => {
+ setCart([])
+ await AsyncStorage.setItem('cartItems', JSON.stringify([]))
+ }
+
+ const addQuantity = async(key, quantity = 1) => {
+ const cartIndex = cart.findIndex(c => c.key === key)
+ cart[cartIndex].quantity += quantity
+ setCart([...cart])
+ await AsyncStorage.setItem('cartItems', JSON.stringify([...cart]))
+ }
+
+ const removeQuantity = async key => {
+ const cartIndex = cart.findIndex(c => c.key === key)
+ cart[cartIndex].quantity -= 1
+ setCart([...cart.filter(c => c.quantity > 0)])
+ await AsyncStorage.setItem(
+ 'cartItems',
+ JSON.stringify(cart.filter(c => c.quantity > 0))
+ )
+ }
+
+ const addCartItem = async(_id, variation, quantity = 1, addons = []) => {
+ const index = cart.findIndex(f => f._id === _id)
+ if (index < 0) {
+ cart.push({
+ key: uuid.v4(),
+ _id,
+ quantity: quantity,
+ variation: {
+ _id: variation
+ },
+ addons
+ })
+ } else {
+ cart[index].quantity += 1
+ }
+ await AsyncStorage.setItem('cartItems', JSON.stringify([...cart]))
+ setCart([...cart])
+ }
+
+ const updateCart = async cart => {
+ setCart(cart)
+ await AsyncStorage.setItem('cartItems', JSON.stringify(cart))
+ }
+
+ return (
+
+ {props.children}
+
+ )
+}
+
+UserProvider.propTypes = {
+ children: PropTypes.node
+}
+export const UserConsumer = UserContext.Consumer
+export default UserContext
diff --git a/CustomerApp/src/routes/index.js b/CustomerApp/src/routes/index.js
new file mode 100755
index 0000000..ee72b73
--- /dev/null
+++ b/CustomerApp/src/routes/index.js
@@ -0,0 +1,360 @@
+/* eslint-disable react/prop-types */
+import { createDrawerNavigator } from "@react-navigation/drawer";
+import { NavigationContainer, useTheme } from "@react-navigation/native";
+import { createStackNavigator } from "@react-navigation/stack";
+import * as Notifications from "expo-notifications";
+import React, { useEffect } from "react";
+import { Text, useColorScheme, View } from "react-native";
+import Animated from "react-native-reanimated";
+import {
+ initialWindowMetrics,
+ SafeAreaProvider,
+} from "react-native-safe-area-context";
+import { TextDefault, LeftButton, Sidebar } from "../components";
+import Menu from "../screens/Menu/Menu";
+import MenuItems from "../screens/MenuItems/MenuItems";
+import Addresses from "../screens/Addresses/Addresses";
+import NewAddress from "../screens/NewAddress/NewAddress";
+import EditAddress from "../screens/EditAddress/EditAddress";
+import Cart from "../screens/Cart/Cart";
+import Profile from "../screens/Profile/Profile";
+import FullMap from "../screens/FullMap/FullMap";
+import CartAddress from "../screens/CartAddress/CartAddress";
+import SelectVoucher from "../screens/Coupon/Coupon";
+import Help from "../screens/Help/Help";
+import HelpBrowser from "../screens/HelpBrowser/HelpBrowser";
+import Chat from "../screens/Chat/Chat";
+import Settings from "../screens/Settings/Settings";
+import Paypal from "../screens/Paypal/Paypal";
+import ItemDetail from "../screens/ItemDetail/ItemDetail";
+import MyOrders from "../screens/MyOrders/MyOrders";
+import OrderDetail from "../screens/OrderDetail/OrderDetail";
+import StripeCheckout from "../screens/Stripe/StripeCheckout";
+import RateAndReview from "../screens/RateAndReview/RateAndReview";
+import CreateAccount from "../screens/CreateAccount/CreateAccount";
+import Login from "../screens/Login/Login";
+import Register from "../screens/Register/Register";
+import ForgotPassword from "../screens/ForgotPassword/ForgotPassword";
+
+// import {
+// Addresses,
+// Cart,
+// CartAddress,
+// Chat,
+// CreateAccount,
+// EditAddress,
+// ForgotPassword,
+// FullMap,
+// Help,
+// HelpBrowser,
+// ItemDetail,
+// Login,
+// MenuItems,
+// MyOrders,
+// NewAddress,
+// OrderDetail,
+// Paypal,
+// Profile,
+// RateAndReview,
+// Register,
+// SelectVoucher,
+// Settings,
+// StripeCheckout,
+// Menu,
+// } from "../screens";
+
+import { THEME } from "../Theme";
+import { ICONS_NAME, NAVIGATION_SCREEN } from "../utils/constant";
+import navigationService from "./navigationService";
+import screenOptions from "./screenOptions";
+import styles from "./styles";
+
+const NavigationStack = createStackNavigator();
+const MainStack = createStackNavigator();
+const SideDrawer = createDrawerNavigator();
+
+function Drawer() {
+ const { colors } = useTheme();
+ let animatedStyle = {};
+ let opacity;
+ let OuterWindowSlide, InnerWindowSlide;
+ return (
+ {
+ const scale = Animated.interpolateNode(props.progress, {
+ inputRange: [0, 1],
+ outputRange: [1, 0.7],
+ });
+ const Animatedopacity = Animated.interpolateNode(props.progress, {
+ inputRange: [0, 0.6, 1],
+ outputRange: [0, 0, 1],
+ });
+ const AnimatedOuterSlide = Animated.interpolateNode(props.progress, {
+ inputRange: [0, 1],
+ outputRange: [0, -35],
+ });
+ const AnimatedInnerSlide = Animated.interpolateNode(props.progress, {
+ inputRange: [0, 1],
+ outputRange: [0, -15],
+ });
+ const borderRadius = Animated.interpolateNode(props.progress, {
+ inputRange: [0, 1],
+ outputRange: [0, 20],
+ });
+ animatedStyle = { borderRadius, transform: [{ scale }] };
+ opacity = Animatedopacity;
+ OuterWindowSlide = AnimatedOuterSlide;
+ InnerWindowSlide = AnimatedInnerSlide;
+
+ return ;
+ }}
+ >
+
+ {(props) => (
+
+ )}
+
+
+ );
+}
+
+function NoDrawer({ style, opacity = 1, OuterWindowSlide, InnerWindowSlide }) {
+ const { colors } = useTheme();
+
+ return (
+
+
+
+
+
+ ,
+ }}
+ />
+
+
+ ,
+ }}
+ />
+ ,
+ }}
+ />
+
+
+
+
+
+ ,
+ }}
+ />
+ ,
+ }}
+ />
+
+ ,
+ }}
+ />
+
+
+ ,
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+ {"Close X"}
+
+
+
+ );
+}
+
+function AppContainer() {
+ console.log("AppContainer Working");
+ const colorScheme = useColorScheme();
+ function _handleNotification(notification) {
+ try {
+ if (notification.origin === "selected") {
+ if (notification.data.order) {
+ navigationService.navigate(NAVIGATION_SCREEN.OrderDetail, {
+ _id: notification.data._id,
+ });
+ }
+ }
+ } catch (e) {
+ console.log(e);
+ }
+ }
+ useEffect(() => {
+ Notifications.setNotificationHandler({
+ handleNotification: async () => ({
+ shouldShowAlert: true,
+ shouldPlaySound: false,
+ shouldSetBadge: false,
+ }),
+ });
+ const subscription =
+ Notifications.addNotificationResponseReceivedListener(
+ _handleNotification
+ );
+ return () => subscription.remove();
+ }, []);
+ return (
+
+ {
+ navigationService.setGlobalRef(ref);
+ Notifications.addNotificationReceivedListener(_handleNotification);
+ }}
+ >
+
+
+
+
+
+ );
+}
+
+export default AppContainer;
diff --git a/CustomerApp/src/routes/navigationService.js b/CustomerApp/src/routes/navigationService.js
new file mode 100644
index 0000000..7354a34
--- /dev/null
+++ b/CustomerApp/src/routes/navigationService.js
@@ -0,0 +1,27 @@
+let navObj = null
+
+function setGlobalRef(ref) {
+ navObj = ref
+}
+
+function navigate(path, props = {}) {
+ navObj.navigate(path, props)
+}
+
+function goBack() {
+ navObj.goBack()
+}
+
+function currentRoute() {
+ if (navObj !== null && typeof navObj !== 'undefined') {
+ return navObj.getCurrentRoute()
+ } else {
+ return null
+ }
+}
+export default {
+ currentRoute,
+ setGlobalRef,
+ navigate,
+ goBack
+}
diff --git a/CustomerApp/src/routes/screenOptions.js b/CustomerApp/src/routes/screenOptions.js
new file mode 100644
index 0000000..9709b98
--- /dev/null
+++ b/CustomerApp/src/routes/screenOptions.js
@@ -0,0 +1,41 @@
+/* eslint-disable react/prop-types */
+import { TransitionPresets } from '@react-navigation/stack'
+import PropTypes from 'prop-types'
+import React from 'react'
+import {
+ LeftButton,
+ RightButton
+} from '../components/Header/HeaderIcons/HeaderIcons'
+import { ICONS_NAME } from '../utils/constant'
+import { scale } from '../utils/scaling'
+import { textStyles } from '../utils/textStyles'
+
+const screenOptions = props => ({
+ headerTitleAlign: 'center',
+ headerBackTitleVisible: false,
+ headerTransparent: true,
+ headerStyle: {
+ elevation: 0,
+ shadowOpacity: 0,
+ borderBottomWidth: 0
+ },
+ headerTitleStyle: {
+ color: props.textColor,
+ ...textStyles.H4,
+ ...textStyles.Bold,
+ backgroundColor: 'transparent'
+ },
+ headerTitleContainerStyle: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ marginHorizontal: scale(80)
+ },
+ headerLeft: () => ,
+ headerRight: () => ,
+ ...TransitionPresets.SlideFromRightIOS
+})
+
+screenOptions.propTypes = {
+ textColor: PropTypes.string
+}
+export default screenOptions
diff --git a/CustomerApp/src/routes/styles.js b/CustomerApp/src/routes/styles.js
new file mode 100644
index 0000000..4ff8839
--- /dev/null
+++ b/CustomerApp/src/routes/styles.js
@@ -0,0 +1,56 @@
+import { StyleSheet } from 'react-native'
+
+const styles = StyleSheet.create({
+ outerView: {
+ position: 'absolute',
+ width: '100%',
+ height: '80%',
+ top: '10%',
+ left: 10,
+ bottom: 0,
+ backgroundColor: 'rgba(243, 244, 245, 0.8)',
+ shadowColor: 'black',
+ shadowOffset: {
+ width: 0,
+ height: 5
+ },
+ shadowOpacity: 0.3,
+ shadowRadius: 3,
+ elevation: 10
+ },
+ innerView: {
+ position: 'absolute',
+ width: '100%',
+ height: '90%',
+ top: '5%',
+ bottom: 0,
+ backgroundColor: 'rgba(251, 251, 252, 0.95)',
+ shadowColor: '#000',
+ shadowOffset: {
+ width: 0,
+ height: 5
+ },
+ shadowOpacity: 0.3,
+ shadowRadius: 3,
+ elevation: 10
+ },
+ animatedView: {
+ flex: 1,
+ overflow: 'hidden',
+ shadowColor: '#000',
+ shadowOffset: {
+ width: 0,
+ height: 5
+ },
+ shadowOpacity: 1,
+ shadowRadius: 10,
+ elevation: 15
+ },
+ closeView: {
+ position: 'absolute',
+ top: 70,
+ left: 50
+ }
+})
+
+export default styles
diff --git a/CustomerApp/src/screens/Addresses/Addresses.js b/CustomerApp/src/screens/Addresses/Addresses.js
new file mode 100644
index 0000000..a11b548
--- /dev/null
+++ b/CustomerApp/src/screens/Addresses/Addresses.js
@@ -0,0 +1,194 @@
+import { useMutation } from "@apollo/react-hooks";
+import { useNavigation, useTheme } from "@react-navigation/native";
+import gql from "graphql-tag";
+import React, { useContext, useLayoutEffect } from "react";
+import { FlatList, TouchableOpacity, View } from "react-native";
+import i18n from "../../../i18n";
+import { deleteAddress } from "../../apollo/server";
+import EmptyAddress from "../../assets/images/SVG/imageComponents/EmptyAddress";
+import {
+ CustomIcon,
+ RightButton,
+ TextDefault,
+ WrapperView,
+} from "../../components";
+import UserContext from "../../context/User";
+import { COLORS } from "../../Theme";
+import { alignment } from "../../utils/alignment";
+import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import useStyle from "./styles";
+
+const DELETE_ADDRESS = gql`
+ ${deleteAddress}
+`;
+
+function Addresses() {
+ const styles = useStyle();
+ const { colors } = useTheme();
+ const navigation = useNavigation();
+ const { profile } = useContext(UserContext);
+ const [mutate, { loading: loadingMutation }] = useMutation(DELETE_ADDRESS);
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: i18n.t("myAddresses"),
+ headerRight: () => (
+ navigation.navigate(NAVIGATION_SCREEN.NewAddress)}
+ />
+ ),
+ });
+ }, [navigation]);
+
+ const addressIcons = {
+ Home: ICONS_NAME.Home,
+ Work: ICONS_NAME.Cart,
+ Other: ICONS_NAME.Location,
+ };
+
+ const colorIcons = {
+ Other: COLORS.primary,
+ Home: COLORS.redishPink,
+ Work: COLORS.primaryLightBlue,
+ };
+
+ const emptyView = React.memo(() => {
+ return (
+
+
+
+
+
+
+ No Addresses found.
+
+
+
+ You haven't saved any address yet.
+ {"\n"}
+ Click Add New Address to get started
+
+
+ navigation.navigate(NAVIGATION_SCREEN.NewAddress)}
+ >
+
+ Add New Address
+
+
+
+
+ );
+ });
+ return (
+
+
+ 0
+ ? styles.contentContainer
+ : { flexGrow: 1 }
+ }
+ ListEmptyComponent={emptyView}
+ // keyExtractor={(item) => item._id}
+ keyExtractor={(item, index) => String(index)}
+ ItemSeparatorComponent={() => }
+ ListHeaderComponent={() => }
+ renderItem={({ item: address }) => (
+ {
+ navigation.navigate(NAVIGATION_SCREEN.EditAddress, {
+ ...address,
+ });
+ }}
+ >
+
+
+
+
+ {address.label}
+
+
+
+ {
+ navigation.navigate(NAVIGATION_SCREEN.EditAddress, {
+ ...address,
+ });
+ }}
+ >
+
+
+
+ {
+ mutate({ variables: { id: address._id } });
+ }}
+ >
+
+
+
+
+
+
+
+ {address.delivery_address}, {address.details}
+
+
+
+ )}
+ />
+
+ All rights are reserved by Enatega
+
+
+
+ );
+}
+export default React.memo(Addresses);
diff --git a/CustomerApp/src/screens/Addresses/styles.js b/CustomerApp/src/screens/Addresses/styles.js
new file mode 100644
index 0000000..e2bef09
--- /dev/null
+++ b/CustomerApp/src/screens/Addresses/styles.js
@@ -0,0 +1,86 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ containerInfo: {
+ flex: 1,
+ width: '100%',
+ alignItems: 'center'
+ },
+ contentContainer: {
+ flexGrow: 1,
+ backgroundColor: colors.cardContainer,
+ shadowOffset: { width: 2, height: 2 },
+ shadowColor: colors.white,
+ shadowOpacity: 0.2,
+ shadowRadius: 12,
+ elevation: 3,
+ borderRadius: moderateScale(18),
+ ...alignment.Mlarge,
+ ...alignment.Plarge
+ },
+ image: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.MBlarge
+ },
+ descriptionEmpty: {
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ width100: {
+ width: '100%'
+ },
+ titleAddress: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center'
+ },
+ iconButton: {
+ width: scale(28),
+ aspectRatio: 1,
+ backgroundColor: colors.lightBackground,
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: scale(8),
+ elevation: 3,
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1)
+ },
+ adressBtn: {
+ backgroundColor: colors.blueColor,
+ height: scale(50),
+ borderRadius: 10,
+ width: '80%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.MTlarge
+ },
+ addressDetail: {
+ width: '100%',
+ alignSelf: 'center',
+ ...alignment.PTsmall
+ },
+ line: {
+ width: '100%',
+ alignSelf: 'center',
+ borderBottomColor: colors.horizontalLine,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ ...alignment.MTsmall,
+ ...alignment.MBmedium
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js b/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js
new file mode 100644
index 0000000..d3d02bb
--- /dev/null
+++ b/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js
@@ -0,0 +1,95 @@
+/* eslint-disable react/prop-types */
+import AppLoading from 'expo-app-loading'
+import { Asset } from 'expo-asset'
+import Constants from 'expo-constants'
+import * as SplashScreen from 'expo-splash-screen'
+import React, { useEffect, useMemo, useState } from 'react'
+import { Animated, StyleSheet, View } from 'react-native'
+
+function AnimatedSplashScreen({ children, image }) {
+ const animation = useMemo(() => new Animated.Value(1), [])
+ const [isAppReady, setAppReady] = useState(false)
+ const [animationCompleted, setAnimationCompleted] = useState(false)
+
+ useEffect(() => {
+ if (isAppReady) {
+ Animated.timing(animation, {
+ toValue: 0,
+ duration: 1000,
+ useNativeDriver: false
+ }).start(() => setAnimationCompleted(true))
+ }
+ }, [isAppReady])
+
+ const onImageLoaded = useMemo(() => async() => {
+ try {
+ await SplashScreen.hideAsync()
+ // Load stuff
+ await Promise.all([])
+ } catch (e) {
+ // handle errors
+ } finally {
+ setAppReady(true)
+ }
+ })
+
+ return (
+
+ {isAppReady && children}
+ {!animationCompleted && (
+
+
+
+ )}
+
+ )
+}
+
+function AnimatedSplash({ children, image }) {
+ const [isSplashReady, setSplashReady] = useState(false)
+
+ const startAsync = useMemo(
+ // Load splash image to show
+ () => () => Asset.fromModule(image).downloadAsync(),
+ [image]
+ )
+
+ const onFinish = useMemo(() => setSplashReady(true), [])
+
+ if (!isSplashReady) {
+ return (
+
+ )
+ }
+
+ return {children}
+}
+
+export default React.memo(AnimatedSplash)
diff --git a/CustomerApp/src/screens/Cart/Cart.js b/CustomerApp/src/screens/Cart/Cart.js
new file mode 100755
index 0000000..e2b79af
--- /dev/null
+++ b/CustomerApp/src/screens/Cart/Cart.js
@@ -0,0 +1,793 @@
+import { useApolloClient, useMutation } from '@apollo/react-hooks'
+import { AntDesign } from '@expo/vector-icons'
+import {
+ useIsFocused,
+ useNavigation,
+ useRoute,
+ useTheme
+} from '@react-navigation/native'
+import gql from 'graphql-tag'
+import React, {
+ useContext,
+ useEffect,
+ useLayoutEffect,
+ useRef,
+ useState
+} from 'react'
+import {
+ ActivityIndicator,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import { showMessage } from 'react-native-flash-message'
+import { Modalize } from 'react-native-modalize'
+import i18n from '../../../i18n'
+import { foodByIds, getCoupon, myOrders, placeOrder } from '../../apollo/server'
+import EmptyCart from '../../assets/images/SVG/imageComponents/EmptyCart'
+import {
+ CartItem,
+ CustomIcon,
+ FlashMessage,
+ Spinner,
+ TextDefault,
+ Triangle,
+ WrapperView
+} from '../../components'
+import PaymentModal from '../../components/Modals/PaymentModal/PaymentModal'
+import ConfigurationContext from '../../context/Configuration'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import Analytics from '../../utils/analytics'
+import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant'
+import { paypalCurrencies, stripeCurrencies } from '../../utils/currencies'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const FOOD_BY_IDS = gql`
+ ${foodByIds}
+`
+const GET_COUPON = gql`
+ ${getCoupon}
+`
+const PLACEORDER = gql`
+ ${placeOrder}
+`
+
+const ORDERS = gql`
+ ${myOrders}
+`
+
+function Cart() {
+ const route = useRoute()
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const client = useApolloClient()
+ const isFocused = useIsFocused()
+ const navigation = useNavigation()
+ const configuration = useContext(ConfigurationContext)
+ const {
+ isLoggedIn,
+ profile,
+ cart,
+ addQuantity: addQuantityContext,
+ removeQuantity,
+ updateCart
+ } = useContext(UserContext)
+
+ const [foods, setFoods] = useState([])
+ const [coupon, setCoupon] = useState('')
+ const [discountPercent, setDiscountPercent] = useState(null)
+ const [validCoupon, setValidCoupon] = useState(null)
+ const [loadingData, setLoadingData] = useState(true)
+ const [paymentMethod, setPaymentMethod] = useState(null)
+ const modalizeRef = useRef(null)
+
+ // const closeModal = () => {
+ // modalizeRef.current.close()
+ // }
+
+ const [mutate] = useMutation(GET_COUPON, {
+ onCompleted,
+ onError
+ })
+ const [mutateOrder, { loading: loadingOrderMutation }] = useMutation(
+ PLACEORDER,
+ {
+ update,
+ onCompleted: placeOrderCompleted,
+ errorPlaceOrder
+ }
+ )
+
+ const COD_PAYMENT = {
+ payment: 'COD',
+ label: i18n.t('cod'),
+ index: 2,
+ icon: ICONS_NAME.Cash,
+ iconSize: scale(25)
+ }
+ const payObj = route.params ? route.params.PayObject : null
+ const coupanObj = route.params ? route.params.CoupanObject : null
+
+ const address =
+ isLoggedIn && profile.addresses
+ ? profile.addresses.filter(a => a.selected)[0]
+ : null
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: i18n.t('titleCart'),
+ headerRight: null
+ })
+ }, [navigation])
+
+ useEffect(() => {
+ didFocus()
+ }, [])
+
+ useEffect(() => {
+ if (coupanObj !== null && typeof coupanObj !== 'undefined') {
+ mutate({ variables: { coupon: coupanObj } })
+ setCoupon(coupanObj)
+ setValidCoupon(null)
+ setDiscountPercent(null)
+ }
+ }, [coupanObj])
+
+ useEffect(() => {
+ setPaymentMethod(payObj || COD_PAYMENT)
+ }, [payObj])
+
+ const paymentChange = payObj => {
+ setPaymentMethod(payObj || COD_PAYMENT)
+ }
+
+ function update(cache, { data: { placeOrder } }) {
+ if (placeOrder && placeOrder.payment_method === 'COD') {
+ const data = cache.readQuery({ query: ORDERS })
+ // console.log('placeorder', placeOrder)
+ if (data) {
+ cache.writeQuery({
+ query: ORDERS,
+ data: { orders: [placeOrder, ...data.orders] }
+ })
+ }
+ }
+ }
+
+ function placeOrderCompleted(data) {
+ const trackingOpts = {
+ id: data.placeOrder.user._id,
+ usernameOrEmail: data.placeOrder.user.email,
+ orderId: data.placeOrder.order_id
+ }
+ Analytics.identify(data.placeOrder.user._id, trackingOpts)
+ Analytics.track(Analytics.events.USER_PLACED_ORDER, trackingOpts)
+ if (paymentMethod.payment === 'COD') {
+ navigation.reset({
+ routes: [
+ { name: 'Menu' },
+ {
+ name: 'OrderDetail',
+ params: { _id: data.placeOrder._id, clearCart: true }
+ }
+ ]
+ })
+ } else if (paymentMethod.payment === 'PAYPAL') {
+ navigation.replace('Paypal', {
+ _id: data.placeOrder.order_id,
+ currency: configuration.currency
+ })
+ } else if (paymentMethod.payment === 'STRIPE') {
+ navigation.replace('StripeCheckout', {
+ _id: data.placeOrder.order_id,
+ amount: data.placeOrder.order_amount,
+ email: data.placeOrder.user.email,
+ currency: configuration.currency
+ })
+ }
+ }
+ function errorPlaceOrder(error) {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message
+ })
+ }
+
+ function onCompleted({ coupon }) {
+ if (coupon) {
+ if (coupon.enabled) {
+ setDiscountPercent(coupon.discount)
+ setValidCoupon(coupon.code)
+
+ FlashMessage({
+ message: i18n.t('coupanApply')
+ })
+ } else {
+ FlashMessage({
+ message: i18n.t('coupanFailed')
+ })
+ }
+ }
+ }
+
+ function onError(error) {
+ showMessage({
+ message: `${error}`,
+ type: 'none',
+ style: { width: '80%' }
+ })
+ }
+
+ async function addQuantity(key) {
+ const cartIndex = cart.findIndex(c => c.key === key)
+ const food = foods.find(f => f._id === cart[cartIndex]._id)
+ if (food.stock > cart[cartIndex].quantity) {
+ await addQuantityContext(key)
+ } else {
+ FlashMessage({
+ message: 'No more items in stock'
+ })
+ }
+ }
+
+ function calculatePrice(deliveryCharges = 0, withDiscount) {
+ let itemTotal = 0
+ cart.forEach(cartItem => {
+ if (!cartItem.price) {
+ return
+ }
+ itemTotal += cartItem.price * cartItem.quantity
+ })
+ if (withDiscount && discountPercent) {
+ itemTotal = itemTotal - (discountPercent / 100) * itemTotal
+ }
+ return (itemTotal + deliveryCharges).toFixed(2)
+ }
+
+ const onClose = () => {
+ modalizeRef.current?.close()
+ }
+
+ function validateOrder() {
+ if (!cart.length) {
+ FlashMessage({
+ message: i18n.t('validateItems')
+ })
+ return false
+ }
+ if (!address) {
+ FlashMessage({
+ message: i18n.t('validateDelivery')
+ })
+ return false
+ }
+ if (!paymentMethod) {
+ FlashMessage({
+ message: 'Set payment method before checkout'
+ })
+ return false
+ }
+ if (profile.phone.length < 1) {
+ navigation.navigate(NAVIGATION_SCREEN.Profile, { backScreen: 'Cart' })
+ return false
+ }
+ return true
+ }
+
+ function checkPaymentMethod(currency) {
+ if (paymentMethod.payment === 'STRIPE') {
+ return stripeCurrencies.find(val => val.currency === currency)
+ }
+ if (paymentMethod.payment === 'PAYPAL') {
+ return paypalCurrencies.find(val => val.currency === currency)
+ }
+ return true
+ }
+
+ function transformOrder(cartData) {
+ return cartData.map(food => {
+ return {
+ food: food._id,
+ quantity: food.quantity,
+ variation: food.variation._id,
+ addons: food.addons
+ ? food.addons.map(({ _id, options }) => ({
+ _id,
+ options: options.map(({ _id }) => _id)
+ }))
+ : []
+ }
+ })
+ }
+
+ async function onPayment() {
+ if (checkPaymentMethod(configuration.currency)) {
+ const items = transformOrder(cart)
+ mutateOrder({
+ variables: {
+ orderInput: items,
+ paymentMethod: paymentMethod.payment,
+ couponCode: coupon,
+ address: {
+ label: address.label,
+ delivery_address: address.delivery_address,
+ details: address.details,
+ longitude: address.longitude,
+ latitude: address.latitude
+ }
+ }
+ })
+ } else {
+ FlashMessage({
+ message: i18n.t('paymentNotSupported')
+ })
+ }
+ }
+
+ async function didFocus() {
+ try {
+ const validatedItems = []
+ if (cart && cart.length) {
+ const ids = cart.map(({ _id }) => _id)
+ const {
+ data: { foodByIds }
+ } = await client.query({
+ query: FOOD_BY_IDS,
+ variables: { ids },
+ fetchPolicy: 'network-only'
+ })
+ const transformCart = cart.map(cartItem => {
+ const food = foodByIds.find(food => food._id === cartItem._id)
+ if (!food) return null
+ const variation = food.variations.find(
+ variation => variation._id === cartItem.variation._id
+ )
+ if (!variation) return null
+ if (!food.stock) return null
+ if (food.stock < cartItem.quantity) {
+ cartItem.quantity = food.stock
+ }
+ const title = `${food.title}(${variation.title})`
+ let price = variation.price
+ if (cartItem.addons) {
+ cartItem.addons.forEach(addon => {
+ const cartAddon = variation.addons.find(
+ add => add._id === addon._id
+ )
+ addon.options.forEach(option => {
+ const optionfound = cartAddon.options.find(
+ opt => opt._id === option._id
+ )
+ price += optionfound.price
+ })
+ })
+ }
+ validatedItems.push(cartItem)
+ return {
+ ...cartItem,
+ img_url: food.img_url,
+ title: title,
+ price: price.toFixed(2)
+ }
+ })
+
+ if (isFocused) {
+ await updateCart(transformCart.filter(item => item))
+ setFoods(foodByIds)
+ setLoadingData(false)
+ }
+ } else {
+ if (isFocused) {
+ setLoadingData(false)
+ }
+ }
+ } catch (e) {
+ FlashMessage({
+ message: e.message
+ })
+ }
+ }
+
+ function emptyCart() {
+ if (loadingData) {
+ return
+ } else {
+ return (
+
+
+
+
+
+
+ {i18n.t('emptyCart')}
+
+
+ {i18n.t('hungry')}?
+
+
+ navigation.navigate(NAVIGATION_SCREEN.Menu)}>
+
+ {i18n.t('emptyCartBtn')}
+
+
+
+ )
+ }
+ }
+
+ return (
+
+
+ {!cart.length && emptyCart()}
+ {!!cart.length && (
+ <>
+
+
+ {cart.map(food => (
+
+ {food.price && food.title ? (
+ {
+ addQuantity(food.key)
+ }}
+ removeQuantity={() => {
+ removeQuantity(food.key)
+ }}
+ />
+ ) : (
+
+ )}
+
+ ))}
+
+
+
+
+ {i18n.t('subTotal')}
+
+
+ {configuration.currency_symbol}
+ {calculatePrice(0, false)}
+
+
+
+
+ {i18n.t('deliveryFee')}
+
+
+ {configuration.currency_symbol}
+ {configuration.delivery_charges.toFixed(2)}
+
+
+ {!validCoupon ? (
+ {
+ navigation.navigate(NAVIGATION_SCREEN.Coupon)
+ // alert('asd')
+ }}>
+
+ {i18n.t('haveVoucher')}?
+
+
+ ) : (
+
+
+ {validCoupon}
+
+
+ {
+ setCoupon('')
+ setValidCoupon(null)
+ setDiscountPercent(null)
+ }}>
+
+ {validCoupon}
+
+
+
+ -{configuration.currency_symbol}
+ {parseFloat(
+ calculatePrice(0, false) - calculatePrice(0, true)
+ ).toFixed(2)}
+
+
+
+ )}
+
+
+
+ Total
+
+
+ {configuration.currency_symbol}
+ {calculatePrice(configuration.delivery_charges, true)}{' '}
+
+
+
+ {Array(20)
+ .fill(1)
+ .map((value, index) => (
+
+ ))}
+
+
+
+ {isLoggedIn && profile && (
+ <>
+
+
+
+ {i18n.t('contactInfo')}
+
+
+
+
+ {i18n.t('phone')}
+
+
+ {profile.phone ? profile.phone : 'None'}
+
+
+
+
+ {i18n.t('email')}
+
+
+ {profile.email}
+
+
+
+
+ {
+ if (!profile.addresses.length) {
+ navigation.navigate(NAVIGATION_SCREEN.NewAddress, {
+ backScreen: 'Cart'
+ })
+ } else {
+ navigation.navigate(NAVIGATION_SCREEN.CartAddress, {
+ address
+ })
+ }
+ }}>
+
+
+ {i18n.t('deliveryAddress')}
+
+
+ Change
+
+
+ {address ? (
+ <>
+ {`${address.delivery_address}`}
+
+ {address.details}
+
+ >
+ ) : (
+
+ {i18n.t('deliveryAddressmessage')}
+
+ )}
+
+
+
+
+
+ {i18n.t('paymentMethod')}
+
+ {
+ // navigation.navigate(NAVIGATION_SCREEN.Payment, {
+ // payment: paymentMethod
+ // })
+ modalizeRef.current.open()
+ }}>
+
+ {i18n.t('change')}
+
+
+
+ {paymentMethod === null ? (
+ {
+ navigation.navigate(NAVIGATION_SCREEN.Payment, {
+ payment: paymentMethod
+ })
+ }}>
+
+
+ {i18n.t('paymentMethod')}
+
+
+ ) : (
+ {
+ navigation.navigate(NAVIGATION_SCREEN.Payment, {
+ payment: paymentMethod
+ })
+ }}>
+
+
+
+
+ {paymentMethod.label}
+
+
+ {configuration.currency_symbol}
+ {calculatePrice(configuration.delivery_charges, true)}
+
+
+ )}
+
+ >
+ )}
+
+
+ {i18n.t('condition1')}
+
+
+
+
+
+ {isLoggedIn && profile ? (
+ {
+ if (validateOrder()) onPayment()
+ }}
+ style={styles.button}>
+ {loadingOrderMutation ? (
+
+ ) : (
+
+ {i18n.t('orderBtn')}
+
+ )}
+
+ ) : (
+ {
+ navigation.navigate(NAVIGATION_SCREEN.CreateAccount)
+ }}
+ style={styles.button}>
+
+ {i18n.t('loginOrCreateAccount')}
+
+
+ )}
+
+ >
+ )}
+
+
+
+
+
+ )
+}
+
+export default Cart
diff --git a/CustomerApp/src/screens/Cart/styles.js b/CustomerApp/src/screens/Cart/styles.js
new file mode 100755
index 0000000..78dc4ab
--- /dev/null
+++ b/CustomerApp/src/screens/Cart/styles.js
@@ -0,0 +1,128 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { COLORS } from '../../Theme/Colors'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ pT10: {
+ ...alignment.PTsmall
+ },
+ pB10: {
+ ...alignment.PBsmall
+ },
+ pB5: {
+ ...alignment.PBxSmall
+ },
+ mB10: {
+ ...alignment.MBsmall
+ },
+ width100: {
+ width: '100%'
+ },
+ mainContainer: {
+ flex: 1,
+ ...alignment.PTsmall,
+ backgroundColor: 'transparent'
+ },
+ dealContainer: {
+ width: '100%',
+ backgroundColor: 'transparent'
+ },
+ termsContainer: {
+ width: '90%',
+ alignSelf: 'center',
+ backgroundColor: 'transparent',
+ borderRadius: scale(5)
+ },
+ contactContainer: {
+ width: '100%',
+ alignSelf: 'center',
+ backgroundColor: colors.lightBackground,
+ borderRadius: 20,
+ padding: scale(15)
+ },
+ itemContainer: {
+ width: '100%',
+ backgroundColor: 'transparent'
+ },
+ priceContainer: {
+ width: '100%',
+ alignSelf: 'center',
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.lightBackground,
+ borderBottomColor: colors.horizontalLine,
+ ...alignment.PLmedium,
+ ...alignment.PRmedium,
+ ...alignment.PTmedium
+ },
+ floatView: {
+ width: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between'
+ },
+ floatRight: {
+ width: '70%',
+ textAlign: 'right'
+ },
+ horizontalLine: {
+ borderBottomColor: COLORS.primaryBlue,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderRadius: 1,
+ borderStyle: 'solid',
+ width: '100%'
+ },
+ buttonContainer: {
+ width: '90%',
+ height: '10%',
+ alignSelf: 'center',
+ backgroundColor: 'transparent',
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ button: {
+ width: '100%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.buttonBackgroundBlue,
+ height: '75%',
+ maxHeight: scale(50),
+ borderRadius: moderateScale(18),
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+
+ subContainerImage: {
+ flex: 1,
+ justifyContent: 'center',
+ alignContent: 'center'
+ },
+ imageContainer: {
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ descriptionEmpty: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.Plarge
+ },
+ emptyButton: {
+ width: '70%',
+ height: scale(50),
+ backgroundColor: colors.blueColor,
+ justifyContent: 'center',
+ alignItems: 'center',
+ alignSelf: 'center',
+ borderRadius: moderateScale(20),
+ ...alignment.MTlarge
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/CartAddress/CartAddress.js b/CustomerApp/src/screens/CartAddress/CartAddress.js
new file mode 100644
index 0000000..2c129ef
--- /dev/null
+++ b/CustomerApp/src/screens/CartAddress/CartAddress.js
@@ -0,0 +1,135 @@
+import { useMutation } from "@apollo/react-hooks";
+import { useNavigation, useTheme } from "@react-navigation/native";
+import gql from "graphql-tag";
+import React, { useContext, useLayoutEffect } from "react";
+import { FlatList, TouchableOpacity, View } from "react-native";
+import i18n from "../../../i18n";
+import { selectAddress } from "../../apollo/server";
+import {
+ CustomIcon,
+ RightButton,
+ TextDefault,
+ WrapperView,
+} from "../../components";
+import RadioButton from "../../components/FdRadioBtn/RadioBtn";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import useStyle from "./styles";
+
+const SELECT_ADDRESS = gql`
+ ${selectAddress}
+`;
+
+function CartAddresses() {
+ const { colors } = useTheme();
+ const styles = useStyle();
+ const navigation = useNavigation();
+ const { profile } = useContext(UserContext);
+
+ const [mutate] = useMutation(SELECT_ADDRESS, { onError });
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: i18n.t("myAddresses"),
+ headerRight: () => (
+ navigation.navigate(NAVIGATION_SCREEN.NewAddress)}
+ />
+ ),
+ });
+ }, [navigation]);
+
+ function onError(error) {
+ console.log(error);
+ }
+
+ const onSelectAddress = (address) => {
+ mutate({ variables: { id: address._id } });
+ navigation.goBack();
+ };
+
+ return (
+
+
+ String(index)}
+ contentContainerStyle={styles.contentContainer}
+ ItemSeparatorComponent={() => }
+ ListHeaderComponent={() => }
+ renderItem={({ item: address }) => (
+
+ {
+ onSelectAddress(address);
+ }}
+ >
+
+
+
+ {
+ onSelectAddress(address);
+ }}
+ />
+
+
+ {address.label}
+
+
+ navigation.navigate(NAVIGATION_SCREEN.EditAddress, {
+ ...address,
+ })
+ }
+ >
+
+
+
+
+
+
+ {address.delivery_address}
+
+
+ {address.details}
+
+
+
+
+
+ )}
+ />
+
+
+ );
+}
+
+export default CartAddresses;
diff --git a/CustomerApp/src/screens/CartAddress/styles.js b/CustomerApp/src/screens/CartAddress/styles.js
new file mode 100644
index 0000000..3faa60b
--- /dev/null
+++ b/CustomerApp/src/screens/CartAddress/styles.js
@@ -0,0 +1,71 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ containerInfo: {
+ flex: 1,
+ alignItems: 'center',
+ position: 'relative'
+ },
+ contentContainer: {
+ flexGrow: 1,
+ backgroundColor: colors.cardContainer,
+ shadowOffset: { width: 2, height: 2 },
+ shadowColor: colors.white,
+ shadowOpacity: 0.2,
+ shadowRadius: 12,
+ elevation: 3,
+ borderRadius: moderateScale(18),
+ ...alignment.Mlarge,
+ ...alignment.Plarge
+ },
+ editButton: {
+ width: scale(28),
+ aspectRatio: 1,
+ backgroundColor: colors.lightBackground,
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: scale(8),
+ elevation: 3,
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1)
+ },
+ width100: {
+ width: '100%'
+ },
+ titleAddress: {
+ flexDirection: 'row',
+ alignItems: 'center'
+ },
+ homeIcon: {
+ width: '20%',
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ addressDetail: {
+ width: '80%',
+ alignSelf: 'flex-end'
+ },
+ line: {
+ width: '80%',
+ alignSelf: 'flex-end',
+ borderBottomColor: 'lightgrey',
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ ...alignment.MTmedium,
+ ...alignment.MBmedium
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Chat/Chat.js b/CustomerApp/src/screens/Chat/Chat.js
new file mode 100644
index 0000000..be21c99
--- /dev/null
+++ b/CustomerApp/src/screens/Chat/Chat.js
@@ -0,0 +1,211 @@
+import { Feather, FontAwesome } from "@expo/vector-icons";
+import { useNavigation, useTheme } from "@react-navigation/native";
+import React, { useCallback, useEffect, useState } from "react";
+import { Keyboard, View } from "react-native";
+import {
+ Bubble,
+ GiftedChat,
+ InputToolbar,
+ Send,
+} from "react-native-gifted-chat";
+import { TextDefault, WrapperView } from "../../components";
+import { alignment } from "../../utils/alignment";
+import { scale } from "../../utils/scaling";
+import useStyle from "./styles";
+
+const UserInfo = {
+ _id: 1,
+ name: "Jason",
+ active: true,
+};
+
+function Chat() {
+ const styles = useStyle();
+ const { colors } = useTheme();
+ const navigation = useNavigation();
+ const [messages, setMessages] = useState([]);
+ const [isTyping, setIsTyping] = useState(false);
+
+ useEffect(() => {
+ Keyboard.addListener("keyboardDidShow", _keyboardDidShow);
+ Keyboard.addListener("keyboardDidHide", _keyboardDidHide);
+
+ // cleanup function
+ return () => {
+ Keyboard.remove("keyboardDidShow", _keyboardDidShow);
+ Keyboard.remove("keyboardDidHide", _keyboardDidHide);
+ };
+ }, []);
+
+ const _keyboardDidShow = () => setIsTyping(true);
+ const _keyboardDidHide = () => setIsTyping(false);
+
+ useEffect(() => {
+ navigation.setOptions({
+ title: "Chat",
+ });
+ setMessages([
+ {
+ _id: 1,
+ text: "How can I help you?",
+ sent: true,
+ received: true,
+ createdAt: new Date(),
+ user: {
+ _id: 2,
+ name: "React Native",
+ avatar: "https://placeimg.com/140/140/any",
+ },
+ },
+ ]);
+ }, [navigation]);
+
+ const onSend = useCallback((messages = []) => {
+ setMessages((previousMessages) =>
+ GiftedChat.append(previousMessages, messages)
+ );
+ }, []);
+
+ const renderBubble = (props) => {
+ return (
+
+ );
+ };
+
+ const renderSend = (props) => (
+
+
+
+
+
+ );
+ const customtInputToolbar = (props) => {
+ return (
+
+ );
+ };
+
+ return (
+
+
+
+
+
+ {UserInfo.active ? UserInfo.name : "Offline"}
+
+
+ onSend(messages)}
+ renderAvatar={() => null}
+ renderBubble={renderBubble}
+ renderInputToolbar={customtInputToolbar}
+ textInputStyle={styles.inputStyle}
+ minInputToolbarHeight={60}
+ // renderFooter={() =>
+ // isTyping ? (
+ //
+ // User is typing...
+ //
+ // ) : null
+ // }
+ timeTextStyle={{
+ left: {
+ width: "100%",
+ color: colors.fontMainColor,
+ fontSize: 11,
+ textAlign: "right",
+ },
+ right: {
+ color: colors.fontMainColor,
+ fontSize: 11,
+ },
+ }}
+ />
+
+
+ );
+}
+
+export default Chat;
diff --git a/CustomerApp/src/screens/Chat/styles.js b/CustomerApp/src/screens/Chat/styles.js
new file mode 100644
index 0000000..cd3fa69
--- /dev/null
+++ b/CustomerApp/src/screens/Chat/styles.js
@@ -0,0 +1,64 @@
+import { useTheme } from '@react-navigation/native'
+import { Platform, StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { scale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mainContainer: {
+ marginTop: 30,
+ backgroundColor: colors.background,
+ borderTopEndRadius: scale(20),
+ borderTopStartRadius: scale(20),
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: -5
+ },
+ shadowOpacity: 0.4,
+ shadowRadius: 10,
+ elevation: 5,
+ ...alignment.Plarge
+ },
+ header: {
+ // backgroundColor: 'blue',
+ flexDirection: 'row',
+ alignItems: 'center',
+ ...alignment.PBmedium,
+ borderBottomWidth: StyleSheet.hairlineWidth,
+ borderBottomColor: colors.horizontalLine
+ },
+ rightBtn: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: colors.buttonBackground,
+ width: scale(30),
+ aspectRatio: 1,
+ borderRadius: scale(10)
+ },
+ sendBtn: {
+ justifyContent: 'center'
+ },
+ inputContainer: {
+ backgroundColor: colors.lightBackground,
+ borderTopWidth: 0,
+ minHeight: scale(48),
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: scale(25),
+ ...alignment.PRsmall,
+ ...alignment.PLxSmall
+ },
+ inputStyle: {
+ paddingTop: Platform.OS === 'ios' ? 8 : -8,
+ paddingBottom: 0,
+ textAlignVertical: 'center'
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/screens/Coupon/Coupon.js b/CustomerApp/src/screens/Coupon/Coupon.js
new file mode 100644
index 0000000..8b421b3
--- /dev/null
+++ b/CustomerApp/src/screens/Coupon/Coupon.js
@@ -0,0 +1,78 @@
+import { useNavigation, useTheme } from '@react-navigation/native'
+import React, { useLayoutEffect, useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import { TextField } from 'react-native-material-textfield'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import i18n from '../../../i18n'
+import TextDefault from '../../components/Text/TextDefault/TextDefault'
+import TextLine from '../../components/Text/TextLine/TextLine'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+import { WrapperView } from '../../components'
+
+function SelectVoucher() {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const inset = useSafeAreaInsets()
+ const [voucherCode, voucherCodeSetter] = useState(null)
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerRight: null,
+ title: 'My Vouchers'
+ })
+ }, [navigation])
+
+ function onSelectCoupon(text) {
+ navigation.navigate(NAVIGATION_SCREEN.Cart, { CoupanObject: text })
+ }
+
+ return (
+
+
+
+
+
+ {
+ voucherCodeSetter(text)
+ }}
+ />
+
+ onSelectCoupon(voucherCode)}
+ style={styles.buttonContainer}>
+
+ {i18n.t('apply')}
+
+
+
+
+
+
+ )
+}
+
+export default SelectVoucher
diff --git a/CustomerApp/src/screens/Coupon/styles.js b/CustomerApp/src/screens/Coupon/styles.js
new file mode 100644
index 0000000..4fdd60c
--- /dev/null
+++ b/CustomerApp/src/screens/Coupon/styles.js
@@ -0,0 +1,42 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ mB10: {
+ ...alignment.MBsmall
+ },
+ mainContainer: {
+ backgroundColor: colors.background,
+ ...alignment.PRsmall,
+ ...alignment.PLsmall
+ },
+ container: {
+ width: '90%',
+ alignSelf: 'center'
+ },
+ upperContainer: {
+ width: '100%',
+ height: verticalScale(60),
+ alignSelf: 'center',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between'
+ },
+ buttonContainer: {
+ width: '25%',
+ height: '70%',
+ borderRadius: moderateScale(10),
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.blueColor
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/CreateAccount/CreateAccount.js b/CustomerApp/src/screens/CreateAccount/CreateAccount.js
new file mode 100644
index 0000000..c72bb6c
--- /dev/null
+++ b/CustomerApp/src/screens/CreateAccount/CreateAccount.js
@@ -0,0 +1,267 @@
+import { useMutation } from "@apollo/react-hooks";
+import { FontAwesome } from "@expo/vector-icons";
+import { useNavigation, useTheme } from "@react-navigation/native";
+
+import * as AppleAuthentication from "expo-apple-authentication";
+import Constants from "expo-constants";
+
+import * as Google from "expo-auth-session/providers/google";
+import * as Notifications from "expo-notifications";
+import gql from "graphql-tag";
+import React, { useContext, useEffect, useState } from "react";
+import { Platform, TouchableOpacity, View } from "react-native";
+import getEnvVars from "../../../environment";
+import { login } from "../../apollo/server";
+import {
+ EnategaImage,
+ FdEmailBtn,
+ FdGoogleBtn,
+ FlashMessage,
+ RegistrationHeader,
+ Spinner,
+ TextDefault,
+ WrapperView,
+} from "../../components";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import Analytics from "../../utils/analytics";
+import { NAVIGATION_SCREEN } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import useStyle from "./styles";
+import ApolloClient from "apollo-client";
+
+const {
+ IOS_CLIENT_ID_GOOGLE,
+ ANDROID_CLIENT_ID_GOOGLE,
+ Expo_CLIENT_ID_GOOGLE,
+} = getEnvVars();
+
+const LOGIN = gql`
+ ${login}
+`;
+
+const Logo = require("../../../assets/logo.png");
+const CreateAccount = () => {
+ const styles = useStyle();
+ const { colors } = useTheme();
+ const navigation = useNavigation();
+ const [enableApple, setEnableApple] = useState(false);
+ const [loginButton, loginButtonSetter] = useState(null);
+ const [loading, setLoading] = useState(false);
+
+ const { setTokenAsync } = useContext(UserContext);
+
+ useEffect(() => {
+ checkIfSupportsAppleAuthentication();
+ }, []);
+
+ const [mutate] = useMutation(LOGIN, { onCompleted, onError });
+
+ async function checkIfSupportsAppleAuthentication() {
+ setEnableApple(await AppleAuthentication.isAvailableAsync());
+ }
+
+ async function onCompleted(data) {
+ try {
+ const trackingOpts = {
+ id: data.login.userId,
+ usernameOrEmail: data.login.email,
+ };
+ Analytics.identify(data.login.userId, trackingOpts);
+ Analytics.track(Analytics.events.USER_CREATED_ACCOUNT, trackingOpts);
+ setTokenAsync(data.login.token);
+ navigation.navigate(NAVIGATION_SCREEN.Menu);
+ } catch (e) {
+ console.log(e);
+ } finally {
+ setLoading(false);
+ }
+ }
+ function onError(error) {
+ try {
+ console.log(JSON.stringify(error));
+ FlashMessage({
+ message: error.graphQLErrors[0].message,
+ });
+ loginButtonSetter(null);
+ } catch (e) {
+ console.log(e);
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ async function mutateLogin(user) {
+ setLoading(true);
+ let notificationToken = null;
+ if (Constants.isDevice) {
+ const { status: existingStatus } =
+ await Notifications.getPermissionsAsync();
+ if (existingStatus === "granted") {
+ notificationToken = (await Notifications.getExpoPushTokenAsync()).data;
+ }
+ }
+ mutate({ variables: { ...user, notificationToken } });
+ }
+
+ function renderAppleAction() {
+ if (loading && loginButton === "Apple") {
+ return (
+
+
+
+ );
+ }
+ return (
+ {
+ try {
+ const credential = await AppleAuthentication.signInAsync({
+ requestedScopes: [
+ AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
+ AppleAuthentication.AppleAuthenticationScope.EMAIL,
+ ],
+ });
+ console.log(credential);
+ if (credential) {
+ const user = {
+ appleId: credential.user,
+ phone: "",
+ email: credential.email,
+ password: "",
+ name:
+ credential.fullName.givenName +
+ " " +
+ credential.fullName.familyName,
+ picture: "",
+ type: "apple",
+ };
+ mutateLogin(user);
+ }
+ loginButtonSetter("Apple");
+ // signed in
+ } catch (e) {
+ if (e.code === "ERR_CANCELLED") {
+ // handle that the user canceled the sign-in flow
+ loginButtonSetter(null);
+ } else {
+ // handle other errors
+ loginButtonSetter(null);
+ }
+ }
+ }}
+ >
+
+
+ Signup with Apple
+
+
+ );
+ }
+
+ const [googleRequest, googleResponse, googlePromptAsync] =
+ Google.useAuthRequest({
+ expoClientId: Expo_CLIENT_ID_GOOGLE,
+ iosClientId: IOS_CLIENT_ID_GOOGLE,
+ iosStandaloneAppClientId: IOS_CLIENT_ID_GOOGLE,
+ androidClientId: ANDROID_CLIENT_ID_GOOGLE,
+ androidStandaloneAppClientId: ANDROID_CLIENT_ID_GOOGLE,
+ //redirectUrl: `${AuthSession.OAuthRedirect}:/oauth2redirect/google`,
+ scopes: ["profile", "email"],
+ ...{ useProxy: true },
+ });
+
+ const googleSignUp = () => {
+ if (googleResponse?.type === "success") {
+ const { authentication } = googleResponse;
+ console.log(authentication.accessToken);
+ (async () => {
+ const userInfoResponse = await fetch(
+ "https://www.googleapis.com/oauth2/v1/userinfo?alt=json",
+ {
+ headers: { Authorization: `Bearer ${authentication.accessToken}` },
+ }
+ );
+ const googleUser = await userInfoResponse.json();
+ const user = {
+ phone: "",
+ email: googleUser.email,
+ password: "",
+ name: googleUser.name,
+ picture: googleUser.picture,
+ type: "google",
+ };
+ mutateLogin(user);
+ })();
+ }
+ };
+
+ useEffect(() => {
+ googleSignUp();
+ }, [googleResponse]);
+
+ function renderGoogleAction() {
+ return (
+ {
+ loginButtonSetter("Google");
+ }}
+ disabled={!googleRequest}
+ onPress={() => googlePromptAsync()}
+ />
+ );
+ }
+ function renderEmailAction() {
+ return (
+ {
+ loginButtonSetter("Email");
+ navigation.navigate(NAVIGATION_SCREEN.Register);
+ }}
+ />
+ );
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ {renderGoogleAction()}
+ {enableApple && (
+ {renderAppleAction()}
+ )}
+
+ {renderEmailAction()}
+ navigation.navigate(NAVIGATION_SCREEN.Login)}
+ >
+
+ Already a member? Log in
+
+
+
+
+
+
+ );
+};
+export default CreateAccount;
diff --git a/CustomerApp/src/screens/CreateAccount/styles.js b/CustomerApp/src/screens/CreateAccount/styles.js
new file mode 100644
index 0000000..16e91f9
--- /dev/null
+++ b/CustomerApp/src/screens/CreateAccount/styles.js
@@ -0,0 +1,96 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ const inset = useSafeAreaInsets()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ width100: {
+ width: '100%'
+ },
+ mainContainer: {
+ alignItems: 'center',
+ paddingTop: verticalScale(20) + inset.top
+ },
+ subContainer: {
+ flex: 1,
+ width: '80%',
+ alignItems: 'center',
+ ...alignment.PBmedium
+ },
+ whiteColor: {
+ backgroundColor: colors.buttonText
+ },
+ crossIcon: {
+ width: scale(14),
+ height: scale(14),
+ ...alignment.MTlarge,
+ ...alignment.MLlarge
+ },
+ upperContainer: {
+ marginTop: verticalScale(60)
+ },
+ imgResponsive: {
+ width: scale(135),
+ height: scale(125),
+ backgroundColor: 'transparent'
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ marginTop3: {
+ ...alignment.MTxSmall
+ },
+ marginTop5: {
+ ...alignment.MTsmall
+ },
+ marginTop: {
+ marginTop: moderateScale(50)
+ },
+ marginTop10: {
+ ...alignment.MTmedium
+ },
+ alignItemsCenter: {
+ alignItems: 'center'
+ },
+ buttonBackground: {
+ width: '100%',
+ height: height * 0.09,
+ alignItems: 'center'
+ },
+ appleBtn: {
+ width: '100%',
+ height: height * 0.07,
+ borderRadius: moderateScale(20),
+ backgroundColor: colors.lightBackground,
+ flexDirection: 'row',
+ alignItems: 'center'
+ },
+ alreadyBtn: {
+ marginTop: verticalScale(35),
+ width: '100%',
+ height: height * 0.06,
+ borderRadius: moderateScale(20),
+ backgroundColor: colors.buttonBackground,
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ signupText: {
+ fontSize: moderateScale(17)
+ },
+ marginLeft5: {
+ ...alignment.Pmedium
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/EditAddress/EditAddress.js b/CustomerApp/src/screens/EditAddress/EditAddress.js
new file mode 100644
index 0000000..f54c713
--- /dev/null
+++ b/CustomerApp/src/screens/EditAddress/EditAddress.js
@@ -0,0 +1,359 @@
+import { useMutation } from '@apollo/react-hooks'
+import { Ionicons } from '@expo/vector-icons'
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import * as Location from 'expo-location'
+import gql from 'graphql-tag'
+import { keys } from 'lodash'
+import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'
+import {
+ Image,
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import MapView, {
+ Marker,
+ PROVIDER_DEFAULT,
+ PROVIDER_GOOGLE
+} from 'react-native-maps'
+import { FilledTextField } from 'react-native-material-textfield'
+import i18n from '../../../i18n'
+import { editAddress } from '../../apollo/server'
+import {
+ FlashMessage,
+ Spinner,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import { alignment } from '../../utils/alignment'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const EDIT_ADDRESS = gql`
+ ${editAddress}
+`
+
+const labelValues = [
+ {
+ title: 'Home',
+ value: 'Home'
+ },
+ {
+ title: 'Work',
+ value: 'Work'
+ },
+ {
+ title: 'Other',
+ value: 'Other'
+ }
+]
+const LATITUDE_DELTA = 0.0022
+const LONGITUDE_DELTA = 0.0021
+
+function EditAddress() {
+ const { colors } = useTheme()
+ const route = useRoute()
+ const styles = useStyle()
+ const addressRef = useRef(null)
+ const navigation = useNavigation()
+ const [_id] = useState(route.params._id ?? null)
+ const [selectedLabel, setSelectedLabel] = useState(
+ route.params.label ?? labelValues[0].value
+ )
+ const [region, setRegion] = useState({
+ latitude: parseFloat(route.params.latitude ?? null),
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: parseFloat(route.params.longitude ?? null),
+ longitudeDelta: LONGITUDE_DELTA
+ })
+ const [deliveryAddress, setDeliveryAddress] = useState(
+ route.params.delivery_address ?? ''
+ )
+ const [deliveryDetails, setDeliveryDetails] = useState(
+ route.params.details ?? ''
+ )
+ const [deliveryAddressError, setDeliveryAddressError] = useState('')
+ const [deliveryDetailsError, setDeliveryDetailsError] = useState('')
+ const regionObj = route.params.regionChange ?? null
+
+ const [mutate, { loading }] = useMutation(EDIT_ADDRESS, {
+ onCompleted,
+ onError
+ })
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerRight: null,
+ title: i18n.t('editAddress')
+ })
+ }, [navigation])
+ useEffect(() => {
+ if (regionObj !== null) regionChange(regionObj)
+ }, [regionObj])
+
+ function regionChange(region) {
+ Location.reverseGeocodeAsync({ ...region })
+ .then(data => {
+ if (data.length) {
+ const location = data[0]
+ const deliveryAddress = keys(location)
+ .map(key => location[key])
+ .join(' ')
+ setDeliveryAddress(deliveryAddress)
+ addressRef.current.setValue(deliveryAddress)
+ }
+ })
+ .catch(error => {
+ console.log(error)
+ })
+ setRegion(region)
+ }
+
+ function onCompleted(data) {
+ FlashMessage({
+ message: 'Address updated'
+ })
+ // show message here
+ navigation.goBack()
+ }
+
+ function onError(error) {
+ FlashMessage({
+ message: `An error occured. Please try again ${error}`
+ })
+ }
+
+ return (
+
+
+
+
+ {
+ navigation.navigate(NAVIGATION_SCREEN.FullMap, {
+ latitude: region.latitude,
+ longitude: region.longitude,
+ currentScreen: 'EditAddress'
+ })
+ }}>
+
+
+
+
+
+
+
+
+
+
+ Label as
+
+
+
+ {labelValues.map((label, index) => {
+ const isSelected = selectedLabel === label.value
+ return (
+ {
+ setSelectedLabel(label.value)
+ }}>
+ {isSelected && (
+
+ )}
+
+ {label.title}
+
+
+ )
+ })}
+
+
+
+
+ {
+ setDeliveryAddress(text)
+ }}
+ onBlur={() => {
+ setDeliveryAddressError(
+ !deliveryAddress.trim().length
+ ? 'Delivery address is required'
+ : null
+ )
+ }}
+ />
+ {
+ setDeliveryDetails(text)
+ }}
+ onBlur={() => {
+ setDeliveryDetailsError(
+ !deliveryDetails.trim().length
+ ? 'Delivery details is required'
+ : null
+ )
+ }}
+ />
+
+
+
+ {
+ const deliveryAddressError = !deliveryAddress.trim().length
+ ? 'Delivery address is required'
+ : null
+ const deliveryDetailsError = !deliveryDetails.trim().length
+ ? 'Delivery details is required'
+ : null
+
+ setDeliveryAddressError(deliveryAddressError)
+ setDeliveryDetailsError(deliveryDetailsError)
+
+ if (
+ deliveryAddressError === null &&
+ deliveryDetailsError === null
+ ) {
+ mutate({
+ variables: {
+ addressInput: {
+ _id: _id,
+ latitude: `${region.latitude}`,
+ longitude: `${region.longitude}`,
+ delivery_address: deliveryAddress.trim(),
+ details: deliveryDetails.trim(),
+ label: selectedLabel
+ }
+ }
+ })
+ }
+ }}
+ activeOpacity={0.5}
+ style={styles.saveBtnContainer}>
+ {loading ? (
+
+
+
+ ) : (
+
+ {i18n.t('saveContBtn')}
+
+ )}
+
+ navigation.goBack()}>
+
+ {'cancel'}
+
+
+
+
+
+
+ )
+}
+
+export default EditAddress
diff --git a/CustomerApp/src/screens/EditAddress/styles.js b/CustomerApp/src/screens/EditAddress/styles.js
new file mode 100644
index 0000000..545bae3
--- /dev/null
+++ b/CustomerApp/src/screens/EditAddress/styles.js
@@ -0,0 +1,95 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ subContainer: {
+ flexGrow: 1,
+ alignItems: 'center',
+ borderWidth: scale(0.3),
+ borderTopLeftRadius: 30,
+ borderTopRightRadius: 30,
+ borderColor: 'grey',
+ justifyContent: 'space-around',
+ backgroundColor: colors.background
+ },
+ upperContainer: {
+ width: '90%',
+ alignItems: 'center'
+ },
+ addressContainer: {
+ paddingTop: 0,
+ width: '100%',
+ ...alignment.Psmall
+ },
+ labelButtonContainer: {
+ width: '100%',
+ ...alignment.MBlarge,
+ ...alignment.Plarge
+ },
+ buttonInline: {
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: 'space-around'
+ },
+ labelButton: {
+ width: '30%',
+ height: moderateScale(40),
+ borderWidth: 1,
+ borderColor: colors.placeHolderColor,
+ borderRadius: 30,
+ justifyContent: 'center',
+ ...alignment.PxSmall
+ },
+ activeLabel: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ width: '30%',
+ borderWidth: 1,
+ borderRadius: 30,
+ backgroundColor: colors.tagColor,
+ justifyContent: 'space-evenly',
+ color: colors.fontWhite,
+ borderColor: colors.tagColor,
+ ...alignment.PxSmall
+ },
+ textContainer: {
+ borderRadius: 20,
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.buttonBackgroundLight,
+ alignItems: 'center',
+ overflow: 'hidden'
+ },
+ labelStyle: {
+ ...textStyles.Bold,
+ marginTop: 3,
+ paddingLeft: 5,
+ paddingTop: scale(1)
+ },
+ saveBtnContainer: {
+ width: '80%',
+ height: scale(45),
+ borderRadius: scale(10),
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.buttonBackgroundBlue
+ },
+ mapContainer: {
+ height: '40%',
+ backgroundColor: 'transparent'
+ },
+ spinnerView: {
+ width: '100%',
+ height: '100%'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js
new file mode 100644
index 0000000..932e0d0
--- /dev/null
+++ b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js
@@ -0,0 +1,147 @@
+import { useMutation } from '@apollo/react-hooks'
+import { useTheme } from '@react-navigation/native'
+import gql from 'graphql-tag'
+import React, { useState } from 'react'
+import {
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import { FilledTextField } from 'react-native-material-textfield'
+import i18n from '../../../i18n'
+import { forgotPassword } from '../../apollo/server'
+import {
+ EnategaImage,
+ FlashMessage,
+ RegistrationHeader,
+ Spinner,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import { alignment } from '../../utils/alignment'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const FORGOT_PASSWORD = gql`
+ ${forgotPassword}
+`
+
+const Logo = require('../../../assets/logo.png')
+
+function ForgotPassword() {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const [email, setEmail] = useState('')
+ const [emailError, setEmailError] = useState(null)
+ const [mutate, { loading }] = useMutation(FORGOT_PASSWORD, {
+ onCompleted,
+ onError
+ })
+
+ function validateCredentials() {
+ let result = true
+ setEmailError(null)
+ if (!email) {
+ setEmailError('Email is required')
+ result = false
+ } else {
+ const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/
+ if (emailRegex.test(email) !== true) {
+ setEmailError('Invalid Email')
+ result = false
+ }
+ }
+ return result
+ }
+ function onCompleted(data) {
+ FlashMessage({
+ message: 'Reset password link sent on your email'
+ })
+ }
+ function onError(error) {
+ if (error.networkError) {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message
+ })
+ } else if (error.graphQLErrors) {
+ FlashMessage({
+ message: error.graphQLErrors[0].message
+ })
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ To reset your password, please enter your Email address below.
+
+ {
+ setEmail(text.trim())
+ }}
+ />
+ {
+ if (validateCredentials() && !loading) {
+ mutate({
+ variables: { email: email.toLowerCase().trim() }
+ })
+ }
+ }}>
+ {loading ? (
+
+ ) : (
+ CONTINUE
+ )}
+
+
+
+
+
+
+
+ )
+}
+export default ForgotPassword
diff --git a/CustomerApp/src/screens/ForgotPassword/styles.js b/CustomerApp/src/screens/ForgotPassword/styles.js
new file mode 100644
index 0000000..c2ddfcf
--- /dev/null
+++ b/CustomerApp/src/screens/ForgotPassword/styles.js
@@ -0,0 +1,67 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ const inset = useSafeAreaInsets()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ width100: {
+ width: '100%'
+ },
+ mainContainer: {
+ flex: 1,
+ alignItems: 'center',
+ paddingTop: verticalScale(20) + inset.top
+ },
+ subContainer: {
+ flex: 1,
+ width: '80%',
+ alignItems: 'center',
+ ...alignment.PBmedium
+ },
+ imgResponsive: {
+ width: scale(135),
+ height: scale(125),
+ backgroundColor: 'transparent'
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ upperContainer: {
+ marginTop: verticalScale(60)
+ },
+ actionBtn: {
+ height: height * 0.06,
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: moderateScale(18),
+ backgroundColor: colors.buttonBackground,
+ ...alignment.MTlarge
+ },
+ labelStyle: {
+ ...textStyles.Medium,
+ marginTop: 3,
+ paddingLeft: 5,
+ paddingTop: scale(1)
+ },
+ textContainer: {
+ borderRadius: 20,
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.buttonBackgroundLight,
+ overflow: 'hidden',
+ ...alignment.MTlarge
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/FullMap/FullMap.js b/CustomerApp/src/screens/FullMap/FullMap.js
new file mode 100644
index 0000000..56fe558
--- /dev/null
+++ b/CustomerApp/src/screens/FullMap/FullMap.js
@@ -0,0 +1,282 @@
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import * as Location from 'expo-location'
+import React, { useEffect, useLayoutEffect, useState } from 'react'
+import { Image, TouchableOpacity, View } from 'react-native'
+import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps'
+import { FlashMessage, TextDefault, WrapperView } from '../../components'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const LATITUDE = 33.7001019
+const LONGITUDE = 72.9735978
+const LATITUDE_DELTA = 0.0022
+const LONGITUDE_DELTA = 0.0021
+const mapStyle = [
+ {
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#242f3e'
+ }
+ ]
+ },
+ {
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#746855'
+ }
+ ]
+ },
+ {
+ elementType: 'labels.text.stroke',
+ stylers: [
+ {
+ color: '#242f3e'
+ }
+ ]
+ },
+ {
+ featureType: 'administrative.locality',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#d59563'
+ }
+ ]
+ },
+ {
+ featureType: 'poi',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#d59563'
+ }
+ ]
+ },
+ {
+ featureType: 'poi.park',
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#263c3f'
+ }
+ ]
+ },
+ {
+ featureType: 'poi.park',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#6b9a76'
+ }
+ ]
+ },
+ {
+ featureType: 'road',
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#38414e'
+ }
+ ]
+ },
+ {
+ featureType: 'road',
+ elementType: 'geometry.stroke',
+ stylers: [
+ {
+ color: '#212a37'
+ }
+ ]
+ },
+ {
+ featureType: 'road',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#9ca5b3'
+ }
+ ]
+ },
+ {
+ featureType: 'road.highway',
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#746855'
+ }
+ ]
+ },
+ {
+ featureType: 'road.highway',
+ elementType: 'geometry.stroke',
+ stylers: [
+ {
+ color: '#1f2835'
+ }
+ ]
+ },
+ {
+ featureType: 'road.highway',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#f3d19c'
+ }
+ ]
+ },
+ {
+ featureType: 'transit',
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#2f3948'
+ }
+ ]
+ },
+ {
+ featureType: 'transit.station',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#d59563'
+ }
+ ]
+ },
+ {
+ featureType: 'water',
+ elementType: 'geometry',
+ stylers: [
+ {
+ color: '#17263c'
+ }
+ ]
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels.text.fill',
+ stylers: [
+ {
+ color: '#515c6d'
+ }
+ ]
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels.text.stroke',
+ stylers: [
+ {
+ color: '#17263c'
+ }
+ ]
+ }
+]
+
+export default function FullMap() {
+ const route = useRoute()
+ const styles = useStyle()
+ const { dark, colors } = useTheme()
+ const navigation = useNavigation()
+ const [mapMargin, setMapMargin] = useState(1)
+ const latitude = route.params.latitude ?? LATITUDE
+ const longitude = route.params.longitude ?? LONGITUDE
+
+ const [region, setRegion] = useState({
+ latitude: latitude,
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: longitude,
+ longitudeDelta: LONGITUDE_DELTA
+ })
+ const backScreen = route.params.currentScreen ?? null
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: 'Map',
+ headerRight: null
+ })
+ }, [navigation])
+
+ useEffect(() => {
+ if (backScreen === 'NewAddress') _getLocationAsync()
+ }, [backScreen])
+ function setMargin() {
+ setMapMargin(0)
+ }
+
+ async function _getLocationAsync() {
+ const { status } = await Location.requestForegroundPermissionsAsync()
+ if (status === 'granted') {
+ const location = await Location.getCurrentPositionAsync({
+ enableHighAccuracy: true
+ })
+ const loc = {
+ latitude: parseFloat(location.coords.latitude),
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: parseFloat(location.coords.longitude),
+ longitudeDelta: LONGITUDE_DELTA
+ }
+ setRegion(loc)
+ } else {
+ FlashMessage({
+ message: 'Location permission not granted'
+ })
+ }
+ }
+
+ function onSave() {
+ if (backScreen === NAVIGATION_SCREEN.NewAddress) {
+ navigation.navigate(NAVIGATION_SCREEN.NewAddress, {
+ regionChange: region
+ })
+ } else if (backScreen === NAVIGATION_SCREEN.EditAddress) {
+ navigation.navigate(NAVIGATION_SCREEN.EditAddress, {
+ regionChange: region
+ })
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
+ )
+}
diff --git a/CustomerApp/src/screens/FullMap/styles.js b/CustomerApp/src/screens/FullMap/styles.js
new file mode 100644
index 0000000..b5a58cd
--- /dev/null
+++ b/CustomerApp/src/screens/FullMap/styles.js
@@ -0,0 +1,27 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { moderateScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ container: {
+ height: '92%'
+ },
+ button: {
+ position: 'absolute',
+ alignSelf: 'center',
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: moderateScale(10),
+ bottom: 0,
+ height: '8%',
+ width: '100%',
+ backgroundColor: colors.buttonBackgroundBlue
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Help/Help.js b/CustomerApp/src/screens/Help/Help.js
new file mode 100644
index 0000000..521603e
--- /dev/null
+++ b/CustomerApp/src/screens/Help/Help.js
@@ -0,0 +1,54 @@
+import { AntDesign } from '@expo/vector-icons'
+import { useNavigation } from '@react-navigation/native'
+import React, { useLayoutEffect } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import i18n from '../../../i18n'
+import { TextDefault, WrapperView } from '../../components'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import useStyle from './styles'
+
+const links = [
+ {
+ title: 'Product Page',
+ url: 'https://market.nativebase.io/view/react-native-food-delivery-backend-app'
+ },
+ { title: 'Docs', url: 'https://enatega.gitbook.io/enatega-full-app/' },
+ {
+ title: 'Blog',
+ url: 'https://blog.nativebase.io/enatega-full-food-delivery-app-is-finally-here-a6039de4a09d'
+ },
+ { title: 'About Us', url: 'https://ninjascode.com/pages/ourteam.html' }
+]
+function Help() {
+ const styles = useStyle()
+ const navigation = useNavigation()
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerTitle: i18n.t('titleHelp'),
+ headerRight: null
+ })
+ }, [navigation])
+
+ return (
+
+
+ {links.map(({ title, url }, index) => (
+
+ navigation.navigate(NAVIGATION_SCREEN.HelpBrowser, { title, url })
+ }
+ style={styles.itemContainer}
+ key={index}>
+ {title}
+
+
+
+
+ ))}
+
+
+ )
+}
+
+export default Help
diff --git a/CustomerApp/src/screens/Help/styles.js b/CustomerApp/src/screens/Help/styles.js
new file mode 100644
index 0000000..4d88b7c
--- /dev/null
+++ b/CustomerApp/src/screens/Help/styles.js
@@ -0,0 +1,35 @@
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, verticalScale } from '../../utils/scaling'
+import { useTheme } from '@react-navigation/native'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ itemContainer: {
+ backgroundColor: colors.white,
+ marginHorizontal: moderateScale(20),
+ borderRadius: moderateScale(10),
+ elevation: 2,
+ shadowColor: 'black',
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1),
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ borderColor: colors.horizontalLine,
+ ...alignment.Pmedium,
+ ...alignment.Pmedium,
+ ...alignment.PLlarge,
+ ...alignment.PRsmall,
+ ...alignment.MTsmall
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js b/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js
new file mode 100644
index 0000000..84a42fd
--- /dev/null
+++ b/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js
@@ -0,0 +1,30 @@
+import React, { useLayoutEffect } from 'react'
+import { WebView } from 'react-native-webview'
+import Spinner from '../../components/Spinner/Spinner'
+import { useNavigation, useRoute } from '@react-navigation/native'
+import { WrapperView } from '../../components'
+
+function HelpBrowser() {
+ const navigation = useNavigation()
+ const route = useRoute()
+ const { title, url } = route.params
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerRight: null,
+ headerTitle: title
+ })
+ }, [navigation])
+
+ return (
+
+ }
+ source={{ uri: url }}
+ />
+
+ )
+}
+
+export default HelpBrowser
diff --git a/CustomerApp/src/screens/ItemDetail/ItemDetail.js b/CustomerApp/src/screens/ItemDetail/ItemDetail.js
new file mode 100644
index 0000000..49b0df9
--- /dev/null
+++ b/CustomerApp/src/screens/ItemDetail/ItemDetail.js
@@ -0,0 +1,235 @@
+import { useNavigation, useRoute } from '@react-navigation/native'
+import React, { useContext, useEffect, useState } from 'react'
+import { ScrollView, View } from 'react-native'
+import { WrapperView } from '../../components'
+import CartComponent from '../../components/CustomizeComponents/CartComponent/CartComponent'
+import CheckComponent from '../../components/CustomizeComponents/CheckComponent/CheckComponent'
+import HeadingComponent from '../../components/CustomizeComponents/HeadingComponent/HeadingComponent'
+import ImageHeader from '../../components/CustomizeComponents/ImageHeader/ImageHeader'
+import RadioComponent from '../../components/CustomizeComponents/RadioComponent/RadioComponent'
+import TitleComponent from '../../components/CustomizeComponents/TitleComponent/TitleComponent'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import useStyle from './styles'
+
+function ItemDetail() {
+ const route = useRoute()
+ const styles = useStyle()
+ const navigation = useNavigation()
+ const [food] = useState(route.params.food ?? null)
+ const [selectedVariation, setSelectedVariation] = useState(food.variations[0])
+ const [selectedAddons, setSelectedAddons] = useState([])
+ const { cart, addQuantity, addCartItem } = useContext(UserContext)
+
+ useEffect(() => {
+ navigation.setOptions({
+ title: 'Customize',
+ headerRight: () => null
+ })
+ }, [navigation])
+
+ function validateButton() {
+ if (!selectedVariation) return false
+ const validatedAddons = []
+ selectedVariation.addons.forEach(addon => {
+ const selected = selectedAddons.find(ad => ad._id === addon._id)
+ if (!selected && addon.quantity_minimum === 0) {
+ validatedAddons.push(false)
+ } else if (
+ selected &&
+ selected.options.length >= addon.quantity_minimum &&
+ selected.options.length <= addon.quantity_maximum
+ ) {
+ validatedAddons.push(false)
+ } else validatedAddons.push(true)
+ })
+ return validatedAddons.every(val => val === false)
+ }
+
+ async function onAddToCart(quantity) {
+ if (validateOrderItem()) {
+ const addons = selectedAddons.map(addon => ({
+ ...addon,
+ options: addon.options.map(({ _id }) => ({
+ _id
+ }))
+ }))
+
+ const cartItem = cart.find(cartItem => {
+ if (
+ cartItem._id === food._id &&
+ cartItem.variation._id === selectedVariation._id
+ ) {
+ if (cartItem.addons.length === addons.length) {
+ if (addons.length === 0) return true
+ const addonsResult = addons.every(newAddon => {
+ const cartAddon = cartItem.addons.find(
+ ad => ad._id === newAddon._id
+ )
+
+ if (!cartAddon) return false
+ const optionsResult = newAddon.options.every(newOption => {
+ const cartOption = cartAddon.options.find(
+ op => op._id === newOption._id
+ )
+
+ if (!cartOption) return false
+ return true
+ })
+
+ return optionsResult
+ })
+
+ return addonsResult
+ }
+ }
+ return false
+ })
+
+ if (!cartItem) {
+ await addCartItem(food._id, selectedVariation._id, quantity, addons)
+ } else {
+ await addQuantity(cartItem.key, quantity)
+ }
+ navigation.navigate(NAVIGATION_SCREEN.Cart)
+ }
+ }
+
+ function onSelectVariation(variation) {
+ setSelectedVariation(variation)
+ }
+
+ async function onSelectOption(addon, option) {
+ const addons = selectedAddons
+ const index = addons.findIndex(ad => ad._id === addon._id)
+ if (index > -1) {
+ if (addon.quantity_minimum === 1 && addon.quantity_maximum === 1) {
+ addons[index].options = [option]
+ } else {
+ const optionIndex = addons[index].options.findIndex(
+ opt => opt._id === option._id
+ )
+ if (optionIndex > -1) {
+ addons[index].options = addons[index].options.filter(
+ opt => opt._id !== option._id
+ )
+ } else {
+ addons[index].options.push(option)
+ }
+ if (!addons[index].options.length) {
+ addons.splice(index, 1)
+ }
+ }
+ } else {
+ addons.push({ _id: addon._id, options: [option] })
+ }
+ setSelectedAddons([...addons])
+ }
+
+ function calculatePrice() {
+ const variation = selectedVariation.price
+ let addons = 0
+ selectedAddons.forEach(addon => {
+ addons += addon.options.reduce((acc, option) => {
+ return acc + option.price
+ }, 0)
+ })
+ return (variation + addons).toFixed(2)
+ }
+
+ function validateOrderItem() {
+ const validatedAddons = selectedVariation.addons.map(addon => {
+ const selected = selectedAddons.find(ad => ad._id === addon._id)
+
+ if (!selected && addon.quantity_minimum === 0) {
+ addon.error = false
+ } else if (
+ selected &&
+ selected.options.length >= addon.quantity_minimum &&
+ selected.options.length <= addon.quantity_maximum
+ ) {
+ addon.error = false
+ } else addon.error = true
+ return addon
+ })
+ setSelectedVariation({ ...selectedVariation, addons: validatedAddons })
+ return validatedAddons.every(addon => addon.error === false)
+ }
+
+ function renderOption(addon) {
+ if (addon.quantity_minimum === 1 && addon.quantity_maximum === 1) {
+ return (
+
+ )
+ } else {
+ return (
+
+ )
+ }
+ }
+
+ return (
+
+
+
+ {!!food.img_url && }
+
+
+
+ {food.variations.length > 1 && (
+ <>
+
+
+
+
+ >
+ )}
+ {selectedVariation.addons.map(addon => (
+
+
+ {renderOption(addon)}
+
+ ))}
+
+
+
+
+
+ )
+}
+
+export default ItemDetail
diff --git a/CustomerApp/src/screens/ItemDetail/styles.js b/CustomerApp/src/screens/ItemDetail/styles.js
new file mode 100644
index 0000000..df16f92
--- /dev/null
+++ b/CustomerApp/src/screens/ItemDetail/styles.js
@@ -0,0 +1,30 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ scrollViewContainer: {
+ width: '100%',
+ height: '100%'
+ },
+ subContainer: {
+ width: '90%',
+ height: '100%',
+ alignSelf: 'center',
+ ...alignment.MTmedium
+ },
+ line: {
+ width: '100%',
+ height: StyleSheet.hairlineWidth,
+ ...alignment.MBsmall,
+ backgroundColor: colors.horizontalLine
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Login/Login.js b/CustomerApp/src/screens/Login/Login.js
new file mode 100755
index 0000000..c19b8da
--- /dev/null
+++ b/CustomerApp/src/screens/Login/Login.js
@@ -0,0 +1,279 @@
+import { useMutation } from '@apollo/react-hooks'
+import { useNavigation, useTheme } from '@react-navigation/native'
+import * as Notifications from 'expo-notifications'
+import Constants from 'expo-constants'
+import gql from 'graphql-tag'
+import React, { useContext, useEffect, useState } from 'react'
+import {
+ ActivityIndicator,
+ BackHandler,
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import { FilledTextField } from 'react-native-material-textfield'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import i18n from '../../../i18n'
+import { login } from '../../apollo/server'
+import {
+ EnategaImage,
+ FlashMessage,
+ RegistrationHeader,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import Analytics from '../../utils/analytics'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale, verticalScale } from '../../utils/scaling'
+import useStyle from './styles'
+
+// Constants
+const LOGIN = gql`
+ ${login}
+`
+
+const Logo = require('../../../assets/logo.png')
+
+function Login() {
+ let _didFocusSubscription = null
+ let _willBlurSubscription = null
+ const styles = useStyle()
+ const inset = useSafeAreaInsets()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const [email, setEmail] = useState('john@test.com')
+ const [loading, setLoading] = useState(false)
+ const [password, setPassword] = useState('123123')
+ const [emailError, setEmailError] = useState('')
+ const { setTokenAsync } = useContext(UserContext)
+ const [passwordError, setPasswordError] = useState(null)
+
+ const [mutate] = useMutation(LOGIN, { onCompleted, onError })
+
+ useEffect(() => {
+ _didFocusSubscription = navigation.addListener('didFocus', () => {
+ BackHandler.addEventListener(
+ 'hardwareBackPress',
+ onBackButtonPressAndroid
+ )
+ })
+ _willBlurSubscription = navigation.addListener('willBlur', () => {
+ BackHandler.removeEventListener(
+ 'hardwareBackPress',
+ onBackButtonPressAndroid
+ )
+ })
+ return () => {
+ _didFocusSubscription && _didFocusSubscription()
+ _willBlurSubscription && _willBlurSubscription()
+ BackHandler.removeEventListener(
+ 'hardwareBackPress',
+ onBackButtonPressAndroid
+ )
+ }
+ }, [])
+ function validateCredentials() {
+ let result = true
+ setEmailError(null)
+ setPasswordError(null)
+
+ if (!email) {
+ setEmailError('Email/Phone is required')
+ result = false
+ } else {
+ const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/
+ const phoneRegex = /^[+]\d{6,15}$/
+ if (emailRegex.test(email) !== true && phoneRegex.test(email) !== true) {
+ setEmailError('Invalid Email/Phone')
+ result = false
+ }
+ }
+ if (!password) {
+ setPasswordError('Password is required')
+ result = false
+ }
+ return result
+ }
+ async function onCompleted(data) {
+ try {
+ const trackingOpts = {
+ id: data.login.userId,
+ usernameOrEmail: data.login.email
+ }
+ Analytics.identify(data.login.userId, trackingOpts)
+ Analytics.track(Analytics.events.USER_LOGGED_IN, trackingOpts)
+ setTokenAsync(data.login.token)
+ navigation.navigate(NAVIGATION_SCREEN.Menu)
+ } catch (e) {
+ console.log(e)
+ } finally {
+ setLoading(false)
+ }
+ }
+ function onError(error) {
+ try {
+ console.log(JSON.stringify(error))
+ FlashMessage({
+ message: error.graphQLErrors[0].message
+ })
+ } catch (e) {
+ console.log(e)
+ } finally {
+ setLoading(false)
+ }
+ }
+
+ function onBackButtonPressAndroid() {
+ navigation.navigate(NAVIGATION_SCREEN.Menu)
+ return true
+ }
+
+ async function mutateLogin(user) {
+ try {
+ setLoading(true)
+ let notificationToken = null
+ if (Constants.isDevice) {
+ const { status: existingStatus } =
+ await Notifications.getPermissionsAsync()
+ if (existingStatus === 'granted') {
+ notificationToken = (await Notifications.getExpoPushTokenAsync()).data
+ }
+ }
+ mutate({ variables: { ...user, notificationToken } })
+ } catch (e) {
+ console.log(e)
+ } finally {
+ }
+ }
+
+ function renderLoginAction() {
+ return (
+ {
+ const user = {
+ email: email,
+ password: password,
+ type: 'default'
+ }
+ if (validateCredentials()) {
+ mutateLogin(user)
+ }
+ }}>
+ {loading ? (
+
+ ) : (
+ {i18n.t('loginBtn')}
+ )}
+
+ )
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ Enter your Email and Password
+
+
+ {
+ setEmail(text.toLowerCase().trim())
+ }}
+ />
+ {
+ setPassword(text.trim())
+ }}
+ />
+
+ navigation.navigate(NAVIGATION_SCREEN.ForgotPassword)
+ }>
+
+ Forgot Password?
+
+
+ {renderLoginAction()}
+
+ navigation.navigate(NAVIGATION_SCREEN.CreateAccount)
+ }>
+
+ Create New Account
+
+
+
+
+
+
+
+
+ )
+}
+
+export default Login
diff --git a/CustomerApp/src/screens/Login/screenOptions.js b/CustomerApp/src/screens/Login/screenOptions.js
new file mode 100644
index 0000000..737deff
--- /dev/null
+++ b/CustomerApp/src/screens/Login/screenOptions.js
@@ -0,0 +1,31 @@
+/* eslint-disable react/prop-types */
+import React from 'react'
+import { textStyles } from '../../utils/textStyles'
+import PropTypes from 'prop-types'
+const {
+ LeftButton
+} = require('../../components/Header/HeaderIcons/HeaderIcons')
+
+const navigationOptions = props => {
+ return {
+ title: 'Log in',
+ headerTitleAlign: 'left',
+ headerRight: null,
+ // eslint-disable-next-line react/display-name
+ headerLeft: () => ,
+ headerStyle: {
+ backgroundColor: props.backColor
+ },
+ headerTitleStyle: {
+ color: props.fontColor,
+ ...textStyles.H3,
+ ...textStyles.Bold
+ }
+ }
+}
+navigationOptions.propTypes = {
+ iconColor: PropTypes.string,
+ fontColor: PropTypes.string,
+ backColor: PropTypes.string
+}
+export default navigationOptions
diff --git a/CustomerApp/src/screens/Login/styles.js b/CustomerApp/src/screens/Login/styles.js
new file mode 100644
index 0000000..ec51d03
--- /dev/null
+++ b/CustomerApp/src/screens/Login/styles.js
@@ -0,0 +1,84 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ width100: {
+ width: '100%'
+ },
+ safeAreaViewStyles: {
+ flex: 1,
+ backgroundColor: colors.cardContainer
+ },
+ imgResponsive: {
+ width: scale(135),
+ height: scale(125),
+ backgroundColor: 'transparent'
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ upperContainer: {
+ marginTop: verticalScale(60)
+ },
+ mainContainer: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ subContainer: {
+ flex: 1,
+ width: '80%',
+ alignItems: 'center',
+ ...alignment.PBmedium
+ },
+
+ marginTop3: {
+ ...alignment.MTmedium
+ },
+ lgnText: {
+ fontSize: moderateScale(20)
+ },
+ textContainer: {
+ borderRadius: 20,
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.buttonBackgroundLight,
+ alignItems: 'center',
+ overflow: 'hidden'
+ },
+ labelStyle: {
+ ...textStyles.Medium,
+ marginTop: 3,
+ paddingLeft: 5,
+ paddingTop: scale(1)
+ },
+ loginBtn: {
+ width: '100%',
+ borderRadius: moderateScale(18),
+ height: height * 0.06,
+ backgroundColor: colors.buttonBackground,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ whiteBtn: {
+ backgroundColor: colors.white,
+ borderWidth: 1,
+ borderColor: colors.fontSecondColor
+ },
+ appleBtn: {
+ width: '100%',
+ height: height * 0.06
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Menu/Menu.js b/CustomerApp/src/screens/Menu/Menu.js
new file mode 100755
index 0000000..6c3735c
--- /dev/null
+++ b/CustomerApp/src/screens/Menu/Menu.js
@@ -0,0 +1,107 @@
+import { useQuery } from "@apollo/react-hooks";
+import { useNavigation } from "@react-navigation/native";
+import gql from "graphql-tag";
+import React, { useContext, useLayoutEffect } from "react";
+import { FlatList, View } from "react-native";
+import { categories } from "../../apollo/server";
+import EmptyFood from "../../assets/images/SVG/imageComponents/EmptyFood";
+import {
+ MenuCard,
+ Spinner,
+ StatusCard,
+ TextDefault,
+ TextError,
+ WrapperView,
+} from "../../components";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import { NAVIGATION_SCREEN } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import useStyle from "./styles";
+
+// constants
+const CATEGORIES = gql`
+ ${categories}
+`;
+
+function Menu() {
+ const styles = useStyle();
+ const navigation = useNavigation();
+ const { isLoggedIn, profile } = useContext(UserContext);
+ const { data, refetch, networkStatus, loading, error } = useQuery(CATEGORIES);
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: "Home",
+ });
+ }, []);
+
+ function emptyView() {
+ if (loading) {
+ return ;
+ } else if (error) {
+ return (
+
+ );
+ } else {
+ return (
+
+
+
+ No item found
+
+
+ );
+ }
+ }
+
+ return (
+
+
+ String(index)}
+ ListEmptyComponent={emptyView()}
+ data={loading ? [] : error ? [] : data.categories}
+ refreshing={networkStatus === 4}
+ onRefresh={() => refetch()}
+ ListHeaderComponent={() => {
+ if (!error && !loading) {
+ return (
+ <>
+ {isLoggedIn && profile && }
+
+
+ Featured
+
+ >
+ );
+ }
+ return null;
+ }}
+ renderItem={({ item }) => (
+
+
+ navigation.navigate(NAVIGATION_SCREEN.MenuItems, {
+ ...item,
+ })
+ }
+ title={item.title}
+ description={item.description}
+ image={item.img_menu || ""}
+ />
+
+ )}
+ />
+
+
+ );
+}
+
+export default React.memo(Menu);
diff --git a/CustomerApp/src/screens/Menu/styles.js b/CustomerApp/src/screens/Menu/styles.js
new file mode 100644
index 0000000..da6c4f1
--- /dev/null
+++ b/CustomerApp/src/screens/Menu/styles.js
@@ -0,0 +1,53 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ backgroundColor: {
+ backgroundColor: colors.background
+ },
+ emptyContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ mainContentContainer: {
+ width: '100%',
+ ...alignment.PLsmall,
+ ...alignment.PRsmall,
+ alignSelf: 'center'
+ },
+ cardViewContainer: {
+ width: '95%',
+ alignSelf: 'center',
+ height: verticalScale(165),
+ elevation: 7,
+ borderRadius: 30,
+ shadowColor: colors.shadowColor,
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(3)
+ },
+ shadowOpacity: 1,
+ shadowRadius: verticalScale(4),
+ borderWidth: 0,
+ borderColor: colors.white,
+ ...alignment.MTxSmall,
+ ...alignment.MBsmall
+ },
+ contentContainer: {
+ flexGrow: 1,
+ ...alignment.MTxSmall,
+ ...alignment.PBlarge
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/screens/MenuItems/MenuItems.js b/CustomerApp/src/screens/MenuItems/MenuItems.js
new file mode 100755
index 0000000..2cbf3b3
--- /dev/null
+++ b/CustomerApp/src/screens/MenuItems/MenuItems.js
@@ -0,0 +1,283 @@
+import { useQuery } from "@apollo/react-hooks";
+import { useNavigation, useRoute } from "@react-navigation/native";
+//import { useHeaderHeight } from '@react-navigation/stack'
+import { useHeaderHeight } from "@react-navigation/elements";
+import gql from "graphql-tag";
+import { get } from "lodash";
+import React, { useContext, useLayoutEffect, useRef, useState } from "react";
+import {
+ FlatList,
+ ImageBackground,
+ Platform,
+ TouchableOpacity,
+ View,
+} from "react-native";
+import { Modalize } from "react-native-modalize";
+import { foods } from "../../apollo/server";
+import EmptyFood from "../../assets/images/SVG/imageComponents/EmptyFood";
+import {
+ EnategaImage,
+ FilterModal,
+ FlashMessage,
+ RightButton,
+ Spinner,
+ TextDefault,
+ TextError,
+ WrapperView,
+} from "../../components";
+import ConfigurationContext from "../../context/Configuration";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import { ICONS_NAME, NAVIGATION_SCREEN, SORT_DATA } from "../../utils/constant";
+import { moderateScale, scale } from "../../utils/scaling";
+import useStyle from "./styles";
+
+// constants
+const FOODS = gql`
+ ${foods}
+`;
+
+function MenuItems() {
+ const route = useRoute();
+ const styles = useStyle();
+ const headerHeight = useHeaderHeight();
+ const navigation = useNavigation();
+ const _id = route.params._id ?? null;
+ const imgMenu = route.params.img_menu ?? null;
+ const title = route.params.title ?? null;
+ const description = route.params.description ?? null;
+ const [filters, setFilters] = useState({});
+ const { loading, error, data, refetch, networkStatus } = useQuery(FOODS, {
+ variables: { category: _id, ...filters },
+ });
+ const { addCartItem } = useContext(UserContext);
+ const configuration = useContext(ConfigurationContext);
+ const modalizeRef = useRef(null);
+
+ const closeModal = () => {
+ modalizeRef.current.close();
+ };
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerTitle: title,
+ headerRight: () => (
+ modalizeRef.current.open()}
+ />
+ ),
+ });
+ }, [navigation]);
+
+ async function onAddToCart(food) {
+ if (food.stock < 1) {
+ FlashMessage({
+ message: "Item out of stock",
+ });
+ return;
+ }
+
+ if (
+ food.variations.length === 1 &&
+ food.variations[0].addons.length === 0
+ ) {
+ await addCartItem(food._id, food.variations[0]._id);
+ navigation.navigate(NAVIGATION_SCREEN.Cart);
+ } else {
+ navigation.navigate(NAVIGATION_SCREEN.ItemDetail, { food });
+ }
+ }
+
+ function renderGridCards(item) {
+ return (
+ {
+ onAddToCart(item);
+ }}
+ activeOpacity={0.7}
+ style={styles.cardContainer}
+ >
+
+
+ {item.stock < 1 && (
+
+
+ No Stock
+
+
+ )}
+
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+ {item.variations[0].discounted > 0 && (
+
+ {configuration.currency_symbol}{" "}
+ {(
+ item.variations[0].price + item.variations[0].discounted
+ ).toFixed(2)}
+
+ )}
+
+ {configuration.currency_symbol}{" "}
+ {item.variations[0].price.toFixed(2)}
+
+
+
+
+ );
+ }
+
+ function sortData(foods) {
+ const VALUE = get(SORT_DATA, get(filters, "sort"));
+ switch (VALUE) {
+ case SORT_DATA.NameAsc:
+ return foods.sort((a, b) =>
+ a.title.toLowerCase() > b.title.toLowerCase() ? 1 : -1
+ );
+ case SORT_DATA.NameDesc:
+ return foods.sort((a, b) =>
+ a.title.toLowerCase() < b.title.toLowerCase() ? 1 : -1
+ );
+ case SORT_DATA.PriceAsc:
+ return foods.sort((a, b) =>
+ a.variations[0].price > b.variations[0].price ? 1 : -1
+ );
+ case SORT_DATA.PriceDesc:
+ return foods.sort((a, b) =>
+ a.variations[0].price < b.variations[0].price ? 1 : -1
+ );
+ default:
+ return foods.sort((a, b) => (a.img_url < b.img_url ? 1 : -1));
+ }
+ }
+
+ const setFilterss = (filterObj) => {
+ setFilters(filterObj);
+ };
+
+ function emptyView() {
+ if (loading) {
+ return ;
+ } else if (error) {
+ return (
+
+ );
+ } else {
+ return (
+
+
+
+ No food item found
+
+
+ );
+ }
+ }
+
+ function renderListHeader() {
+ return (
+
+
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+
+ );
+ }
+ return (
+
+
+ String(index)}
+ ListEmptyComponent={emptyView}
+ data={loading ? [] : error ? [] : sortData(data.foodByCategory)}
+ refreshing={networkStatus === 4}
+ onRefresh={() =>
+ refetch({
+ variables: { category: _id, ...filters },
+ })
+ }
+ renderItem={({ item }) => renderGridCards(item)}
+ />
+
+
+
+
+
+ );
+}
+export default MenuItems;
diff --git a/CustomerApp/src/screens/MenuItems/styles.js b/CustomerApp/src/screens/MenuItems/styles.js
new file mode 100755
index 0000000..d1e60b0
--- /dev/null
+++ b/CustomerApp/src/screens/MenuItems/styles.js
@@ -0,0 +1,129 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, verticalScale } from '../../utils/scaling'
+const { width, height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ contentContaienr: {
+ flexGrow: 1,
+ ...alignment.PBlarge
+ },
+ whiteFont: {
+ color: colors.fontWhite
+ },
+ lightColor: {
+ color: colors.fontSecondColor
+ },
+ tagColor: {
+ color: colors.tagColor
+ },
+ emptyContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ shadeContainer: {
+ width: '100%',
+ height: '100%',
+ borderRadius: moderateScale(20),
+ backgroundColor: colors.fontMainColor,
+ opacity: 0.3,
+ position: 'absolute'
+ },
+ backgroundImageContainer: {
+ height: height * 0.2,
+ width: '88%',
+ borderRadius: moderateScale(20),
+ alignSelf: 'center',
+ ...alignment.MTmedium,
+ ...alignment.MBlarge
+ },
+ backgroundImage: {
+ width: '100%',
+ height: '100%',
+ borderRadius: moderateScale(20),
+ alignSelf: 'center',
+ justifyContent: 'flex-end'
+ },
+ backgroundImageTextContainer: {
+ width: '100%',
+ borderRadius: moderateScale(20),
+ backgroundColor: '#21262d99',
+ justifyContent: 'flex-end',
+ ...alignment.PRxSmall,
+ ...alignment.PLlarge,
+ ...alignment.PTsmall,
+ ...alignment.PBsmall
+ },
+
+ filter: {
+ height: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ ...alignment.PLmedium,
+ ...alignment.PRmedium
+ },
+
+ cardContainer: {
+ width: '90%',
+ flexDirection: 'row',
+ height: width * 0.28,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderWidth: 1,
+ borderColor: colors.white,
+ backgroundColor: colors.cardContainer,
+ elevation: 5,
+ shadowColor: colors.placeHolderColor,
+ shadowOffset: {
+ width: verticalScale(2),
+ height: verticalScale(1)
+ },
+ borderRadius: moderateScale(20),
+ alignSelf: 'center',
+ shadowOpacity: 0.2,
+ shadowRadius: verticalScale(10),
+ ...alignment.MBxSmall,
+ ...alignment.MTmedium,
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+ cardImageContainer: {
+ width: moderateScale(75),
+ height: moderateScale(75),
+ borderRadius: moderateScale(20)
+ },
+ imgResponsive: {
+ width: moderateScale(75),
+ height: moderateScale(75),
+ borderRadius: moderateScale(20)
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ emtpyStockLabel: {
+ position: 'absolute',
+ top: 0,
+ right: -10,
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.tagColor,
+ ...alignment.PLxSmall,
+ ...alignment.PRxSmall
+ },
+ textContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ ...alignment.MLlarge
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/MyOrders/MyOrders.js b/CustomerApp/src/screens/MyOrders/MyOrders.js
new file mode 100755
index 0000000..7897fc0
--- /dev/null
+++ b/CustomerApp/src/screens/MyOrders/MyOrders.js
@@ -0,0 +1,198 @@
+import { useApolloClient } from "@apollo/react-hooks";
+import { useNavigation, useTheme } from "@react-navigation/native";
+import React, { useContext, useLayoutEffect } from "react";
+import { FlatList, TouchableOpacity, View } from "react-native";
+import uuid from "uuid";
+import i18n from "../../../i18n";
+import EmptyOrder from "../../assets/images/SVG/imageComponents/EmptyOrder";
+import {
+ ActiveOrders,
+ CustomIcon,
+ EnategaImage,
+ Spinner,
+ TextDefault,
+ TextError,
+ WrapperView,
+} from "../../components";
+import ConfigurationContext from "../../context/Configuration";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import useStyle from "./style";
+
+const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"];
+const orderStatusInactive = ["DELIVERED", "COMPLETED"];
+
+function MyOrders() {
+ const styles = useStyle();
+ const { colors } = useTheme();
+ const client = useApolloClient();
+ const navigation = useNavigation();
+ const configuration = useContext(ConfigurationContext);
+ const {
+ orders,
+ loadingOrders,
+ errorOrders,
+ fetchOrders,
+ fetchMoreOrdersFunc,
+ networkStatusOrders,
+ updateCart,
+ } = useContext(UserContext);
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerTitle: i18n.t("titleOrders"),
+ headerRight: null,
+ });
+ }, [navigation]);
+
+ // add items to cart and navigate to cart screen
+ async function onReOrder({ order }) {
+ const data = {
+ cartItems: order.items.map((item) => {
+ return {
+ ...item.food,
+ key: uuid.v4(),
+ __typename: "CartItem",
+ variation: {
+ __typename: "ItemVariation",
+ _id: item.variation._id,
+ },
+ quantity: item.quantity,
+ addons: item.addons.map((addon) => ({
+ ...addon,
+ __typename: "ItemAddon",
+ options: addon.options.map(({ _id }) => ({
+ _id,
+ __typename: "ItemOption",
+ })),
+ })),
+ };
+ }),
+ };
+ await updateCart(data.cartItems);
+ navigation.navigate(NAVIGATION_SCREEN.Cart);
+ }
+
+ function emptyView() {
+ if (loadingOrders) return ;
+ if (errorOrders) return ;
+ else {
+ return (
+
+
+
+
+
+
+ No Orders Found
+
+
+ navigation.navigate(NAVIGATION_SCREEN.Menu)}
+ >
+
+ Start Shopping
+
+
+
+ );
+ }
+ }
+
+ return (
+
+ orderStatusInactive.includes(o.order_status))
+ }
+ style={styles.container}
+ contentContainerStyle={styles.contentContainer}
+ ListEmptyComponent={emptyView()}
+ ListHeaderComponent={
+
+ orderStatusActive.includes(o.order_status)
+ )}
+ pastOrders={orders.filter((o) =>
+ orderStatusInactive.includes(o.order_status)
+ )}
+ loading={loadingOrders}
+ error={errorOrders}
+ />
+ }
+ //keyExtractor={(item) => item._id}
+ keyExtractor={(item, index) => String(index)}
+ refreshing={networkStatusOrders === 4}
+ onRefresh={() => networkStatusOrders === 7 && fetchOrders()}
+ renderItem={({ item }) => (
+
+ navigation.navigate(NAVIGATION_SCREEN.OrderDetail, {
+ _id: item._id,
+ currency_symbol: configuration.currency_symbol,
+ })
+ }
+ >
+
+
+
+
+
+
+ {"ID: "}
+ {item.order_id}
+
+
+ {configuration.currency_symbol}
+ {item.order_amount}
+ {/* {item.order_status === 'PENDING'
+ ? "We're asking the restaurant how long it will take to deliver your food."
+ : 'The restaurant rider will be at your place around.'} */}
+
+
+
+ onReOrder({ order: item, client })}
+ style={styles.subContainerRight}
+ >
+
+
+
+
+
+ {"Re-Order"}
+
+
+
+
+
+ )}
+ onEndReached={fetchMoreOrdersFunc}
+ />
+
+ );
+}
+
+export default MyOrders;
diff --git a/CustomerApp/src/screens/MyOrders/style.js b/CustomerApp/src/screens/MyOrders/style.js
new file mode 100644
index 0000000..a52567d
--- /dev/null
+++ b/CustomerApp/src/screens/MyOrders/style.js
@@ -0,0 +1,126 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { scale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ safeAreaViewStyles: {
+ flex: 1,
+ backgroundColor: colors.headerBackground
+ },
+ container: {
+ flex: 1
+ },
+ contentContainer: {
+ flexGrow: 1,
+ ...alignment.PBsmall
+ },
+ subContainerImage: {
+ flex: 1,
+ justifyContent: 'center',
+ alignContent: 'center',
+ ...alignment.PBlarge
+ },
+ imageContainer: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.MBlarge
+ },
+ image: {
+ width: scale(134),
+ height: scale(131)
+ },
+ descriptionEmpty: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.Plarge
+ },
+ emptyButton: {
+ width: '70%',
+ height: scale(50),
+ backgroundColor: colors.blueColor,
+ justifyContent: 'center',
+ alignItems: 'center',
+ alignSelf: 'center',
+ borderRadius: scale(15),
+ ...alignment.MTlarge
+ },
+ subContainer: {
+ flex: 1,
+ backgroundColor: colors.cardContainer,
+ borderRadius: scale(20),
+ elevation: 3,
+ width: '85%',
+ alignSelf: 'center',
+ shadowColor: 'black',
+ shadowOffset: {
+ width: 0,
+ height: verticalScale(1)
+ },
+ shadowOpacity: 0.5,
+ shadowRadius: verticalScale(1),
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ ...alignment.Psmall,
+ ...alignment.MBmedium
+ },
+ subContainerLeft: {
+ width: '30%',
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.PRxSmall,
+ ...alignment.PLxSmall
+ },
+ subContainerRight: {
+ width: '30%',
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ subContainerButton: {
+ backgroundColor: colors.buttonBackground,
+ width: scale(70),
+ height: verticalScale(25),
+ alignSelf: 'flex-end',
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ Vline: {
+ borderRightWidth: StyleSheet.hairlineWidth,
+ borderColor: colors.placeHolderColor,
+ shadowOffset: {
+ width: 2,
+ height: 2
+ },
+ shadowRadius: 10,
+ shadowColor: colors.lightBackground,
+ shadowOpacity: 0.6
+ },
+ imgContainer: {
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: 20,
+ overflow: 'hidden'
+ },
+ imgResponsive: {
+ width: scale(70),
+ height: scale(70)
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ infoContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ ...alignment.PRxSmall,
+ ...alignment.PLsmall
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/NewAddress/NewAddress.js b/CustomerApp/src/screens/NewAddress/NewAddress.js
new file mode 100644
index 0000000..8dab412
--- /dev/null
+++ b/CustomerApp/src/screens/NewAddress/NewAddress.js
@@ -0,0 +1,382 @@
+import { useMutation } from '@apollo/react-hooks'
+import { Ionicons } from '@expo/vector-icons'
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import * as Location from 'expo-location'
+import gql from 'graphql-tag'
+import { keys } from 'lodash'
+import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'
+import {
+ Image,
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import MapView, {
+ Marker,
+ PROVIDER_DEFAULT,
+ PROVIDER_GOOGLE
+} from 'react-native-maps'
+import { FilledTextField } from 'react-native-material-textfield'
+import i18n from '../../../i18n'
+import { createAddress } from '../../apollo/server'
+import {
+ FlashMessage,
+ Spinner,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import { alignment } from '../../utils/alignment'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const CREATE_ADDRESS = gql`
+ ${createAddress}
+`
+
+const labelValues = [
+ {
+ title: 'Home',
+ value: 'Home'
+ },
+ {
+ title: 'Work',
+ value: 'Work'
+ },
+ {
+ title: 'Other',
+ value: 'Other'
+ }
+]
+
+const LATITUDE = 33.7001019
+const LONGITUDE = 72.9735978
+const LATITUDE_DELTA = 0.0022
+const LONGITUDE_DELTA = 0.0021
+
+function NewAddress() {
+ const route = useRoute()
+ const styles = useStyle()
+ const addressRef = useRef()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+
+ const [deliveryAddress, setDeliveryAddress] = useState('')
+ const [deliveryDetails, setDeliveryDetails] = useState('')
+ const [deliveryAddressError, setDeliveryAddressError] = useState('')
+ const [deliveryDetailsError, setDeliveryDetailsError] = useState('')
+ const [selectedLabel, setSelectedLabel] = useState(labelValues[0].value)
+ const [region, setRegion] = useState({
+ latitude: LATITUDE,
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: LONGITUDE,
+ longitudeDelta: LONGITUDE_DELTA
+ })
+
+ const regionObj = route.params ? route.params.regionChange : null
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: i18n.t('addAddress'),
+ headerRight: null
+ })
+ }, [navigation])
+
+ useEffect(() => {
+ _getLocationAsync()
+ }, [])
+
+ useEffect(() => {
+ if (regionObj !== null) regionChange(regionObj)
+ }, [regionObj])
+
+ const [mutate, { loading }] = useMutation(CREATE_ADDRESS, {
+ onCompleted,
+ onError
+ })
+
+ async function _getLocationAsync() {
+ const { status } = await Location.requestForegroundPermissionsAsync()
+ if (status === 'granted') {
+ const location = await Location.getCurrentPositionAsync({
+ enableHighAccuracy: true
+ })
+ const loc = {
+ latitude: parseFloat(location.coords.latitude),
+ latitudeDelta: LATITUDE_DELTA,
+ longitude: parseFloat(location.coords.longitude),
+ longitudeDelta: LONGITUDE_DELTA
+ }
+ setRegion(loc)
+ regionChange(loc)
+ } else {
+ FlashMessage({
+ message: 'Location permission not granted'
+ })
+ }
+ }
+
+ function regionChange(region) {
+ Location.reverseGeocodeAsync({ ...region })
+ .then(data => {
+ if (data.length && addressRef.current !== null) {
+ const location = data[0]
+ const deliveryAddress = keys(location)
+ .map(key => location[key])
+ .join(' ')
+ setDeliveryAddress(deliveryAddress)
+ setRegion(region)
+
+ addressRef.current.setValue(deliveryAddress)
+ }
+ })
+ .catch(error => {
+ console.log('Error : ', error)
+ })
+ }
+
+ function onCompleted(data) {
+ FlashMessage({
+ message: 'Address added'
+ })
+ const cartAddress = route.params ? route.params.backScreen : null
+ if (cartAddress === NAVIGATION_SCREEN.Cart) {
+ navigation.navigate(NAVIGATION_SCREEN.Cart, {
+ AddressObject: data.createAddress.addresses[0]
+ })
+ } else navigation.goBack()
+ }
+
+ function onError(error) {
+ FlashMessage({
+ message: `An error occured. Please try again. ${error}`
+ })
+ }
+
+ return (
+
+
+
+
+ {
+ navigation.navigate(NAVIGATION_SCREEN.FullMap, {
+ latitude: region.latitude,
+ longitude: region.longitude,
+ currentScreen: 'NewAddress'
+ })
+ }}>
+
+
+
+
+
+
+
+
+
+
+
+
+ Label As:
+
+
+
+ {labelValues.map((label, index) => {
+ const isSelected = selectedLabel === label.value
+ return (
+ {
+ setSelectedLabel(label.value)
+ }}>
+ {isSelected && (
+
+ )}
+
+ {label.title}
+
+
+ )
+ })}
+
+
+
+ {
+ setDeliveryAddress(text)
+ }}
+ onBlur={() => {
+ setDeliveryAddressError(
+ !deliveryAddress.trim().length
+ ? 'Delivery address is required'
+ : null
+ )
+ }}
+ />
+
+ {
+ setDeliveryDetails(text)
+ }}
+ onBlur={() => {
+ setDeliveryDetailsError(
+ !deliveryDetails.trim().length
+ ? 'Delivery details is required'
+ : null
+ )
+ }}
+ />
+
+
+ {
+ const deliveryAddressError = !deliveryAddress.trim().length
+ ? 'Delivery address is required'
+ : null
+ const deliveryDetailsError = !deliveryDetails.trim().length
+ ? 'Delivery details is required'
+ : null
+
+ setDeliveryAddressError(deliveryAddressError)
+ setDeliveryDetailsError(deliveryDetailsError)
+
+ if (
+ deliveryAddressError === null &&
+ deliveryDetailsError === null
+ ) {
+ mutate({
+ variables: {
+ addressInput: {
+ latitude: `${region.latitude}`,
+ longitude: `${region.longitude}`,
+ delivery_address: deliveryAddress.trim(),
+ details: deliveryDetails.trim(),
+ label: selectedLabel
+ }
+ }
+ })
+ }
+ }}
+ activeOpacity={0.5}
+ style={styles.saveBtnContainer}>
+ {loading ? (
+
+
+
+ ) : (
+
+ {i18n.t('saveContBtn')}
+
+ )}
+
+ navigation.goBack()}>
+
+ {'Cancel'}
+
+
+
+
+
+
+
+ )
+}
+
+export default NewAddress
diff --git a/CustomerApp/src/screens/NewAddress/styles.js b/CustomerApp/src/screens/NewAddress/styles.js
new file mode 100644
index 0000000..b9490ac
--- /dev/null
+++ b/CustomerApp/src/screens/NewAddress/styles.js
@@ -0,0 +1,98 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ subContainer: {
+ flex: 1,
+ alignItems: 'center',
+ borderWidth: scale(0.3),
+ borderTopLeftRadius: 30,
+ borderTopRightRadius: 30,
+ borderColor: 'grey',
+ justifyContent: 'space-around',
+ backgroundColor: colors.background
+ },
+ upperContainer: {
+ width: '90%',
+ alignItems: 'center'
+ },
+ addressContainer: {
+ paddingTop: 0,
+ width: '100%',
+ ...alignment.Psmall
+ },
+ labelButtonContainer: {
+ width: '100%',
+ ...alignment.MBlarge,
+ ...alignment.Plarge
+ },
+ labelTitleContainer: {
+ ...alignment.PBsmall
+ },
+ buttonInline: {
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: 'space-evenly'
+ },
+ labelButton: {
+ width: '30%',
+ height: moderateScale(40),
+ borderWidth: 1,
+ borderColor: colors.placeHolderColor,
+ borderRadius: 30,
+ justifyContent: 'center',
+ ...alignment.PxSmall
+ },
+ activeLabel: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ width: '30%',
+ borderWidth: 1,
+ borderRadius: 30,
+ backgroundColor: colors.tagColor,
+ justifyContent: 'space-evenly',
+ color: colors.fontWhite,
+ borderColor: colors.tagColor,
+ ...alignment.PxSmall
+ },
+ saveBtnContainer: {
+ width: '80%',
+ height: scale(45),
+ borderRadius: scale(10),
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.buttonBackgroundBlue
+ },
+ mapContainer: {
+ height: '40%',
+ backgroundColor: 'transparent'
+ },
+ spinnerView: {
+ width: '100%',
+ height: '100%'
+ },
+ textContainer: {
+ borderRadius: 20,
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.buttonBackgroundLight,
+ alignItems: 'center',
+ overflow: 'hidden'
+ },
+ labelStyle: {
+ ...textStyles.Bold,
+ marginTop: 3,
+ paddingLeft: 5,
+ paddingTop: scale(1)
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/OrderDetail/OrderDetail.js b/CustomerApp/src/screens/OrderDetail/OrderDetail.js
new file mode 100644
index 0000000..da431d1
--- /dev/null
+++ b/CustomerApp/src/screens/OrderDetail/OrderDetail.js
@@ -0,0 +1,293 @@
+import { MaterialIcons } from '@expo/vector-icons'
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import React, { useContext, useEffect, useLayoutEffect } from 'react'
+import { Platform, ScrollView, TouchableOpacity, View } from 'react-native'
+import MapView, { PROVIDER_DEFAULT, PROVIDER_GOOGLE } from 'react-native-maps'
+import i18n from '../../../i18n'
+import {
+ Spinner,
+ TextDefault,
+ TextError,
+ TrackingRider,
+ WrapperView
+} from '../../components'
+import { orderStatuses } from '../../components/Menu/StatusCard/StatusCard'
+import ConfigurationContext from '../../context/Configuration'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import { NAVIGATION_SCREEN } from '../../utils/constant'
+import { moderateScale, scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+function calculatePrice(food) {
+ var foodPrice = food.variation.price
+ food.addons.forEach(addons => {
+ addons.options.forEach(addon => {
+ foodPrice += addon.price
+ })
+ })
+ return foodPrice
+}
+
+const checkStatus = status => {
+ const obj = orderStatuses.filter(x => {
+ return x.key === status
+ })
+ return obj[0]
+}
+
+function OrderDetail() {
+ const styles = useStyle()
+ const route = useRoute()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const id = route.params._id ?? null
+ const cart = route.params.clearCart ?? false
+ const { loadingOrders, errorOrders, orders, clearCart } =
+ useContext(UserContext)
+ const configuration = useContext(ConfigurationContext)
+
+ const order = orders.find(o => o._id === id)
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerTitle: 'Order Detail',
+ headerRight: null
+ })
+ }, [navigation])
+
+ useEffect(() => {
+ return () => {
+ if (cart) {
+ clear()
+ }
+ }
+ }, [cart])
+ async function clear() {
+ await clearCart()
+ }
+
+ if (loadingOrders || !order) return
+ if (errorOrders) return
+ return (
+
+
+
+ {order.order_status === 'PICKED' && order.rider && (
+
+ )}
+
+
+
+ Thank You!
+
+
+ Your order ID is
+
+
+ {order.order_id}
+
+
+ Status
+
+
+ {order.order_status}{' '}
+
+ ( {checkStatus(order.order_status).statusText})
+
+
+
+ Delivery address:
+
+
+ {order.delivery_address.delivery_address}
+
+
+ {order.delivery_address.details}
+
+
+
+ {order.items.map((item, index) => (
+
+
+ {item.quantity}x
+
+
+ {item.food.title}
+
+
+ {configuration.currency_symbol}
+ {parseFloat(calculatePrice(item)).toFixed(2)}
+
+
+ ))}
+
+
+
+ Subtotal
+
+
+ {configuration.currency_symbol}
+ {parseFloat(order.order_amount - order.delivery_charges).toFixed(
+ 2
+ )}
+
+
+
+
+ Delivery fee
+
+
+ {configuration.currency_symbol}
+ {parseFloat(order.delivery_charges).toFixed(2)}
+
+
+
+
+ Total
+
+
+ {configuration.currency_symbol}
+ {parseFloat(order.order_amount).toFixed(2)}
+
+
+
+ {order.order_status === 'PICKED' && (
+
+
+
+
+
+ Chat with Rider
+
+
+
+
+ )}
+
+ {(order.order_status === 'DELIVERED' ||
+ order.order_status === 'COMPLETED') &&
+ order.review &&
+ order.review.rating === 0 && (
+
+
+ Any suggestion?
+
+
+ Review regarding your order?
+
+
+ navigation.navigate(NAVIGATION_SCREEN.RateAndReview, {
+ _id: order._id
+ })
+ }>
+
+
+ Write a review
+
+
+
+ )}
+
+
+ )
+}
+
+export default OrderDetail
diff --git a/CustomerApp/src/screens/OrderDetail/styles.js b/CustomerApp/src/screens/OrderDetail/styles.js
new file mode 100644
index 0000000..5d3c3f1
--- /dev/null
+++ b/CustomerApp/src/screens/OrderDetail/styles.js
@@ -0,0 +1,39 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ container: {
+ ...alignment.PLmedium,
+ ...alignment.PRmedium,
+ ...alignment.PTlarge,
+ ...alignment.PBlarge
+ },
+ marginBottom20: {
+ ...alignment.MBlarge
+ },
+ marginBottom10: {
+ ...alignment.MBsmall
+ },
+ orderReceipt: {
+ ...alignment.PLmedium,
+ ...alignment.PRmedium,
+ ...alignment.PBlarge
+ },
+ horizontalLine: {
+ borderBottomColor: colors.horizontalLine,
+ borderBottomWidth: StyleSheet.hairlineWidth
+ },
+ floatView: {
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Paypal/Paypal.js b/CustomerApp/src/screens/Paypal/Paypal.js
new file mode 100644
index 0000000..421a1e7
--- /dev/null
+++ b/CustomerApp/src/screens/Paypal/Paypal.js
@@ -0,0 +1,73 @@
+import React, { useState, useLayoutEffect } from 'react'
+import { WebView } from 'react-native-webview'
+import gql from 'graphql-tag'
+import { myOrders } from '../../apollo/server'
+import getEnvVars from '../../../environment'
+import { useApolloClient } from '@apollo/react-hooks'
+import { useNavigation, useRoute } from '@react-navigation/native'
+import { ActivityIndicator } from 'react-native'
+import { WrapperView } from '../../components'
+
+const { SERVER_URL } = getEnvVars()
+
+const MYORDERS = gql`
+ ${myOrders}
+`
+
+function Paypal() {
+ const [loading, loadingSetter] = useState(true)
+ const navigation = useNavigation()
+ const route = useRoute()
+ const client = useApolloClient()
+ const [_id] = useState(route.params._id ?? null)
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerRight: null,
+ title: 'Paypal Checkout'
+ })
+ }, [navigation])
+
+ async function handleResponse(data) {
+ if (data.title === 'success') {
+ const result = await client.query({
+ query: MYORDERS,
+ fetchPolicy: 'network-only'
+ })
+ const order = result.data.orders.find(order => order.order_id === _id)
+ navigation.reset({
+ routes: [
+ { name: 'Menu' },
+ {
+ name: 'OrderDetail',
+ params: { _id: order._id, clearCart: true }
+ }
+ ]
+ })
+ } else if (data.title === 'cancel') {
+ navigation.goBack()
+ // goBack on Payment Screen
+ }
+ }
+
+ return (
+
+ {
+ handleResponse(data)
+ }}
+ onLoad={() => {
+ loadingSetter(false)
+ }}
+ />
+ {loading ? (
+
+ ) : null}
+
+ )
+}
+
+export default Paypal
diff --git a/CustomerApp/src/screens/Profile/ChangePassword.js b/CustomerApp/src/screens/Profile/ChangePassword.js
new file mode 100644
index 0000000..8e94dce
--- /dev/null
+++ b/CustomerApp/src/screens/Profile/ChangePassword.js
@@ -0,0 +1,148 @@
+import { useMutation } from '@apollo/react-hooks'
+import { useTheme } from '@react-navigation/native'
+import gql from 'graphql-tag'
+import PropTypes from 'prop-types'
+import React, { useState } from 'react'
+import { Alert, TouchableOpacity, View } from 'react-native'
+import { TextField } from 'react-native-material-textfield'
+import Modal from 'react-native-modal'
+import i18n from '../../../i18n'
+import { changePassword } from '../../apollo/server'
+import { FlashMessage } from '../../components/FlashMessage/FlashMessage'
+import TextDefault from '../../components/Text/TextDefault/TextDefault'
+import { alignment } from '../../utils/alignment'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const CHANGE_PASSWORD = gql`
+ ${changePassword}
+`
+
+function ChangePassword(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const [oldPassword, setOldPassword] = useState('')
+ const [newPassword, setNewPassword] = useState('')
+ const [oldPasswordError, setOldPasswordError] = useState('')
+ const [newPasswordError, setNewPasswordError] = useState('')
+
+ const [mutate, { loading }] = useMutation(CHANGE_PASSWORD, {
+ onError,
+ onCompleted
+ })
+
+ function onError(error) {
+ if (error.networkError) {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message
+ })
+ } else if (error.graphQLErrors) {
+ FlashMessage({
+ message: error.graphQLErrors[0].message
+ })
+ }
+ }
+ function clearFields() {
+ setOldPassword('')
+ setNewPassword('')
+ setOldPasswordError('')
+ setNewPasswordError('')
+ }
+
+ function onCompleted(data) {
+ if (data.changePassword) {
+ clearFields()
+ FlashMessage({
+ message: 'Password Updated'
+ })
+ props.hideModal()
+ } else {
+ Alert.alert('Error', 'Invalid password')
+ }
+ }
+
+ return (
+
+
+
+
+
+ Change password
+
+
+
+
+ {
+ setOldPasswordError(!oldPassword ? 'Password is required' : '')
+ }}
+ />
+
+
+ {
+ setNewPasswordError(!newPassword ? 'Password is required' : '')
+ }}
+ />
+
+
+ {
+ const newPasswordError =
+ newPassword === '' ? 'Password is required' : ''
+ const oldPasswordError =
+ oldPassword === '' ? 'Password is required' : ''
+ setNewPasswordError(newPasswordError)
+ setOldPasswordError(oldPasswordError)
+
+ if (
+ oldPasswordError.length === 0 &&
+ newPasswordError.length === 0
+ ) {
+ mutate({ variables: { oldPassword, newPassword } })
+ }
+ }}
+ style={[styles.btnContainer]}>
+
+ {i18n.t('apply')}
+
+
+
+
+
+ )
+}
+
+ChangePassword.propTypes = {
+ hideModal: PropTypes.func,
+ modalVisible: PropTypes.bool.isRequired
+}
+export default ChangePassword
diff --git a/CustomerApp/src/screens/Profile/Profile.js b/CustomerApp/src/screens/Profile/Profile.js
new file mode 100644
index 0000000..55d4925
--- /dev/null
+++ b/CustomerApp/src/screens/Profile/Profile.js
@@ -0,0 +1,388 @@
+import { useMutation } from '@apollo/react-hooks'
+import { MaterialCommunityIcons } from '@expo/vector-icons'
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import gql from 'graphql-tag'
+import React, {
+ useContext,
+ useEffect,
+ useLayoutEffect,
+ useRef,
+ useState
+} from 'react'
+import {
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import { TextField } from 'react-native-material-textfield'
+import i18n from '../../../i18n'
+import { updateUser } from '../../apollo/server'
+import {
+ FlashMessage,
+ RightButton,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import { ICONS_NAME } from '../../utils/constant'
+import { moderateScale, scale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+import ChangePassword from './ChangePassword'
+import useStyle from './styles'
+
+const UPDATEUSER = gql`
+ ${updateUser}
+`
+
+function Profile() {
+ const refName = useRef()
+ const route = useRoute()
+ const styles = useStyle()
+ const refPhone = useRef(null)
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+
+ const [nameError, setNameError] = useState('')
+ const [phoneError, setPhoneError] = useState('')
+ const [toggleView, setToggleView] = useState(true)
+ const [modelVisible, setModalVisible] = useState(false)
+
+ const { profile } = useContext(UserContext)
+ const backScreen = route.params ? route.params.backScreen : null
+
+ const [mutate, { loading: loadingMutation }] = useMutation(UPDATEUSER, {
+ onCompleted,
+ onError
+ })
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ title: 'Profile',
+ headerRight: () => (
+
+ )
+ })
+ }, [navigation, toggleView])
+
+ useEffect(() => {
+ if (backScreen) {
+ viewHideAndShow()
+ setPhoneError('Phone number is required')
+ FlashMessage({
+ message: 'Phone Number is missing'
+ })
+ }
+ }, [backScreen])
+
+ function viewHideAndShow() {
+ setToggleView(prev => !prev)
+ }
+
+ function onCompleted({ updateUser }) {
+ if (updateUser) {
+ FlashMessage({
+ message: "User's Info Updated"
+ })
+ if (backScreen) {
+ navigation.goBack()
+ }
+ }
+ }
+
+ function validateInfo() {
+ // clear errors
+ setNameError('')
+ setPhoneError('')
+
+ const name = refName.current.value()
+ const phone = refPhone.current.value()
+
+ if (name === profile.name && phone === profile.phone && phone.length > 0) {
+ return
+ }
+ let res = true
+ if (!name.trim()) {
+ refName.current.focus()
+ setNameError('Name is required')
+ res = false
+ }
+ const num = phone.trim().replace('.', '')
+ if (num.length < 11 || num.length > 15 || isNaN(num)) {
+ setPhoneError('Minimum 11 and maximum 15 characters allowed')
+ if (res) {
+ refPhone.current.focus()
+ }
+ res = false
+ }
+ return res
+ }
+
+ function onError(error) {
+ try {
+ if (error.graphQLErrors) {
+ FlashMessage({
+ message: error.graphQLErrors[0].message
+ })
+ } else if (error.networkError) {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message
+ })
+ }
+ } catch (err) {}
+ }
+
+ function changePasswordTab() {
+ return (
+
+
+
+
+
+
+ setModalVisible(true)}
+ style={styles.changePassword}>
+ Change Password
+
+
+
+ )
+ }
+
+ return (
+
+ {
+ setModalVisible(false)
+ }}
+ />
+
+
+
+
+
+
+
+ {profile.name.substr(0, 1).toUpperCase()}
+
+
+
+ {toggleView ? (
+ changePasswordTab()
+ ) : (
+
+
+
+
+
+
+
+
+
+
+ {
+ if (validateInfo()) {
+ mutate({
+ variables: {
+ name: refName.current.value(),
+ phone: refPhone.current.value()
+ }
+ })
+ }
+ }}>
+
+ {i18n.t('saveBtn')}
+
+
+
+
+ {'Cancel'}
+
+
+
+ )}
+
+
+ All rights are reserved by Enatega
+
+
+
+
+
+ )
+}
+
+export default Profile
diff --git a/CustomerApp/src/screens/Profile/styles.js b/CustomerApp/src/screens/Profile/styles.js
new file mode 100644
index 0000000..f887770
--- /dev/null
+++ b/CustomerApp/src/screens/Profile/styles.js
@@ -0,0 +1,111 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { dark, colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ formContainer: {
+ flex: 1,
+ width: '100%',
+ height: '100%'
+ },
+ containerInfo: {
+ width: '100%',
+ marginTop: moderateScale(60),
+ ...alignment.PLsmall,
+ ...alignment.PLlarge
+ },
+ changePassword: {
+ alignItems: 'center',
+ flexDirection: 'row',
+ width: '100%',
+ backgroundColor: colors.background,
+ alignSelf: 'center',
+ justifyContent: 'space-between',
+ shadowOffset: { width: 2, height: 2 },
+ shadowColor: colors.shadowColor,
+ shadowOpacity: 0.1,
+ shadowRadius: 12,
+ borderWidth: dark ? 2 : 0,
+ borderRadius: moderateScale(10),
+ elevation: 2,
+ paddingHorizontal: scale(10),
+ height: moderateScale(55),
+ marginTop: moderateScale(20)
+ },
+ formSubContainer: {
+ marginTop: moderateScale(100),
+ alignItems: 'center',
+ width: '85%',
+ backgroundColor: colors.background,
+ alignSelf: 'center',
+ shadowOffset: { width: 2, height: 2 },
+ shadowColor: colors.shadowColor,
+ shadowOpacity: 0.2,
+ shadowRadius: 12,
+ borderRadius: moderateScale(20),
+ elevation: 2,
+ height: moderateScale(450),
+ borderWidth: dark ? 2 : 0,
+ borderColor: colors.shadowColor,
+ ...alignment.MBlarge,
+ ...alignment.PRlarge,
+ ...alignment.Psmall
+ },
+
+ saveContainer: {
+ marginTop: scale(40),
+ width: '90%',
+ height: scale(40),
+ backgroundColor: colors.blueColor,
+ justifyContent: 'center',
+ alignItems: 'center',
+ alignSelf: 'center',
+ borderRadius: moderateScale(14)
+ },
+ // Model for password changing
+ modalContainer: {
+ backgroundColor: colors.cardContainer,
+ borderRadius: verticalScale(8),
+ justifyContent: 'center',
+ alignItems: 'center',
+ ...alignment.PTmedium,
+ ...alignment.PBsmall
+ },
+ modalContent: {
+ width: '90%'
+ },
+ titleContainer: {
+ width: '100%',
+ justifyContent: 'flex-start',
+ alignItems: 'flex-start'
+ },
+ btnContainer: {
+ width: '30%',
+ justifyContent: 'center',
+ borderRadius: moderateScale(10),
+ height: verticalScale(40),
+ backgroundColor: colors.blueColor,
+ alignItems: 'center',
+ alignSelf: 'flex-end',
+ ...alignment.MTsmall,
+ ...alignment.PxSmall
+ },
+ imgContainer: {
+ width: scale(90),
+ height: scale(90),
+ justifyContent: 'center',
+ marginBottom: moderateScale(10),
+ alignItems: 'center',
+ borderRadius: 10,
+ backgroundColor: colors.fontSecondColor
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/RateAndReview/RateAndReview.js b/CustomerApp/src/screens/RateAndReview/RateAndReview.js
new file mode 100755
index 0000000..14a6b67
--- /dev/null
+++ b/CustomerApp/src/screens/RateAndReview/RateAndReview.js
@@ -0,0 +1,137 @@
+import { useMutation } from '@apollo/react-hooks'
+import { EvilIcons } from '@expo/vector-icons'
+import { useNavigation, useRoute, useTheme } from '@react-navigation/native'
+import gql from 'graphql-tag'
+import React, { useLayoutEffect, useState } from 'react'
+import { TextInput, TouchableOpacity, View } from 'react-native'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import StarRating from 'react-native-star-rating'
+import i18n from '../../../i18n'
+import { reviewOrder } from '../../apollo/server'
+import { FlashMessage } from '../../components/FlashMessage/FlashMessage'
+import Spinner from '../../components/Spinner/Spinner'
+import TextDefault from '../../components/Text/TextDefault/TextDefault'
+import { scale } from '../../utils/scaling'
+import useStyle from './styles'
+
+// constants
+const REVIEWORDER = gql`
+ ${reviewOrder}
+`
+
+function RateAndReview() {
+ const route = useRoute()
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const [id] = useState(route.params._id ?? null)
+ const [rating, setRating] = useState(0)
+ const [description, setDescription] = useState('')
+ const inset = useSafeAreaInsets()
+
+ const [mutate, { loading: loadingMutation }] = useMutation(REVIEWORDER, {
+ onError,
+ onCompleted
+ })
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerTitle: i18n.t('rateAndReview'),
+ headerRight: null
+ })
+ }, [navigation])
+
+ function onFinishRating(rating) {
+ setRating(rating)
+ }
+
+ function onChangeText(description) {
+ setDescription(description)
+ }
+
+ function onSubmit() {
+ mutate({
+ variables: {
+ orderId: id,
+ rating: rating,
+ description: description
+ }
+ })
+ }
+
+ function onCompleted(data) {
+ navigation.pop(2)
+ }
+
+ function onError(error) {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message
+ })
+ }
+
+ return (
+ <>
+
+
+
+
+
+ {i18n.t('writeAReview')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {loadingMutation && }
+ {!loadingMutation && (
+
+
+ {i18n.t('submit')}
+
+
+ )}
+
+
+
+
+ >
+ )
+}
+export default RateAndReview
diff --git a/CustomerApp/src/screens/RateAndReview/styles.js b/CustomerApp/src/screens/RateAndReview/styles.js
new file mode 100755
index 0000000..9707c17
--- /dev/null
+++ b/CustomerApp/src/screens/RateAndReview/styles.js
@@ -0,0 +1,79 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { verticalScale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ reviewTextContainer: {
+ width: '100%',
+ height: height * 0.1,
+ alignItems: 'flex-end'
+ },
+ reviewTextSubContainer: {
+ width: '100%',
+ height: '100%',
+ flexDirection: 'row'
+ },
+ reviewTextContainerText: {
+ width: '40%',
+ height: '100%',
+ justifyContent: 'center',
+ alignItems: 'flex-end'
+ },
+ reviewTextContainerImage: {
+ width: '50%',
+ height: '100%',
+ justifyContent: 'center'
+ },
+ ratingContainer: {
+ width: '100%',
+ height: height * 0.1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ ratingSubContainer: {
+ width: '70%',
+ height: '60%'
+ },
+ inputContainer: {
+ width: '100%',
+ height: height * 0.1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ inputSubContainer: {
+ width: '80%',
+ height: '40%',
+ borderBottomColor: colors.horizontalLine,
+ borderBottomWidth: verticalScale(1)
+ },
+ textinput: {
+ height: '100%',
+ ...textStyles.Bold,
+ ...textStyles.Normal
+ },
+ btnContainer: {
+ width: '100%',
+ height: height * 0.1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ },
+ btnSubContainer: {
+ width: '80%',
+ height: '60%'
+ },
+ btnTouch: {
+ flex: 1,
+ backgroundColor: colors.buttonBackground,
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Register/Register.js b/CustomerApp/src/screens/Register/Register.js
new file mode 100755
index 0000000..ca635a4
--- /dev/null
+++ b/CustomerApp/src/screens/Register/Register.js
@@ -0,0 +1,324 @@
+import { useMutation } from '@apollo/react-hooks'
+import { useNavigation, useTheme } from '@react-navigation/native'
+import * as Device from 'expo-device'
+import * as Localization from 'expo-localization'
+import * as Notifications from 'expo-notifications'
+import gql from 'graphql-tag'
+import React, { useContext, useState } from 'react'
+import {
+ KeyboardAvoidingView,
+ Platform,
+ ScrollView,
+ TouchableOpacity,
+ View
+} from 'react-native'
+import { FilledTextField } from 'react-native-material-textfield'
+import { useSafeAreaInsets } from 'react-native-safe-area-context'
+import { createUser } from '../../apollo/server'
+import {
+ CustomIcon,
+ EnategaImage,
+ FlashMessage,
+ Spinner,
+ TextDefault,
+ WrapperView
+} from '../../components'
+import UserContext from '../../context/User'
+import { alignment } from '../../utils/alignment'
+import Analytics from '../../utils/analytics'
+import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant'
+// eslint-disable-next-line camelcase
+import country_codes from '../../utils/country_codes'
+import { scale, verticalScale } from '../../utils/scaling'
+import useStyle from './styles'
+
+const CREATEUSER = gql`
+ ${createUser}
+`
+
+const Logo = require('../../../assets/logo.png')
+
+function Register() {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const navigation = useNavigation()
+ const inset = useSafeAreaInsets()
+ const [email, setEmail] = useState('')
+ const [phone, setPhone] = useState('')
+ const [lastname, setLastname] = useState('')
+ const [password, setPassword] = useState('')
+ const [firstname, setFirstname] = useState('')
+ const [loading, setLoading] = useState(false)
+ const [emailError, setEmailError] = useState(null)
+ const [phoneError, setPhoneError] = useState(null)
+ const [lastnameError, setLastnameError] = useState(null)
+ const [passwordError, setPasswordError] = useState(null)
+ const [firstnameError, setFirstnameError] = useState(null)
+
+ const { setTokenAsync } = useContext(UserContext)
+
+ const [mutate] = useMutation(CREATEUSER, { onCompleted, onError })
+
+ function validateCredentials() {
+ let result = true
+
+ setEmailError(null)
+ setPasswordError(null)
+ setPhoneError(null)
+ setFirstnameError(null)
+ setLastnameError(null)
+
+ const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/
+ if (!emailRegex.test(email.trim())) {
+ setEmailError('Provide a valid email address')
+ result = false
+ }
+ if (!password) {
+ setPasswordError('Password is required')
+ result = false
+ }
+ const phoneRegex = /^\d{11,15}$/
+ if (!phoneRegex.test(phone)) {
+ setPhoneError('Provide a valid phone number')
+ result = false
+ }
+ const nameRegex = /^[A-Za-z]{1,15}$/
+ if (!nameRegex.test(firstname)) {
+ setFirstnameError('First name is required')
+ result = false
+ }
+ if (!nameRegex.test(lastname)) {
+ setLastnameError('Last name is required')
+ result = false
+ }
+ return result
+ }
+
+ async function onCompleted(data) {
+ try {
+ const trackingOpts = {
+ id: data.createUser.userId,
+ usernameOrEmail: data.createUser.email
+ }
+ Analytics.identify(data.createUser.userId, trackingOpts)
+ Analytics.track(Analytics.events.USER_CREATED_ACCOUNT, trackingOpts)
+ setTokenAsync(data.createUser.token)
+ navigation.navigate(NAVIGATION_SCREEN.Menu)
+ } catch (e) {
+ console.log(e)
+ } finally {
+ setLoading(false)
+ }
+ }
+
+ function onError(error) {
+ try {
+ FlashMessage({
+ message: error.graphQLErrors[0].message
+ })
+ } catch (e) {
+ console.log(e)
+ } finally {
+ setLoading(false)
+ }
+ }
+
+ async function mutateLogin(user) {
+ setLoading(true)
+ let notificationToken = null
+ const { status: existingStatus } = await Notifications.getPermissionsAsync()
+ if (existingStatus === 'granted' && Device.isDevice) {
+ notificationToken = (await Notifications.getExpoPushTokenAsync()).data
+ }
+ mutate({ variables: { ...user, notificationToken } })
+ }
+
+ function renderJoinAction() {
+ if (loading) return
+ return (
+ {
+ if (validateCredentials()) {
+ const user = {
+ phone: phone.trim(),
+ email: email.toLowerCase().trim(),
+ password: password,
+ name: firstname + ' ' + lastname,
+ picture: ''
+ }
+ mutateLogin(user)
+ }
+ }}>
+ Signup
+
+ )
+ }
+
+ function updateCountryCode() {
+ const timezone = country_codes.find(
+ value =>
+ value.timezone.toLowerCase() === Localization.timezone.toLowerCase()
+ )
+ if (!phone) {
+ setPhone(timezone.country_code)
+ }
+ }
+
+ return (
+
+
+
+
+
+ navigation.goBack()}
+ style={[styles.backBtnWidth, styles.backBtn]}>
+
+
+
+ Signup
+
+
+
+
+
+
+
+
+ {
+ setFirstname(text.trim())
+ }}
+ maxLength={15}
+ />
+ {
+ setLastname(text.trim())
+ }}
+ maxLength={15}
+ />
+ {
+ setEmail(text.toLowerCase().trim())
+ }}
+ />
+ {
+ setPhone(text.trim())
+ }}
+ />
+ {
+ setPassword(text.trim())
+ }}
+ />
+ {renderJoinAction()}
+
+ navigation.navigate(NAVIGATION_SCREEN.ForgotPassword)
+ }>
+
+ Forgot password?
+
+
+
+
+
+
+
+
+ )
+}
+
+export default Register
diff --git a/CustomerApp/src/screens/Register/styles.js b/CustomerApp/src/screens/Register/styles.js
new file mode 100644
index 0000000..9d53b9e
--- /dev/null
+++ b/CustomerApp/src/screens/Register/styles.js
@@ -0,0 +1,86 @@
+import { useTheme } from '@react-navigation/native'
+import { Dimensions, StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+import { textStyles } from '../../utils/textStyles'
+const { height } = Dimensions.get('window')
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ width100: {
+ width: '100%'
+ },
+ mainContainer: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ upperContainer: {
+ marginTop: verticalScale(60)
+ },
+ subContainer: {
+ flex: 1,
+ width: '80%',
+ alignItems: 'center',
+ ...alignment.PBmedium
+ },
+ imgResponsive: {
+ width: scale(135),
+ height: scale(125)
+ },
+ loadingView: {
+ backgroundColor: colors.background,
+ width: '100%',
+ height: '100%'
+ },
+ marginTop5: {
+ ...alignment.MTsmall
+ },
+ alignItemCenter: {
+ alignItems: 'center'
+ },
+ joinBtn: {
+ width: '100%',
+ height: height * 0.06,
+ backgroundColor: colors.buttonBackground,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: moderateScale(20)
+ },
+ textContainer: {
+ borderRadius: 20,
+ borderTopLeftRadius: 20,
+ borderTopRightRadius: 20,
+ backgroundColor: colors.buttonBackgroundLight,
+ overflow: 'hidden'
+ },
+ labelStyle: {
+ ...textStyles.Medium,
+ marginTop: 3,
+ paddingLeft: 5,
+ paddingTop: scale(1)
+ },
+ headerContainer: {
+ paddingHorizontal: moderateScale(20),
+ flexDirection: 'row',
+ width: '100%',
+ alignItems: 'center',
+ justifyContent: 'space-between'
+ },
+ backBtnWidth: {
+ width: scale(40),
+ aspectRatio: 1
+ },
+ backBtn: {
+ backgroundColor: colors.white,
+ borderRadius: scale(13),
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/screens/Settings/Settings.js b/CustomerApp/src/screens/Settings/Settings.js
new file mode 100644
index 0000000..73a5b78
--- /dev/null
+++ b/CustomerApp/src/screens/Settings/Settings.js
@@ -0,0 +1,328 @@
+import { useMutation } from "@apollo/react-hooks";
+import AsyncStorage from "@react-native-async-storage/async-storage";
+import { useNavigation, useTheme } from "@react-navigation/native";
+import Constants from "expo-constants";
+import * as Device from "expo-device";
+import * as Localization from "expo-localization";
+import * as Notifications from "expo-notifications";
+import * as Updates from "expo-updates";
+import gql from "graphql-tag";
+import React, { useContext, useEffect, useRef, useState } from "react";
+import {
+ AppState,
+ Linking,
+ Platform,
+ StyleSheet,
+ TouchableOpacity,
+ View,
+} from "react-native";
+import { Modalize } from "react-native-modalize";
+import i18n from "../../../i18n";
+import {
+ profile,
+ pushToken,
+ updateNotificationStatus,
+} from "../../apollo/server";
+import {
+ CustomIcon,
+ FlashMessage,
+ Spinner,
+ TextDefault,
+ WrapperView,
+} from "../../components";
+import SwitchBtn from "../../components/FdSwitch/SwitchBtn";
+import UserContext from "../../context/User";
+import { alignment } from "../../utils/alignment";
+import { ICONS_NAME } from "../../utils/constant";
+import { scale } from "../../utils/scaling";
+import SettingModal from "./components/SettingModal";
+import useStyle from "./styles";
+
+const languageTypes = [
+ { value: "English", code: "en", index: 0 },
+ { value: "français", code: "fr", index: 1 },
+ { value: "ភាសាខ្មែរ", code: "km", index: 2 },
+ { value: "中文", code: "zh", index: 3 },
+ { value: "Deutsche", code: "de", index: 4 },
+];
+
+const PUSH_TOKEN = gql`
+ ${pushToken}
+`;
+const UPDATE_NOTIFICATION_TOKEN = gql`
+ ${updateNotificationStatus}
+`;
+const PROFILE = gql`
+ ${profile}
+`;
+
+function Settings() {
+ const styles = useStyle();
+ const { colors } = useTheme();
+ const navigation = useNavigation();
+ const { profile } = useContext(UserContext);
+
+ const [languageName, languageNameSetter] = useState("English");
+ const [offerNotification, offerNotificationSetter] = useState(
+ profile.is_offer_notification
+ );
+ const [orderNotification, orderNotificationSetter] = useState(
+ profile.is_order_notification
+ );
+ const [activeRadio, activeRadioSetter] = useState(languageTypes[0].index);
+ // eslint-disable-next-line no-unused-vars
+ const [appState, setAppState] = useState(AppState.currentState);
+ const [uploadToken] = useMutation(PUSH_TOKEN);
+ const [mutate, { loading }] = useMutation(UPDATE_NOTIFICATION_TOKEN, {
+ onCompleted,
+ onError,
+ refetchQueries: [{ query: PROFILE }],
+ });
+ const modalizeRef = useRef(null);
+
+ useEffect(() => {
+ navigation.setOptions({
+ headerTitle: i18n.t("titleSettings"),
+ headerRight: null,
+ });
+ selectLanguage();
+ checkPermission();
+ }, [navigation]);
+
+ const _handleAppStateChange = async (nextAppState) => {
+ if (nextAppState === "active") {
+ let token = null;
+ const permission = await getPermission();
+ if (permission === "granted") {
+ if (!profile.notificationToken) {
+ token = (await Notifications.getExpoPushTokenAsync()).data;
+ uploadToken({ variables: { token } });
+ }
+ offerNotificationSetter(profile.is_offer_notification);
+ orderNotificationSetter(profile.is_order_notification);
+ } else {
+ offerNotificationSetter(false);
+ orderNotificationSetter(false);
+ }
+ }
+ setAppState(nextAppState);
+ };
+
+ useEffect(() => {
+ AppState.addEventListener("change", _handleAppStateChange);
+ return () => {
+ AppState.remove("change", _handleAppStateChange);
+ };
+ }, []);
+
+ async function checkPermission() {
+ const permission = await getPermission();
+ if (permission !== "granted") {
+ offerNotificationSetter(false);
+ orderNotificationSetter(false);
+ } else {
+ offerNotificationSetter(profile.is_offer_notification);
+ orderNotificationSetter(profile.is_order_notification);
+ }
+ }
+
+ async function getPermission() {
+ const { status } = await Notifications.getPermissionsAsync();
+ return status;
+ }
+
+ async function selectLanguage() {
+ const lang = await AsyncStorage.getItem("enatega-language");
+ if (lang) {
+ const defLang = languageTypes.findIndex((el) => el.code === lang);
+ const langName = languageTypes[defLang].value;
+ activeRadioSetter(defLang);
+ languageNameSetter(langName);
+ }
+ }
+
+ const onSelectedLanguage = async (active) => {
+ const languageInd = active;
+ if (Platform.OS === "android") {
+ const localization = await Localization.getLocalizationAsync();
+ localization.locale = languageTypes[languageInd].code;
+ await AsyncStorage.setItem(
+ "enatega-language",
+ languageTypes[languageInd].code
+ );
+ Updates.reloadAsync();
+ }
+ };
+
+ const onClose = () => {
+ modalizeRef.current.close();
+ };
+
+ function onCompleted() {
+ FlashMessage({
+ message: "Notification Status Updated",
+ });
+ }
+
+ function onError(error) {
+ try {
+ FlashMessage({
+ message: error.networkError.result.errors[0].message,
+ });
+ } catch (err) {}
+ }
+
+ async function updateNotificationStatus(notificationCheck) {
+ let orderNotify, offerNotify;
+ if (!Device.isDevice) {
+ FlashMessage({
+ message: "Notification do not work on simulator",
+ });
+ return;
+ }
+
+ const permission = await getPermission();
+ if (!profile.notificationToken || permission !== "granted") {
+ Linking.openSettings();
+ }
+ if (notificationCheck === "offer") {
+ offerNotificationSetter(!offerNotification);
+ orderNotify = orderNotification;
+ offerNotify = !offerNotification;
+ }
+
+ if (notificationCheck === "order") {
+ orderNotificationSetter(!orderNotification);
+ orderNotify = !orderNotification;
+ offerNotify = offerNotification;
+ }
+ mutate({
+ variables: {
+ offerNotification: offerNotify,
+ orderNotification: orderNotify,
+ },
+ });
+ }
+
+ return (
+
+ {loading && (
+
+
+
+ )}
+
+
+ {Platform.OS === "android" && (
+
+
+
+
+ Language
+
+
+ ({languageName})
+
+
+ modalizeRef.current.open("top")}
+ style={styles.button}
+ >
+
+
+
+
+ )}
+ {
+ updateNotificationStatus("offer");
+ }}
+ style={[styles.notificationContainer, styles.shadow]}
+ >
+
+
+ {" "}
+ Receive Special Offers{" "}
+
+ {
+ updateNotificationStatus("offer");
+ }}
+ />
+
+
+ {
+ updateNotificationStatus("order");
+ }}
+ style={[styles.notificationContainer, styles.shadow]}
+ >
+
+
+ {" "}
+ Get updates on your order status!{" "}
+
+ {
+ updateNotificationStatus("order");
+ }}
+ />
+
+
+
+
+ Version: {Constants.manifest.version}
+
+
+
+
+
+ All rights are reserved by Enatega
+
+
+ {/* Modal for language Changes */}
+
+
+
+
+ );
+}
+export default Settings;
diff --git a/CustomerApp/src/screens/Settings/components/SettingModal.js b/CustomerApp/src/screens/Settings/components/SettingModal.js
new file mode 100644
index 0000000..a4f9930
--- /dev/null
+++ b/CustomerApp/src/screens/Settings/components/SettingModal.js
@@ -0,0 +1,75 @@
+import { useTheme } from '@react-navigation/native'
+import PropTypes from 'prop-types'
+import React, { useState } from 'react'
+import { TouchableOpacity, View } from 'react-native'
+import RadioButton from '../../../components/FdRadioBtn/RadioBtn'
+import TextDefault from '../../../components/Text/TextDefault/TextDefault'
+import { alignment } from '../../../utils/alignment'
+import useStyle from './styles'
+
+const languageTypes = [
+ { value: 'English', code: 'en', index: 0 },
+ { value: 'français', code: 'fr', index: 1 },
+ { value: 'ភាសាខ្មែរ', code: 'km', index: 2 },
+ { value: '中文', code: 'zh', index: 3 },
+ { value: 'Deutsche', code: 'de', index: 4 }
+]
+
+function SettingModal(props) {
+ const styles = useStyle()
+ const { colors } = useTheme()
+ const [activeRadio, activeRadioSetter] = useState(props.activeRadio)
+
+ return (
+
+
+ Select Language
+
+
+ {languageTypes.map((item, index) => (
+ activeRadioSetter(item.index)}
+ style={[styles.radioContainer]}>
+
+ {item.value}
+
+ activeRadioSetter(item.index)}
+ />
+ {/* */}
+
+ ))}
+ {/* */}
+
+ props.onSelectedLanguage(activeRadio)}>
+
+ Done
+
+
+ props.onClose()}>
+ Cancel
+
+ {/* */}
+
+ )
+}
+
+SettingModal.propTypes = {
+ activeRadio: PropTypes.number,
+ onSelectedLanguage: PropTypes.func,
+ onClose: PropTypes.func
+}
+export default SettingModal
diff --git a/CustomerApp/src/screens/Settings/components/styles.js b/CustomerApp/src/screens/Settings/components/styles.js
new file mode 100644
index 0000000..d1bad7c
--- /dev/null
+++ b/CustomerApp/src/screens/Settings/components/styles.js
@@ -0,0 +1,50 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../../utils/alignment'
+import { moderateScale } from '../../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+ return StyleSheet.create({
+ flex: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ width100: {
+ width: '100%'
+ },
+ radioContainer: {
+ width: '70%',
+ backgroundColor: '#FFF',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ ...alignment.PTlarge,
+ ...alignment.PBsmall
+ },
+ horizontalLine: {
+ width: '70%',
+ opacity: 0.3,
+ borderBottomColor: colors.placeHolderColor,
+ borderBottomWidth: StyleSheet.hairlineWidth
+ },
+ button: {
+ justifyContent: 'center',
+ alignItems: 'center',
+ backgroundColor: colors.buttonBackgroundBlue,
+ borderRadius: moderateScale(10),
+ width: '70%',
+ padding: moderateScale(15),
+ ...alignment.MTlarge
+ },
+ modalButtonsContainer: {
+ flexDirection: 'row',
+ justifyContent: 'flex-end'
+ },
+ modalButtons: {
+ ...alignment.Msmall,
+ marginBottom: 0
+ }
+ })
+}
+export default useStyle
diff --git a/CustomerApp/src/screens/Settings/styles.js b/CustomerApp/src/screens/Settings/styles.js
new file mode 100644
index 0000000..bc7c0bc
--- /dev/null
+++ b/CustomerApp/src/screens/Settings/styles.js
@@ -0,0 +1,106 @@
+import { useTheme } from '@react-navigation/native'
+import { StyleSheet } from 'react-native'
+import { alignment } from '../../utils/alignment'
+import { moderateScale, scale, verticalScale } from '../../utils/scaling'
+
+const useStyle = () => {
+ const { colors } = useTheme()
+
+ return StyleSheet.create({
+ flex: {
+ flex: 1
+ },
+ headingLanguage: {
+ width: '85%',
+ justifyContent: 'flex-start',
+ flexDirection: 'row',
+ alignItems: 'center'
+ },
+ shadow: {
+ shadowOffset: { width: scale(2), height: scale(5) },
+ shadowColor: colors.lightBackground,
+ shadowOpacity: 1,
+ shadowRadius: scale(2),
+ elevation: 0,
+ borderWidth: 1,
+ borderColor: colors.lightBackground
+ },
+ mainContainer: {
+ ...alignment.PLsmall,
+ ...alignment.PRsmall
+ },
+ languageContainer: {
+ width: '100%',
+ borderRadius: scale(20),
+ backgroundColor: colors.cardContainer,
+ ...alignment.PRmedium,
+ ...alignment.PTmedium,
+ ...alignment.PBmedium,
+ ...alignment.PLmedium
+ },
+ changeLanguage: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ borderRadius: scale(10),
+ width: '100%',
+ height: verticalScale(18)
+ },
+ button: {
+ width: '15%',
+ height: '100%',
+ alignItems: 'center',
+ justifyContent: 'center'
+ },
+ notificationContainer: {
+ width: '100%',
+ backgroundColor: colors.cardContainer,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ borderRadius: moderateScale(20),
+ ...alignment.PTmedium,
+ ...alignment.PBmedium,
+ ...alignment.PRmedium,
+ ...alignment.PLmedium,
+ ...alignment.MTmedium
+ },
+ notificationChekboxContainer: {
+ flexDirection: 'row',
+ flex: 1,
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ ...alignment.MRsmall
+ },
+ versionContainer: {
+ width: '100%',
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: 'transparent',
+ ...alignment.MTlarge
+ },
+ modalContainer: {
+ width: '100%',
+ backgroundColor: 'white',
+ borderRadius: verticalScale(4),
+ ...alignment.Plarge
+ },
+ radioContainer: {
+ width: '100%',
+ backgroundColor: '#FFF',
+ flexDirection: 'row',
+ alignItems: 'center',
+ ...alignment.PTxSmall,
+ ...alignment.PBxSmall
+ },
+ modalButtonsContainer: {
+ flexDirection: 'row',
+ justifyContent: 'flex-end'
+ },
+ modalButtons: {
+ ...alignment.Msmall,
+ marginBottom: 0
+ }
+ })
+}
+
+export default useStyle
diff --git a/CustomerApp/src/screens/Stripe/StripeCheckout.js b/CustomerApp/src/screens/Stripe/StripeCheckout.js
new file mode 100644
index 0000000..b4b01ba
--- /dev/null
+++ b/CustomerApp/src/screens/Stripe/StripeCheckout.js
@@ -0,0 +1,134 @@
+import React, { useLayoutEffect, useState } from 'react'
+import { ActivityIndicator, Platform } from 'react-native'
+import { WebView } from 'react-native-webview'
+import { myOrders } from '../../apollo/server'
+import gql from 'graphql-tag'
+import { stripeCurrencies } from '../../utils/currencies'
+import getEnvVars from '../../../environment'
+import { useApolloClient } from '@apollo/react-hooks'
+import { useNavigation, useRoute } from '@react-navigation/native'
+import { WrapperView } from '../../components'
+
+const { SERVER_URL, STRIPE_PUBLIC_KEY, STRIPE_IMAGE_URL, STRIPE_STORE_NAME } =
+ getEnvVars()
+const MYORDERS = gql`
+ ${myOrders}
+`
+
+function StripeCheckout() {
+ const [loading, loadingSetter] = useState(true)
+ const navigation = useNavigation()
+ const route = useRoute()
+ const client = useApolloClient()
+ const { _id, currency, email: prepopulatedEmail } = route.params
+ const multiplier = stripeCurrencies.find(
+ ({ currency: curr }) => curr === currency
+ ).multiplier
+ const amount = route.params.amount * multiplier
+ const description = 'Food delivery' // find alternative to this
+ const allowRememberMe = false
+
+ useLayoutEffect(() => {
+ navigation.setOptions({
+ headerRight: null,
+ title: 'Stripe Checkout'
+ })
+ }, [navigation])
+
+ function onClose(flag) {
+ // showMessage here
+ navigation.goBack()
+ }
+
+ async function onPaymentSuccess() {
+ const result = await client.query({
+ query: MYORDERS,
+ fetchPolicy: 'network-only'
+ })
+ const order = result.data.orders.find(order => order.order_id === _id)
+ navigation.reset({
+ routes: [
+ { name: 'Menu' },
+ {
+ name: 'OrderDetail',
+ params: { _id: order._id, clearCart: true }
+ }
+ ]
+ })
+ }
+
+ return (
+
+ {
+ loadingSetter(false)
+ }}
+ source={{
+ html: `
+`,
+ baseUrl: Platform.OS === 'android' ? '' : `${SERVER_URL}`
+ }}
+ scalesPageToFit={Platform.OS === 'android'}
+ onNavigationStateChange={data => {
+ if (data.title === 'cancel') onClose(true)
+ if (data.title === 'failed') onClose(false)
+ if (data.title === 'success') onPaymentSuccess()
+ }}
+ />
+ {loading ? (
+
+ ) : null}
+
+ )
+}
+
+export default StripeCheckout
diff --git a/CustomerApp/src/screens/index.js b/CustomerApp/src/screens/index.js
new file mode 100644
index 0000000..130c191
--- /dev/null
+++ b/CustomerApp/src/screens/index.js
@@ -0,0 +1,53 @@
+import Addresses from './Addresses/Addresses'
+import AnimatedSplash from './AnimatedSplash/AnimatedSplash'
+import Cart from './Cart/Cart'
+import CartAddress from './CartAddress/CartAddress'
+import Chat from './Chat/Chat'
+import SelectVoucher from './Coupon/Coupon'
+import CreateAccount from './CreateAccount/CreateAccount'
+import EditAddress from './EditAddress/EditAddress'
+import ForgotPassword from './ForgotPassword/ForgotPassword'
+import FullMap from './FullMap/FullMap'
+import Help from './Help/Help'
+import HelpBrowser from './HelpBrowser/HelpBrowser'
+import ItemDetail from './ItemDetail/ItemDetail'
+import Login from './Login/Login'
+import Menu from './Menu/Menu'
+import MenuItems from './MenuItems/MenuItems'
+import MyOrders from './MyOrders/MyOrders'
+import NewAddress from './NewAddress/NewAddress'
+import OrderDetail from './OrderDetail/OrderDetail'
+import Paypal from './Paypal/Paypal'
+import Profile from './Profile/Profile'
+import RateAndReview from './RateAndReview/RateAndReview'
+import Register from './Register/Register'
+import Settings from './Settings/Settings'
+import StripeCheckout from './Stripe/StripeCheckout'
+
+export {
+ AnimatedSplash,
+ Addresses,
+ Menu,
+ Cart,
+ CartAddress,
+ Chat,
+ SelectVoucher,
+ CreateAccount,
+ EditAddress,
+ ForgotPassword,
+ FullMap,
+ Help,
+ HelpBrowser,
+ ItemDetail,
+ Login,
+ MenuItems,
+ MyOrders,
+ NewAddress,
+ OrderDetail,
+ Paypal,
+ Profile,
+ RateAndReview,
+ Register,
+ Settings,
+ StripeCheckout
+}
diff --git a/CustomerApp/src/utils/alignment.js b/CustomerApp/src/utils/alignment.js
new file mode 100644
index 0000000..1c2b7a5
--- /dev/null
+++ b/CustomerApp/src/utils/alignment.js
@@ -0,0 +1,135 @@
+import { scale } from './scaling'
+
+const XSMALL = 5
+const SMALL = 10
+const MEDIUM = 15
+const LARGE = 20
+export const alignment = {
+ MxSmall: {
+ margin: scale(XSMALL)
+ },
+ MBxSmall: {
+ marginBottom: scale(XSMALL)
+ },
+ MTxSmall: {
+ marginTop: scale(XSMALL)
+ },
+ MRxSmall: {
+ marginRight: scale(XSMALL)
+ },
+ MLxSmall: {
+ marginLeft: scale(XSMALL)
+ },
+
+ Msmall: {
+ margin: scale(SMALL)
+ },
+ MBsmall: {
+ marginBottom: scale(SMALL)
+ },
+ MTsmall: {
+ marginTop: scale(SMALL)
+ },
+ MRsmall: {
+ marginRight: scale(SMALL)
+ },
+ MLsmall: {
+ marginLeft: scale(SMALL)
+ },
+
+ Mmedium: {
+ margin: scale(MEDIUM)
+ },
+ MBmedium: {
+ marginBottom: scale(MEDIUM)
+ },
+ MTmedium: {
+ marginTop: scale(MEDIUM)
+ },
+ MRmedium: {
+ marginRight: scale(MEDIUM)
+ },
+ MLmedium: {
+ marginLeft: scale(MEDIUM)
+ },
+ Mlarge: {
+ margin: scale(LARGE)
+ },
+ MBlarge: {
+ marginBottom: scale(LARGE)
+ },
+ MTlarge: {
+ marginTop: scale(LARGE)
+ },
+ MRlarge: {
+ marginRight: scale(LARGE)
+ },
+ MLlarge: {
+ marginLeft: scale(LARGE)
+ },
+
+ // Padding
+ PxSmall: {
+ padding: scale(XSMALL)
+ },
+ PBxSmall: {
+ paddingBottom: scale(XSMALL)
+ },
+ PTxSmall: {
+ paddingTop: scale(XSMALL)
+ },
+ PRxSmall: {
+ paddingRight: scale(XSMALL)
+ },
+ PLxSmall: {
+ paddingLeft: scale(XSMALL)
+ },
+
+ Psmall: {
+ padding: scale(SMALL)
+ },
+ PBsmall: {
+ paddingBottom: scale(SMALL)
+ },
+ PTsmall: {
+ paddingTop: scale(SMALL)
+ },
+ PRsmall: {
+ paddingRight: scale(SMALL)
+ },
+ PLsmall: {
+ paddingLeft: scale(SMALL)
+ },
+
+ Pmedium: {
+ padding: scale(MEDIUM)
+ },
+ PBmedium: {
+ paddingBottom: scale(MEDIUM)
+ },
+ PTmedium: {
+ paddingTop: scale(MEDIUM)
+ },
+ PRmedium: {
+ paddingRight: scale(MEDIUM)
+ },
+ PLmedium: {
+ paddingLeft: scale(MEDIUM)
+ },
+
+ Plarge: {
+ padding: scale(LARGE)
+ },
+ PBlarge: {
+ paddingBottom: scale(LARGE)
+ },
+ PTlarge: {
+ paddingTop: scale(LARGE)
+ },
+ PRlarge: {
+ paddingRight: scale(LARGE)
+ },
+ PLlarge: {
+ paddingLeft: scale(LARGE)
+ }
+}
diff --git a/CustomerApp/src/utils/analytics.js b/CustomerApp/src/utils/analytics.js
new file mode 100644
index 0000000..286c9ec
--- /dev/null
+++ b/CustomerApp/src/utils/analytics.js
@@ -0,0 +1,66 @@
+import * as Amplitude from "@amplitude/analytics-react-native";
+import { normalizeTrackingOptions } from "./analyticsUtils";
+import getEnvVars from "../../environment";
+import { getTrackingPermissions } from "./useAppTrackingTransparency";
+const { AMPLITUDE_API_KEY } = getEnvVars();
+
+let isInitialized = false;
+
+export const events = {
+ USER_LOGGED_IN: "USER_LOGGED_IN",
+ USER_LOGGED_OUT: "USER_LOGGED_OUT",
+ USER_CREATED_ACCOUNT: "USER_CREATED_ACCOUNT",
+ // USER_RESET_PASSWORD: 'USER_RESET_PASSWORD',
+ // USER_LINKED_SOCIAL: 'USER_LINKED_SOCIAL',
+ // USER_UPDATED_EMAIL: 'USER_UPDATED_EMAIL',
+ // USER_UPDATED_PROFILE: 'USER_UPDATED_PROFILE',
+ // USER_UPDATED_LINKS: 'USER_UPDATED_SOCIAL_LINKS',
+ // USER_UPDATED_LIKE: 'USER_UPDATED_LIKE',
+ // USER_UPDATED_PRIVACY: 'USER_UPDATED_PRIVACY',
+ // USER_REMOVED_PROJECT: 'USER_REMOVED_PROJECT',
+ // USER_OPENED_CREATION: 'USER_OPENED_CREATION',
+ // USER_UPDATED_SETTINGS: 'USER_UPDATED_SETTINGS',
+ USER_PLACED_ORDER: "USER_PLACED_ORDER",
+};
+
+export async function initialize() {
+ const trackingStatus = await getTrackingPermissions();
+ if (isInitialized || !AMPLITUDE_API_KEY || trackingStatus !== "granted") {
+ return;
+ }
+ Amplitude.init(AMPLITUDE_API_KEY);
+ isInitialized = true;
+}
+
+export async function identify(id, options) {
+ initialize();
+ const properties = normalizeTrackingOptions(options);
+
+ if (properties) {
+ Amplitude.Identify(properties);
+ //await Amplitude.setUserPropertiesAsync(properties)
+ } else {
+ //await Amplitude.clearUserPropertiesAsync()
+ const identifyObj = new Amplitude.Identify();
+ identifyObj.remove(properties);
+ Amplitude.Identify(identifyObj);
+ }
+}
+
+export async function track(event, options) {
+ initialize();
+ const properties = normalizeTrackingOptions(options);
+
+ if (properties) {
+ Amplitude.track(event, properties);
+ } else {
+ Amplitude.track(event);
+ }
+}
+
+export default {
+ events,
+ initialize,
+ identify,
+ track,
+};
diff --git a/CustomerApp/src/utils/analyticsUtils.js b/CustomerApp/src/utils/analyticsUtils.js
new file mode 100644
index 0000000..ca7135a
--- /dev/null
+++ b/CustomerApp/src/utils/analyticsUtils.js
@@ -0,0 +1,17 @@
+export function normalizeTrackingOptions(options) {
+ if (!options) {
+ return null
+ }
+
+ const { usernameOrEmail, ...rest } = options
+
+ if (usernameOrEmail) {
+ if (usernameOrEmail.includes('@')) {
+ rest.email = usernameOrEmail
+ } else {
+ rest.username = usernameOrEmail
+ }
+ }
+
+ return rest
+}
diff --git a/CustomerApp/src/utils/androidBackButton.js b/CustomerApp/src/utils/androidBackButton.js
new file mode 100644
index 0000000..d5e347b
--- /dev/null
+++ b/CustomerApp/src/utils/androidBackButton.js
@@ -0,0 +1,35 @@
+// packages
+import { BackHandler, Alert } from "react-native";
+/**
+ * Attaches an event listener that handles the android-only hardware
+ * back button
+ * @param {Function} callback The function to call on click
+ */
+const handleAndroidBackButton = (callback) => {
+ BackHandler.addEventListener("hardwareBackPress", () => {
+ callback();
+ return true;
+ });
+};
+/**
+ * Removes the event listener in order not to add a new one
+ * every time the view component re-mounts
+ */
+const removeAndroidBackButtonHandler = () => {
+ // BackHandler.removeEventListener('hardwareBackPress')
+ BackHandler.remove("hardwareBackPress");
+};
+const exitAlert = () => {
+ Alert.alert("Confirm exit", "Do you want to quit the app?", [
+ { text: "CANCEL", style: "cancel" },
+ {
+ text: "OK",
+ onPress: () => {
+ BackHandler.exitApp();
+ },
+ },
+ ]);
+ return true;
+};
+
+export { handleAndroidBackButton, removeAndroidBackButtonHandler, exitAlert };
diff --git a/CustomerApp/src/utils/constant.js b/CustomerApp/src/utils/constant.js
new file mode 100644
index 0000000..bdeb585
--- /dev/null
+++ b/CustomerApp/src/utils/constant.js
@@ -0,0 +1,67 @@
+const NAVIGATION_SCREEN = {
+ Menu: 'Menu',
+ Help: 'Help',
+ Cart: 'Cart',
+ Chat: 'Chat',
+ Login: 'Login',
+ Paypal: 'Paypal',
+ Drawer: 'Drawer',
+ Coupon: 'Coupon',
+ Profile: 'Profile',
+ Payment: 'Payment',
+ FullMap: 'FullMap',
+ Settings: 'Settings',
+ MyOrders: 'MyOrders',
+ Register: 'Register',
+ MenuItems: 'MenuItems',
+ Addresses: 'Addresses',
+ NewAddress: 'NewAddress',
+ ItemDetail: 'ItemDetail',
+ HelpBrowser: 'HelpBrowser',
+ EditAddress: 'EditAddress',
+ CartAddress: 'CartAddress',
+ OrderDetail: 'OrderDetail',
+ RateAndReview: 'RateAndReview',
+ ForgotPassword: 'ForgotPassword',
+ StripeCheckout: 'StripeCheckout',
+ CreateAccount: 'CreateAccount'
+}
+
+const ICONS_NAME = {
+ Logo: 'logo',
+ Menu: 'menu',
+ Back: 'back',
+ Exit: 'exit',
+ Cash: 'cash',
+ Visa: 'visa',
+ Home: 'home',
+ Cart: 'cart',
+ Info: 'info',
+ Plus: 'plus',
+ Radio: 'radio',
+ Cross: 'cross',
+ Minus: 'minus',
+ Trash: 'trash',
+ Clock: 'clock',
+ Reload: 'reload',
+ Pencil: 'pencil',
+ Target: 'target',
+ Filter: 'filter',
+ Paypal: 'paypal',
+ Message: 'message',
+ Setting: 'setting',
+ Checked: 'checked',
+ Refresh: 'refresh',
+ Location: 'location',
+ RadioSelect: 'radioSelect'
+}
+
+const SORT_DATA = {
+ Default: 'Default',
+ NameAsc: 'Ascending (A-Z)',
+ NameDesc: 'Descending (Z-A)',
+ PriceAsc: 'Price (Low - High)',
+ PriceDesc: 'Price (High - Low)'
+}
+
+export { NAVIGATION_SCREEN, ICONS_NAME, SORT_DATA }
diff --git a/CustomerApp/src/utils/country_codes.js b/CustomerApp/src/utils/country_codes.js
new file mode 100644
index 0000000..8ba005b
--- /dev/null
+++ b/CustomerApp/src/utils/country_codes.js
@@ -0,0 +1,2554 @@
+const data = [
+ {
+ iso_country_code: 'AF',
+ country: 'Afghanistan',
+ timezone: 'Asia/Kabul',
+ country_code: '93'
+ },
+ {
+ iso_country_code: 'AX',
+ country: 'Aland Islands',
+ timezone: 'Europe/Mariehamn',
+ country_code: '355'
+ },
+ {
+ iso_country_code: 'AL',
+ country: 'Albania',
+ timezone: 'Europe/Tirane',
+ country_code: '355'
+ },
+ {
+ iso_country_code: 'DZ',
+ country: 'Algeria',
+ timezone: 'Africa/Algiers',
+ country_code: '213'
+ },
+ {
+ iso_country_code: 'AS',
+ country: 'American Samoa',
+ timezone: 'Pacific/Pago_Pago',
+ country_code: '1-684'
+ },
+ {
+ iso_country_code: 'AD',
+ country: 'Andorra',
+ timezone: 'Europe/Andorra',
+ country_code: '376'
+ },
+ {
+ iso_country_code: 'AO',
+ country: 'Angola',
+ timezone: 'Africa/Luanda',
+ country_code: '244'
+ },
+ {
+ iso_country_code: 'AI',
+ country: 'Anguilla',
+ timezone: 'America/Anguilla',
+ country_code: '1-264'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Casey',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Davis',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/DumontDUrville',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Mawson',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/McMurdo',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Palmer',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Rothera',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Syowa',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Troll',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AQ',
+ country: 'Antarctica',
+ timezone: 'Antarctica/Vostok',
+ country_code: '672'
+ },
+ {
+ iso_country_code: 'AG',
+ country: 'Antigua and Barbuda',
+ timezone: 'America/Antigua',
+ country_code: '1-268'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Buenos_Aires',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Catamarca',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Cordoba',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Jujuy',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/La_Rioja',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Mendoza',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Rio_Gallegos',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Salta',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/San_Juan',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/San_Luis',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Tucuman',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AR',
+ country: 'Argentina',
+ timezone: 'America/Argentina/Ushuaia',
+ country_code: '54'
+ },
+ {
+ iso_country_code: 'AM',
+ country: 'Armenia',
+ timezone: 'Asia/Yerevan',
+ country_code: '374'
+ },
+ {
+ iso_country_code: 'AW',
+ country: 'Aruba',
+ timezone: 'America/Aruba',
+ country_code: '297'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Antarctica/Macquarie',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Adelaide',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Brisbane',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Broken_Hill',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Currie',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Darwin',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Eucla',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Hobart',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Lindeman',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Lord_Howe',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Melbourne',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Perth',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AU',
+ country: 'Australia',
+ timezone: 'Australia/Sydney',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'AT',
+ country: 'Austria',
+ timezone: 'Europe/Vienna',
+ country_code: '43'
+ },
+ {
+ iso_country_code: 'AZ',
+ country: 'Azerbaijan',
+ timezone: 'Asia/Baku',
+ country_code: '994'
+ },
+ {
+ iso_country_code: 'BS',
+ country: 'Bahamas',
+ timezone: 'America/Nassau',
+ country_code: '1-242'
+ },
+ {
+ iso_country_code: 'BH',
+ country: 'Bahrain',
+ timezone: 'Asia/Bahrain',
+ country_code: '973'
+ },
+ {
+ iso_country_code: 'BD',
+ country: 'Bangladesh',
+ timezone: 'Asia/Dhaka',
+ country_code: '880'
+ },
+ {
+ iso_country_code: 'BB',
+ country: 'Barbados',
+ timezone: 'America/Barbados',
+ country_code: '1-246'
+ },
+ {
+ iso_country_code: 'BY',
+ country: 'Belarus',
+ timezone: 'Europe/Minsk',
+ country_code: '375'
+ },
+ {
+ iso_country_code: 'BE',
+ country: 'Belgium',
+ timezone: 'Europe/Brussels',
+ country_code: '32'
+ },
+ {
+ iso_country_code: 'BZ',
+ country: 'Belize',
+ timezone: 'America/Belize',
+ country_code: '501'
+ },
+ {
+ iso_country_code: 'BJ',
+ country: 'Benin',
+ timezone: 'Africa/Porto-Novo',
+ country_code: '229'
+ },
+ {
+ iso_country_code: 'BM',
+ country: 'Bermuda',
+ timezone: 'Atlantic/Bermuda',
+ country_code: '1-441'
+ },
+ {
+ iso_country_code: 'BT',
+ country: 'Bhutan',
+ timezone: 'Asia/Thimphu',
+ country_code: '975'
+ },
+ {
+ iso_country_code: 'BO',
+ country: 'Bolivia',
+ timezone: 'America/La_Paz',
+ country_code: '591'
+ },
+ {
+ iso_country_code: 'BQ',
+ country: 'Bonaire, Saint Eustatius and Saba ',
+ timezone: 'America/Kralendijk',
+ country_code: '591'
+ },
+ {
+ iso_country_code: 'BA',
+ country: 'Bosnia and Herzegovina',
+ timezone: 'Europe/Sarajevo',
+ country_code: '387'
+ },
+ {
+ iso_country_code: 'BW',
+ country: 'Botswana',
+ timezone: 'Africa/Gaborone',
+ country_code: '267'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Araguaina',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Bahia',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Belem',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Boa_Vista',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Campo_Grande',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Cuiaba',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Eirunepe',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Fortaleza',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Maceio',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Manaus',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Noronha',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Porto_Velho',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Recife',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Rio_Branco',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Santarem',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'BR',
+ country: 'Brazil',
+ timezone: 'America/Sao_Paulo',
+ country_code: '55'
+ },
+ {
+ iso_country_code: 'IO',
+ country: 'British Indian Ocean Territory',
+ timezone: 'Indian/Chagos',
+ country_code: '246'
+ },
+ {
+ iso_country_code: 'VG',
+ country: 'British Virgin Islands',
+ timezone: 'America/Tortola',
+ country_code: '1-284'
+ },
+ {
+ iso_country_code: 'BN',
+ country: 'Brunei',
+ timezone: 'Asia/Brunei',
+ country_code: '673'
+ },
+ {
+ iso_country_code: 'BG',
+ country: 'Bulgaria',
+ timezone: 'Europe/Sofia',
+ country_code: '359'
+ },
+ {
+ iso_country_code: 'BF',
+ country: 'Burkina Faso',
+ timezone: 'Africa/Ouagadougou',
+ country_code: '226'
+ },
+ {
+ iso_country_code: 'BI',
+ country: 'Burundi',
+ timezone: 'Africa/Bujumbura',
+ country_code: '257'
+ },
+ {
+ iso_country_code: 'KH',
+ country: 'Cambodia',
+ timezone: 'Asia/Phnom_Penh',
+ country_code: '855'
+ },
+ {
+ iso_country_code: 'CM',
+ country: 'Cameroon',
+ timezone: 'Africa/Douala',
+ country_code: '237'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Atikokan',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Blanc-Sablon',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Cambridge_Bay',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Creston',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Dawson',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Dawson_Creek',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Edmonton',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Fort_Nelson',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Glace_Bay',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Goose_Bay',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Halifax',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Inuvik',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Iqaluit',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Moncton',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Nipigon',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Pangnirtung',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Rainy_River',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Rankin_Inlet',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Regina',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Resolute',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/St_Johns',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Swift_Current',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Thunder_Bay',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Toronto',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Vancouver',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Whitehorse',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Winnipeg',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CA',
+ country: 'Canada',
+ timezone: 'America/Yellowknife',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'CV',
+ country: 'Cape Verde',
+ timezone: 'Atlantic/Cape_Verde',
+ country_code: '238'
+ },
+ {
+ iso_country_code: 'KY',
+ country: 'Cayman Islands',
+ timezone: 'America/Cayman',
+ country_code: '1-345'
+ },
+ {
+ iso_country_code: 'CF',
+ country: 'Central African Republic',
+ timezone: 'Africa/Bangui',
+ country_code: '236'
+ },
+ {
+ iso_country_code: 'TD',
+ country: 'Chad',
+ timezone: 'Africa/Ndjamena',
+ country_code: '235'
+ },
+ {
+ iso_country_code: 'CL',
+ country: 'Chile',
+ timezone: 'America/Punta_Arenas',
+ country_code: '56'
+ },
+ {
+ iso_country_code: 'CL',
+ country: 'Chile',
+ timezone: 'America/Santiago',
+ country_code: '56'
+ },
+ {
+ iso_country_code: 'CL',
+ country: 'Chile',
+ timezone: 'Pacific/Easter',
+ country_code: '56'
+ },
+ {
+ iso_country_code: 'CN',
+ country: 'China',
+ timezone: 'Asia/Shanghai',
+ country_code: '86'
+ },
+ {
+ iso_country_code: 'CN',
+ country: 'China',
+ timezone: 'Asia/Urumqi',
+ country_code: '86'
+ },
+ {
+ iso_country_code: 'CX',
+ country: 'Christmas Island',
+ timezone: 'Indian/Christmas',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'CC',
+ country: 'Cocos Islands',
+ timezone: 'Indian/Cocos',
+ country_code: '61'
+ },
+ {
+ iso_country_code: 'CO',
+ country: 'Colombia',
+ timezone: 'America/Bogota',
+ country_code: '57'
+ },
+ {
+ iso_country_code: 'KM',
+ country: 'Comoros',
+ timezone: 'Indian/Comoro',
+ country_code: '269'
+ },
+ {
+ iso_country_code: 'CK',
+ country: 'Cook Islands',
+ timezone: 'Pacific/Rarotonga',
+ country_code: '682'
+ },
+ {
+ iso_country_code: 'CR',
+ country: 'Costa Rica',
+ timezone: 'America/Costa_Rica',
+ country_code: '506'
+ },
+ {
+ iso_country_code: 'HR',
+ country: 'Croatia',
+ timezone: 'Europe/Zagreb',
+ country_code: '385'
+ },
+ {
+ iso_country_code: 'CU',
+ country: 'Cuba',
+ timezone: 'America/Havana',
+ country_code: '53'
+ },
+ {
+ iso_country_code: 'CW',
+ country: 'Curaçao',
+ timezone: 'America/Curacao',
+ country_code: '599'
+ },
+ {
+ iso_country_code: 'CY',
+ country: 'Cyprus',
+ timezone: 'Asia/Famagusta',
+ country_code: '357'
+ },
+ {
+ iso_country_code: 'CY',
+ country: 'Cyprus',
+ timezone: 'Asia/Nicosia',
+ country_code: '357'
+ },
+ {
+ iso_country_code: 'CZ',
+ country: 'Czech Republic',
+ timezone: 'Europe/Prague',
+ country_code: '420'
+ },
+ {
+ iso_country_code: 'CD',
+ country: 'Democratic Republic of the Congo',
+ timezone: 'Africa/Kinshasa',
+ country_code: '243'
+ },
+ {
+ iso_country_code: 'CD',
+ country: 'Democratic Republic of the Congo',
+ timezone: 'Africa/Lubumbashi',
+ country_code: '243'
+ },
+ {
+ iso_country_code: 'DK',
+ country: 'Denmark',
+ timezone: 'Europe/Copenhagen',
+ country_code: '45'
+ },
+ {
+ iso_country_code: 'DJ',
+ country: 'Djibouti',
+ timezone: 'Africa/Djibouti',
+ country_code: '253'
+ },
+ {
+ iso_country_code: 'DM',
+ country: 'Dominica',
+ timezone: 'America/Dominica',
+ country_code: '1-767'
+ },
+ {
+ iso_country_code: 'DO',
+ country: 'Dominican Republic',
+ timezone: 'America/Santo_Domingo',
+ country_code: '1-809, 1-829, 1-849'
+ },
+ {
+ iso_country_code: 'TL',
+ country: 'East Timor',
+ timezone: 'Asia/Dili',
+ country_code: '670'
+ },
+ {
+ iso_country_code: 'EC',
+ country: 'Ecuador',
+ timezone: 'America/Guayaquil',
+ country_code: '593'
+ },
+ {
+ iso_country_code: 'EC',
+ country: 'Ecuador',
+ timezone: 'Pacific/Galapagos',
+ country_code: '593'
+ },
+ {
+ iso_country_code: 'EG',
+ country: 'Egypt',
+ timezone: 'Africa/Cairo',
+ country_code: '20'
+ },
+ {
+ iso_country_code: 'SV',
+ country: 'El Salvador',
+ timezone: 'America/El_Salvador',
+ country_code: '503'
+ },
+ {
+ iso_country_code: 'GQ',
+ country: 'Equatorial Guinea',
+ timezone: 'Africa/Malabo',
+ country_code: '240'
+ },
+ {
+ iso_country_code: 'ER',
+ country: 'Eritrea',
+ timezone: 'Africa/Asmara',
+ country_code: '291'
+ },
+ {
+ iso_country_code: 'EE',
+ country: 'Estonia',
+ timezone: 'Europe/Tallinn',
+ country_code: '372'
+ },
+ {
+ iso_country_code: 'ET',
+ country: 'Ethiopia',
+ timezone: 'Africa/Addis_Ababa',
+ country_code: '251'
+ },
+ {
+ iso_country_code: 'FK',
+ country: 'Falkland Islands',
+ timezone: 'Atlantic/Stanley',
+ country_code: '500'
+ },
+ {
+ iso_country_code: 'FO',
+ country: 'Faroe Islands',
+ timezone: 'Atlantic/Faroe',
+ country_code: '298'
+ },
+ {
+ iso_country_code: 'FJ',
+ country: 'Fiji',
+ timezone: 'Pacific/Fiji',
+ country_code: '679'
+ },
+ {
+ iso_country_code: 'FI',
+ country: 'Finland',
+ timezone: 'Europe/Helsinki',
+ country_code: '358'
+ },
+ {
+ iso_country_code: 'FR',
+ country: 'France',
+ timezone: 'Europe/Paris',
+ country_code: '33'
+ },
+ {
+ iso_country_code: 'GF',
+ country: 'French Guiana',
+ timezone: 'America/Cayenne',
+ country_code: '689'
+ },
+ {
+ iso_country_code: 'PF',
+ country: 'French Polynesia',
+ timezone: 'Pacific/Gambier',
+ country_code: '689'
+ },
+ {
+ iso_country_code: 'PF',
+ country: 'French Polynesia',
+ timezone: 'Pacific/Marquesas',
+ country_code: '689'
+ },
+ {
+ iso_country_code: 'PF',
+ country: 'French Polynesia',
+ timezone: 'Pacific/Tahiti',
+ country_code: '689'
+ },
+ {
+ iso_country_code: 'TF',
+ country: 'French Southern Territories',
+ timezone: 'Indian/Kerguelen',
+ country_code: '689'
+ },
+ {
+ iso_country_code: 'GA',
+ country: 'Gabon',
+ timezone: 'Africa/Libreville',
+ country_code: '241'
+ },
+ {
+ iso_country_code: 'GM',
+ country: 'Gambia',
+ timezone: 'Africa/Banjul',
+ country_code: '220'
+ },
+ {
+ iso_country_code: 'GE',
+ country: 'Georgia',
+ timezone: 'Asia/Tbilisi',
+ country_code: '995'
+ },
+ {
+ iso_country_code: 'DE',
+ country: 'Germany',
+ timezone: 'Europe/Berlin',
+ country_code: '49'
+ },
+ {
+ iso_country_code: 'DE',
+ country: 'Germany',
+ timezone: 'Europe/Busingen',
+ country_code: '49'
+ },
+ {
+ iso_country_code: 'GH',
+ country: 'Ghana',
+ timezone: 'Africa/Accra',
+ country_code: '233'
+ },
+ {
+ iso_country_code: 'GI',
+ country: 'Gibraltar',
+ timezone: 'Europe/Gibraltar',
+ country_code: '350'
+ },
+ {
+ iso_country_code: 'GR',
+ country: 'Greece',
+ timezone: 'Europe/Athens',
+ country_code: '30'
+ },
+ {
+ iso_country_code: 'GL',
+ country: 'Greenland',
+ timezone: 'America/Danmarkshavn',
+ country_code: '299'
+ },
+ {
+ iso_country_code: 'GL',
+ country: 'Greenland',
+ timezone: 'America/Godthab',
+ country_code: '299'
+ },
+ {
+ iso_country_code: 'GL',
+ country: 'Greenland',
+ timezone: 'America/Scoresbysund',
+ country_code: '299'
+ },
+ {
+ iso_country_code: 'GL',
+ country: 'Greenland',
+ timezone: 'America/Thule',
+ country_code: '299'
+ },
+ {
+ iso_country_code: 'GD',
+ country: 'Grenada',
+ timezone: 'America/Grenada',
+ country_code: '1-473'
+ },
+ {
+ iso_country_code: 'GP',
+ country: 'Guadeloupe',
+ timezone: 'America/Guadeloupe',
+ country_code: '1-473'
+ },
+ {
+ iso_country_code: 'GU',
+ country: 'Guam',
+ timezone: 'Pacific/Guam',
+ country_code: '1-671'
+ },
+ {
+ iso_country_code: 'GT',
+ country: 'Guatemala',
+ timezone: 'America/Guatemala',
+ country_code: '502'
+ },
+ {
+ iso_country_code: 'GG',
+ country: 'Guernsey',
+ timezone: 'Europe/Guernsey',
+ country_code: '44-1481'
+ },
+ {
+ iso_country_code: 'GN',
+ country: 'Guinea',
+ timezone: 'Africa/Conakry',
+ country_code: '224'
+ },
+ {
+ iso_country_code: 'GW',
+ country: 'Guinea-Bissau',
+ timezone: 'Africa/Bissau',
+ country_code: '245'
+ },
+ {
+ iso_country_code: 'GY',
+ country: 'Guyana',
+ timezone: 'America/Guyana',
+ country_code: '592'
+ },
+ {
+ iso_country_code: 'HT',
+ country: 'Haiti',
+ timezone: 'America/Port-au-Prince',
+ country_code: '509'
+ },
+ {
+ iso_country_code: 'HN',
+ country: 'Honduras',
+ timezone: 'America/Tegucigalpa',
+ country_code: '504'
+ },
+ {
+ iso_country_code: 'HK',
+ country: 'Hong Kong',
+ timezone: 'Asia/Hong_Kong',
+ country_code: '852'
+ },
+ {
+ iso_country_code: 'HU',
+ country: 'Hungary',
+ timezone: 'Europe/Budapest',
+ country_code: '36'
+ },
+ {
+ iso_country_code: 'IS',
+ country: 'Iceland',
+ timezone: 'Atlantic/Reykjavik',
+ country_code: '354'
+ },
+ {
+ iso_country_code: 'IN',
+ country: 'India',
+ timezone: 'Asia/Kolkata',
+ country_code: '91'
+ },
+ {
+ iso_country_code: 'ID',
+ country: 'Indonesia',
+ timezone: 'Asia/Jakarta',
+ country_code: '62'
+ },
+ {
+ iso_country_code: 'ID',
+ country: 'Indonesia',
+ timezone: 'Asia/Jayapura',
+ country_code: '62'
+ },
+ {
+ iso_country_code: 'ID',
+ country: 'Indonesia',
+ timezone: 'Asia/Makassar',
+ country_code: '62'
+ },
+ {
+ iso_country_code: 'ID',
+ country: 'Indonesia',
+ timezone: 'Asia/Pontianak',
+ country_code: '62'
+ },
+ {
+ iso_country_code: 'IR',
+ country: 'Iran',
+ timezone: 'Asia/Tehran',
+ country_code: '98'
+ },
+ {
+ iso_country_code: 'IQ',
+ country: 'Iraq',
+ timezone: 'Asia/Baghdad',
+ country_code: '964'
+ },
+ {
+ iso_country_code: 'IE',
+ country: 'Ireland',
+ timezone: 'Europe/Dublin',
+ country_code: '353'
+ },
+ {
+ iso_country_code: 'IM',
+ country: 'Isle of Man',
+ timezone: 'Europe/Isle_of_Man',
+ country_code: '44-1624'
+ },
+ {
+ iso_country_code: 'IL',
+ country: 'Israel',
+ timezone: 'Asia/Jerusalem',
+ country_code: '972'
+ },
+ {
+ iso_country_code: 'IT',
+ country: 'Italy',
+ timezone: 'Europe/Rome',
+ country_code: '39'
+ },
+ {
+ iso_country_code: 'CI',
+ country: 'Ivory Coast',
+ timezone: 'Africa/Abidjan',
+ country_code: '225'
+ },
+ {
+ iso_country_code: 'JM',
+ country: 'Jamaica',
+ timezone: 'America/Jamaica',
+ country_code: '1-876'
+ },
+ {
+ iso_country_code: 'JP',
+ country: 'Japan',
+ timezone: 'Asia/Tokyo',
+ country_code: '81'
+ },
+ {
+ iso_country_code: 'JE',
+ country: 'Jersey',
+ timezone: 'Europe/Jersey',
+ country_code: '44-1534'
+ },
+ {
+ iso_country_code: 'JO',
+ country: 'Jordan',
+ timezone: 'Asia/Amman',
+ country_code: '962'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Almaty',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Aqtau',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Aqtobe',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Atyrau',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Oral',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Qostanay',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KZ',
+ country: 'Kazakhstan',
+ timezone: 'Asia/Qyzylorda',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'KE',
+ country: 'Kenya',
+ timezone: 'Africa/Nairobi',
+ country_code: '254'
+ },
+ {
+ iso_country_code: 'KI',
+ country: 'Kiribati',
+ timezone: 'Pacific/Enderbury',
+ country_code: '686'
+ },
+ {
+ iso_country_code: 'KI',
+ country: 'Kiribati',
+ timezone: 'Pacific/Kiritimati',
+ country_code: '686'
+ },
+ {
+ iso_country_code: 'KI',
+ country: 'Kiribati',
+ timezone: 'Pacific/Tarawa',
+ country_code: '686'
+ },
+ {
+ iso_country_code: 'KW',
+ country: 'Kuwait',
+ timezone: 'Asia/Kuwait',
+ country_code: '965'
+ },
+ {
+ iso_country_code: 'KG',
+ country: 'Kyrgyzstan',
+ timezone: 'Asia/Bishkek',
+ country_code: '996'
+ },
+ {
+ iso_country_code: 'LA',
+ country: 'Laos',
+ timezone: 'Asia/Vientiane',
+ country_code: '856'
+ },
+ {
+ iso_country_code: 'LV',
+ country: 'Latvia',
+ timezone: 'Europe/Riga',
+ country_code: '371'
+ },
+ {
+ iso_country_code: 'LB',
+ country: 'Lebanon',
+ timezone: 'Asia/Beirut',
+ country_code: '961'
+ },
+ {
+ iso_country_code: 'LS',
+ country: 'Lesotho',
+ timezone: 'Africa/Maseru',
+ country_code: '266'
+ },
+ {
+ iso_country_code: 'LR',
+ country: 'Liberia',
+ timezone: 'Africa/Monrovia',
+ country_code: '231'
+ },
+ {
+ iso_country_code: 'LY',
+ country: 'Libya',
+ timezone: 'Africa/Tripoli',
+ country_code: '218'
+ },
+ {
+ iso_country_code: 'LI',
+ country: 'Liechtenstein',
+ timezone: 'Europe/Vaduz',
+ country_code: '423'
+ },
+ {
+ iso_country_code: 'LT',
+ country: 'Lithuania',
+ timezone: 'Europe/Vilnius',
+ country_code: '370'
+ },
+ {
+ iso_country_code: 'LU',
+ country: 'Luxembourg',
+ timezone: 'Europe/Luxembourg',
+ country_code: '352'
+ },
+ {
+ iso_country_code: 'MO',
+ country: 'Macao',
+ timezone: 'Asia/Macau',
+ country_code: '853'
+ },
+ {
+ iso_country_code: 'MK',
+ country: 'Macedonia',
+ timezone: 'Europe/Skopje',
+ country_code: '389'
+ },
+ {
+ iso_country_code: 'MG',
+ country: 'Madagascar',
+ timezone: 'Indian/Antananarivo',
+ country_code: '261'
+ },
+ {
+ iso_country_code: 'MW',
+ country: 'Malawi',
+ timezone: 'Africa/Blantyre',
+ country_code: '265'
+ },
+ {
+ iso_country_code: 'MY',
+ country: 'Malaysia',
+ timezone: 'Asia/Kuala_Lumpur',
+ country_code: '60'
+ },
+ {
+ iso_country_code: 'MY',
+ country: 'Malaysia',
+ timezone: 'Asia/Kuching',
+ country_code: '60'
+ },
+ {
+ iso_country_code: 'MV',
+ country: 'Maldives',
+ timezone: 'Indian/Maldives',
+ country_code: '960'
+ },
+ {
+ iso_country_code: 'ML',
+ country: 'Mali',
+ timezone: 'Africa/Bamako',
+ country_code: '223'
+ },
+ {
+ iso_country_code: 'MT',
+ country: 'Malta',
+ timezone: 'Europe/Malta',
+ country_code: '356'
+ },
+ {
+ iso_country_code: 'MH',
+ country: 'Marshall Islands',
+ timezone: 'Pacific/Kwajalein',
+ country_code: '692'
+ },
+ {
+ iso_country_code: 'MH',
+ country: 'Marshall Islands',
+ timezone: 'Pacific/Majuro',
+ country_code: '692'
+ },
+ {
+ iso_country_code: 'MQ',
+ country: 'Martinique',
+ timezone: 'America/Martinique',
+ country_code: '222'
+ },
+ {
+ iso_country_code: 'MR',
+ country: 'Mauritania',
+ timezone: 'Africa/Nouakchott',
+ country_code: '222'
+ },
+ {
+ iso_country_code: 'MU',
+ country: 'Mauritius',
+ timezone: 'Indian/Mauritius',
+ country_code: '230'
+ },
+ {
+ iso_country_code: 'YT',
+ country: 'Mayotte',
+ timezone: 'Indian/Mayotte',
+ country_code: '262'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Bahia_Banderas',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Cancun',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Chihuahua',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Hermosillo',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Matamoros',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Mazatlan',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Merida',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Mexico_City',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Monterrey',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Ojinaga',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'MX',
+ country: 'Mexico',
+ timezone: 'America/Tijuana',
+ country_code: '52'
+ },
+ {
+ iso_country_code: 'FM',
+ country: 'Micronesia',
+ timezone: 'Pacific/Chuuk',
+ country_code: '691'
+ },
+ {
+ iso_country_code: 'FM',
+ country: 'Micronesia',
+ timezone: 'Pacific/Kosrae',
+ country_code: '691'
+ },
+ {
+ iso_country_code: 'FM',
+ country: 'Micronesia',
+ timezone: 'Pacific/Pohnpei',
+ country_code: '691'
+ },
+ {
+ iso_country_code: 'MD',
+ country: 'Moldova',
+ timezone: 'Europe/Chisinau',
+ country_code: '373'
+ },
+ {
+ iso_country_code: 'MC',
+ country: 'Monaco',
+ timezone: 'Europe/Monaco',
+ country_code: '377'
+ },
+ {
+ iso_country_code: 'MN',
+ country: 'Mongolia',
+ timezone: 'Asia/Choibalsan',
+ country_code: '976'
+ },
+ {
+ iso_country_code: 'MN',
+ country: 'Mongolia',
+ timezone: 'Asia/Hovd',
+ country_code: '976'
+ },
+ {
+ iso_country_code: 'MN',
+ country: 'Mongolia',
+ timezone: 'Asia/Ulaanbaatar',
+ country_code: '976'
+ },
+ {
+ iso_country_code: 'ME',
+ country: 'Montenegro',
+ timezone: 'Europe/Podgorica',
+ country_code: '382'
+ },
+ {
+ iso_country_code: 'MS',
+ country: 'Montserrat',
+ timezone: 'America/Montserrat',
+ country_code: '1-664'
+ },
+ {
+ iso_country_code: 'MA',
+ country: 'Morocco',
+ timezone: 'Africa/Casablanca',
+ country_code: '212'
+ },
+ {
+ iso_country_code: 'MZ',
+ country: 'Mozambique',
+ timezone: 'Africa/Maputo',
+ country_code: '258'
+ },
+ {
+ iso_country_code: 'MM',
+ country: 'Myanmar',
+ timezone: 'Asia/Yangon',
+ country_code: '95'
+ },
+ {
+ iso_country_code: 'NA',
+ country: 'Namibia',
+ timezone: 'Africa/Windhoek',
+ country_code: '264'
+ },
+ {
+ iso_country_code: 'NR',
+ country: 'Nauru',
+ timezone: 'Pacific/Nauru',
+ country_code: '674'
+ },
+ {
+ iso_country_code: 'NP',
+ country: 'Nepal',
+ timezone: 'Asia/Kathmandu',
+ country_code: '977'
+ },
+ {
+ iso_country_code: 'NL',
+ country: 'Netherlands',
+ timezone: 'Europe/Amsterdam',
+ country_code: '31'
+ },
+ {
+ iso_country_code: 'NC',
+ country: 'New Caledonia',
+ timezone: 'Pacific/Noumea',
+ country_code: '687'
+ },
+ {
+ iso_country_code: 'NZ',
+ country: 'New Zealand',
+ timezone: 'Pacific/Auckland',
+ country_code: '64'
+ },
+ {
+ iso_country_code: 'NZ',
+ country: 'New Zealand',
+ timezone: 'Pacific/Chatham',
+ country_code: '64'
+ },
+ {
+ iso_country_code: 'NI',
+ country: 'Nicaragua',
+ timezone: 'America/Managua',
+ country_code: '505'
+ },
+ {
+ iso_country_code: 'NE',
+ country: 'Niger',
+ timezone: 'Africa/Niamey',
+ country_code: '227'
+ },
+ {
+ iso_country_code: 'NG',
+ country: 'Nigeria',
+ timezone: 'Africa/Lagos',
+ country_code: '234'
+ },
+ {
+ iso_country_code: 'NU',
+ country: 'Niue',
+ timezone: 'Pacific/Niue',
+ country_code: '683'
+ },
+ {
+ iso_country_code: 'NF',
+ country: 'Norfolk Island',
+ timezone: 'Pacific/Norfolk',
+ country_code: '683'
+ },
+ {
+ iso_country_code: 'KP',
+ country: 'North Korea',
+ timezone: 'Asia/Pyongyang',
+ country_code: '850'
+ },
+ {
+ iso_country_code: 'MP',
+ country: 'Northern Mariana Islands',
+ timezone: 'Pacific/Saipan',
+ country_code: '1-670'
+ },
+ {
+ iso_country_code: 'NO',
+ country: 'Norway',
+ timezone: 'Europe/Oslo',
+ country_code: '47'
+ },
+ {
+ iso_country_code: 'OM',
+ country: 'Oman',
+ timezone: 'Asia/Muscat',
+ country_code: '968'
+ },
+ {
+ iso_country_code: 'PK',
+ country: 'Pakistan',
+ timezone: 'Asia/Karachi',
+ country_code: '92'
+ },
+ {
+ iso_country_code: 'PW',
+ country: 'Palau',
+ timezone: 'Pacific/Palau',
+ country_code: '680'
+ },
+ {
+ iso_country_code: 'PS',
+ country: 'Palestinian Territory',
+ timezone: 'Asia/Gaza',
+ country_code: '970'
+ },
+ {
+ iso_country_code: 'PS',
+ country: 'Palestinian Territory',
+ timezone: 'Asia/Hebron',
+ country_code: '970'
+ },
+ {
+ iso_country_code: 'PA',
+ country: 'Panama',
+ timezone: 'America/Panama',
+ country_code: '507'
+ },
+ {
+ iso_country_code: 'PG',
+ country: 'Papua New Guinea',
+ timezone: 'Pacific/Bougainville',
+ country_code: '675'
+ },
+ {
+ iso_country_code: 'PG',
+ country: 'Papua New Guinea',
+ timezone: 'Pacific/Port_Moresby',
+ country_code: '675'
+ },
+ {
+ iso_country_code: 'PY',
+ country: 'Paraguay',
+ timezone: 'America/Asuncion',
+ country_code: '595'
+ },
+ {
+ iso_country_code: 'PE',
+ country: 'Peru',
+ timezone: 'America/Lima',
+ country_code: '51'
+ },
+ {
+ iso_country_code: 'PH',
+ country: 'Philippines',
+ timezone: 'Asia/Manila',
+ country_code: '63'
+ },
+ {
+ iso_country_code: 'PN',
+ country: 'Pitcairn',
+ timezone: 'Pacific/Pitcairn',
+ country_code: '64'
+ },
+ {
+ iso_country_code: 'PL',
+ country: 'Poland',
+ timezone: 'Europe/Warsaw',
+ country_code: '48'
+ },
+ {
+ iso_country_code: 'PT',
+ country: 'Portugal',
+ timezone: 'Atlantic/Azores',
+ country_code: '351'
+ },
+ {
+ iso_country_code: 'PT',
+ country: 'Portugal',
+ timezone: 'Atlantic/Madeira',
+ country_code: '351'
+ },
+ {
+ iso_country_code: 'PT',
+ country: 'Portugal',
+ timezone: 'Europe/Lisbon',
+ country_code: '351'
+ },
+ {
+ iso_country_code: 'PR',
+ country: 'Puerto Rico',
+ timezone: 'America/Puerto_Rico',
+ country_code: '1-787, 1-939'
+ },
+ {
+ iso_country_code: 'QA',
+ country: 'Qatar',
+ timezone: 'Asia/Qatar',
+ country_code: '974'
+ },
+ {
+ iso_country_code: 'CG',
+ country: 'Republic of the Congo',
+ timezone: 'Africa/Brazzaville',
+ country_code: '242'
+ },
+ {
+ iso_country_code: 'RE',
+ country: 'Reunion',
+ timezone: 'Indian/Reunion',
+ country_code: '262'
+ },
+ {
+ iso_country_code: 'RO',
+ country: 'Romania',
+ timezone: 'Europe/Bucharest',
+ country_code: '40'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Anadyr',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Barnaul',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Chita',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Irkutsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Kamchatka',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Khandyga',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Krasnoyarsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Magadan',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Novokuznetsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Novosibirsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Omsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Sakhalin',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Srednekolymsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Tomsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Ust-Nera',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Vladivostok',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Yakutsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Asia/Yekaterinburg',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Astrakhan',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Kaliningrad',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Kirov',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Moscow',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Samara',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Saratov',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Ulyanovsk',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RU',
+ country: 'Russia',
+ timezone: 'Europe/Volgograd',
+ country_code: '7'
+ },
+ {
+ iso_country_code: 'RW',
+ country: 'Rwanda',
+ timezone: 'Africa/Kigali',
+ country_code: '250'
+ },
+ {
+ iso_country_code: 'BL',
+ country: 'Saint Barthélemy',
+ timezone: 'America/St_Barthelemy',
+ country_code: '590'
+ },
+ {
+ iso_country_code: 'SH',
+ country: 'Saint Helena',
+ timezone: 'Atlantic/St_Helena',
+ country_code: '290'
+ },
+ {
+ iso_country_code: 'KN',
+ country: 'Saint Kitts and Nevis',
+ timezone: 'America/St_Kitts',
+ country_code: '1-869'
+ },
+ {
+ iso_country_code: 'LC',
+ country: 'Saint Lucia',
+ timezone: 'America/St_Lucia',
+ country_code: '1-758'
+ },
+ {
+ iso_country_code: 'MF',
+ country: 'Saint Martin',
+ timezone: 'America/Marigot',
+ country_code: '590'
+ },
+ {
+ iso_country_code: 'PM',
+ country: 'Saint Pierre and Miquelon',
+ timezone: 'America/Miquelon',
+ country_code: '508'
+ },
+ {
+ iso_country_code: 'VC',
+ country: 'Saint Vincent and the Grenadines',
+ timezone: 'America/St_Vincent',
+ country_code: '1-784'
+ },
+ {
+ iso_country_code: 'WS',
+ country: 'Samoa',
+ timezone: 'Pacific/Apia',
+ country_code: '685'
+ },
+ {
+ iso_country_code: 'SM',
+ country: 'San Marino',
+ timezone: 'Europe/San_Marino',
+ country_code: '378'
+ },
+ {
+ iso_country_code: 'ST',
+ country: 'Sao Tome and Principe',
+ timezone: 'Africa/Sao_Tome',
+ country_code: '239'
+ },
+ {
+ iso_country_code: 'SA',
+ country: 'Saudi Arabia',
+ timezone: 'Asia/Riyadh',
+ country_code: '966'
+ },
+ {
+ iso_country_code: 'SN',
+ country: 'Senegal',
+ timezone: 'Africa/Dakar',
+ country_code: '221'
+ },
+ {
+ iso_country_code: 'RS',
+ country: 'Serbia',
+ timezone: 'Europe/Belgrade',
+ country_code: '381'
+ },
+ {
+ iso_country_code: 'SC',
+ country: 'Seychelles',
+ timezone: 'Indian/Mahe',
+ country_code: '248'
+ },
+ {
+ iso_country_code: 'SL',
+ country: 'Sierra Leone',
+ timezone: 'Africa/Freetown',
+ country_code: '232'
+ },
+ {
+ iso_country_code: 'SG',
+ country: 'Singapore',
+ timezone: 'Asia/Singapore',
+ country_code: '65'
+ },
+ {
+ iso_country_code: 'SX',
+ country: 'Sint Maarten',
+ timezone: 'America/Lower_Princes',
+ country_code: '1-721'
+ },
+ {
+ iso_country_code: 'SK',
+ country: 'Slovakia',
+ timezone: 'Europe/Bratislava',
+ country_code: '421'
+ },
+ {
+ iso_country_code: 'SI',
+ country: 'Slovenia',
+ timezone: 'Europe/Ljubljana',
+ country_code: '386'
+ },
+ {
+ iso_country_code: 'SB',
+ country: 'Solomon Islands',
+ timezone: 'Pacific/Guadalcanal',
+ country_code: '677'
+ },
+ {
+ iso_country_code: 'SO',
+ country: 'Somalia',
+ timezone: 'Africa/Mogadishu',
+ country_code: '252'
+ },
+ {
+ iso_country_code: 'ZA',
+ country: 'South Africa',
+ timezone: 'Africa/Johannesburg',
+ country_code: '27'
+ },
+ {
+ iso_country_code: 'GS',
+ country: 'South Georgia and the South Sandwich Islands',
+ timezone: 'Atlantic/South_Georgia',
+ country_code: '27'
+ },
+ {
+ iso_country_code: 'KR',
+ country: 'South Korea',
+ timezone: 'Asia/Seoul',
+ country_code: '82'
+ },
+ {
+ iso_country_code: 'SS',
+ country: 'South Sudan',
+ timezone: 'Africa/Juba',
+ country_code: '211'
+ },
+ {
+ iso_country_code: 'ES',
+ country: 'Spain',
+ timezone: 'Africa/Ceuta',
+ country_code: '34'
+ },
+ {
+ iso_country_code: 'ES',
+ country: 'Spain',
+ timezone: 'Atlantic/Canary',
+ country_code: '34'
+ },
+ {
+ iso_country_code: 'ES',
+ country: 'Spain',
+ timezone: 'Europe/Madrid',
+ country_code: '34'
+ },
+ {
+ iso_country_code: 'LK',
+ country: 'Sri Lanka',
+ timezone: 'Asia/Colombo',
+ country_code: '94'
+ },
+ {
+ iso_country_code: 'SD',
+ country: 'Sudan',
+ timezone: 'Africa/Khartoum',
+ country_code: '249'
+ },
+ {
+ iso_country_code: 'SR',
+ country: 'Suriname',
+ timezone: 'America/Paramaribo',
+ country_code: '597'
+ },
+ {
+ iso_country_code: 'SJ',
+ country: 'Svalbard and Jan Mayen',
+ timezone: 'Arctic/Longyearbyen',
+ country_code: '47'
+ },
+ {
+ iso_country_code: 'SZ',
+ country: 'Swaziland',
+ timezone: 'Africa/Mbabane',
+ country_code: '268'
+ },
+ {
+ iso_country_code: 'SE',
+ country: 'Sweden',
+ timezone: 'Europe/Stockholm',
+ country_code: '46'
+ },
+ {
+ iso_country_code: 'CH',
+ country: 'Switzerland',
+ timezone: 'Europe/Zurich',
+ country_code: '41'
+ },
+ {
+ iso_country_code: 'SY',
+ country: 'Syria',
+ timezone: 'Asia/Damascus',
+ country_code: '963'
+ },
+ {
+ iso_country_code: 'TW',
+ country: 'Taiwan',
+ timezone: 'Asia/Taipei',
+ country_code: '886'
+ },
+ {
+ iso_country_code: 'TJ',
+ country: 'Tajikistan',
+ timezone: 'Asia/Dushanbe',
+ country_code: '992'
+ },
+ {
+ iso_country_code: 'TZ',
+ country: 'Tanzania',
+ timezone: 'Africa/Dar_es_Salaam',
+ country_code: '255'
+ },
+ {
+ iso_country_code: 'TH',
+ country: 'Thailand',
+ timezone: 'Asia/Bangkok',
+ country_code: '66'
+ },
+ {
+ iso_country_code: 'TG',
+ country: 'Togo',
+ timezone: 'Africa/Lome',
+ country_code: '228'
+ },
+ {
+ iso_country_code: 'TK',
+ country: 'Tokelau',
+ timezone: 'Pacific/Fakaofo',
+ country_code: '690'
+ },
+ {
+ iso_country_code: 'TO',
+ country: 'Tonga',
+ timezone: 'Pacific/Tongatapu',
+ country_code: '676'
+ },
+ {
+ iso_country_code: 'TT',
+ country: 'Trinidad and Tobago',
+ timezone: 'America/Port_of_Spain',
+ country_code: '1-868'
+ },
+ {
+ iso_country_code: 'TN',
+ country: 'Tunisia',
+ timezone: 'Africa/Tunis',
+ country_code: '216'
+ },
+ {
+ iso_country_code: 'TR',
+ country: 'Turkey',
+ timezone: 'Europe/Istanbul',
+ country_code: '90'
+ },
+ {
+ iso_country_code: 'TM',
+ country: 'Turkmenistan',
+ timezone: 'Asia/Ashgabat',
+ country_code: '993'
+ },
+ {
+ iso_country_code: 'TC',
+ country: 'Turks and Caicos Islands',
+ timezone: 'America/Grand_Turk',
+ country_code: '1-649'
+ },
+ {
+ iso_country_code: 'TV',
+ country: 'Tuvalu',
+ timezone: 'Pacific/Funafuti',
+ country_code: '688'
+ },
+ {
+ iso_country_code: 'VI',
+ country: 'U.S. Virgin Islands',
+ timezone: 'America/St_Thomas',
+ country_code: '1-340'
+ },
+ {
+ iso_country_code: 'UG',
+ country: 'Uganda',
+ timezone: 'Africa/Kampala',
+ country_code: '256'
+ },
+ {
+ iso_country_code: 'UA',
+ country: 'Ukraine',
+ timezone: 'Europe/Kiev',
+ country_code: '380'
+ },
+ {
+ iso_country_code: 'UA',
+ country: 'Ukraine',
+ timezone: 'Europe/Simferopol',
+ country_code: '380'
+ },
+ {
+ iso_country_code: 'UA',
+ country: 'Ukraine',
+ timezone: 'Europe/Uzhgorod',
+ country_code: '380'
+ },
+ {
+ iso_country_code: 'UA',
+ country: 'Ukraine',
+ timezone: 'Europe/Zaporozhye',
+ country_code: '380'
+ },
+ {
+ iso_country_code: 'AE',
+ country: 'United Arab Emirates',
+ timezone: 'Asia/Dubai',
+ country_code: '971'
+ },
+ {
+ iso_country_code: 'GB',
+ country: 'United Kingdom',
+ timezone: 'Europe/London',
+ country_code: '44'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Adak',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Anchorage',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Boise',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Chicago',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Denver',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Detroit',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Indianapolis',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Knox',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Marengo',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Petersburg',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Tell_City',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Vevay',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Vincennes',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Indiana/Winamac',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Juneau',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Kentucky/Louisville',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Kentucky/Monticello',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Los_Angeles',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Menominee',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Metlakatla',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/New_York',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Nome',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/North_Dakota/Beulah',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/North_Dakota/Center',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/North_Dakota/New_Salem',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Phoenix',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Sitka',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'America/Yakutat',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'US',
+ country: 'United States',
+ timezone: 'Pacific/Honolulu',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'UM',
+ country: 'United States Minor Outlying Islands',
+ timezone: 'Pacific/Midway',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'UM',
+ country: 'United States Minor Outlying Islands',
+ timezone: 'Pacific/Wake',
+ country_code: '1'
+ },
+ {
+ iso_country_code: 'UY',
+ country: 'Uruguay',
+ timezone: 'America/Montevideo',
+ country_code: '598'
+ },
+ {
+ iso_country_code: 'UZ',
+ country: 'Uzbekistan',
+ timezone: 'Asia/Samarkand',
+ country_code: '998'
+ },
+ {
+ iso_country_code: 'UZ',
+ country: 'Uzbekistan',
+ timezone: 'Asia/Tashkent',
+ country_code: '998'
+ },
+ {
+ iso_country_code: 'VU',
+ country: 'Vanuatu',
+ timezone: 'Pacific/Efate',
+ country_code: '678'
+ },
+ {
+ iso_country_code: 'VA',
+ country: 'Vatican',
+ timezone: 'Europe/Vatican',
+ country_code: '379'
+ },
+ {
+ iso_country_code: 'VE',
+ country: 'Venezuela',
+ timezone: 'America/Caracas',
+ country_code: '58'
+ },
+ {
+ iso_country_code: 'VN',
+ country: 'Vietnam',
+ timezone: 'Asia/Ho_Chi_Minh',
+ country_code: '84'
+ },
+ {
+ iso_country_code: 'WF',
+ country: 'Wallis and Futuna',
+ timezone: 'Pacific/Wallis',
+ country_code: '681'
+ },
+ {
+ iso_country_code: 'EH',
+ country: 'Western Sahara',
+ timezone: 'Africa/El_Aaiun',
+ country_code: '212'
+ },
+ {
+ iso_country_code: 'YE',
+ country: 'Yemen',
+ timezone: 'Asia/Aden',
+ country_code: '967'
+ },
+ {
+ iso_country_code: 'ZM',
+ country: 'Zambia',
+ timezone: 'Africa/Lusaka',
+ country_code: '260'
+ },
+ {
+ iso_country_code: 'ZW',
+ country: 'Zimbabwe',
+ timezone: 'Africa/Harare',
+ country_code: '263'
+ }
+]
+
+export default data
diff --git a/CustomerApp/src/utils/currencies.js b/CustomerApp/src/utils/currencies.js
new file mode 100644
index 0000000..1053980
--- /dev/null
+++ b/CustomerApp/src/utils/currencies.js
@@ -0,0 +1,165 @@
+export const stripeCurrencies = [
+ { currency: 'USD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AED', currency_symbol: 'د.إ', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AFN', currency_symbol: '؋', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ALL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AMD', currency_symbol: '֏', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ANG', currency_symbol: 'ƒ', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AOA', currency_symbol: 'Kz', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ARS', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AUD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AWG', currency_symbol: 'ƒ', multiplier: 100, type: 'STRIPE' },
+ { currency: 'AZN', currency_symbol: '₼', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BAM', currency_symbol: 'BAM', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BBD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BDT', currency_symbol: '৳', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BGN', currency_symbol: 'лв', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BIF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'BMD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BND', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BOB', currency_symbol: 'Bs.', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BRL', currency_symbol: 'R$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BSD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BWP', currency_symbol: 'P', multiplier: 100, type: 'STRIPE' },
+ { currency: 'BZD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CAD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CDF', currency_symbol: 'Fr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CHF', currency_symbol: 'Fr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CLP', currency_symbol: '$', multiplier: 1, type: 'STRIPE' },
+ { currency: 'CNY', currency_symbol: '¥', multiplier: 100, type: 'STRIPE' },
+ { currency: 'COP', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CRC', currency_symbol: '₡', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CVE', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'CZK', currency_symbol: 'Kč', multiplier: 100, type: 'STRIPE' },
+ { currency: 'DJF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'DKK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'DOP', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'DZD', currency_symbol: 'د.ج', multiplier: 100, type: 'STRIPE' },
+ { currency: 'EGP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ETB', currency_symbol: 'Br', multiplier: 100, type: 'STRIPE' },
+ { currency: 'EUR', currency_symbol: '€', multiplier: 100, type: 'STRIPE' },
+ { currency: 'FJD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'FKP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GBP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GEL', currency_symbol: '₾', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GIP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GMD', currency_symbol: 'D', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GNF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'GTQ', currency_symbol: 'Q', multiplier: 100, type: 'STRIPE' },
+ { currency: 'GYD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'HKD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'HNL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' },
+ { currency: 'HRK', currency_symbol: 'kn', multiplier: 100, type: 'STRIPE' },
+ { currency: 'HTG', currency_symbol: 'G', multiplier: 100, type: 'STRIPE' },
+ { currency: 'HUF', currency_symbol: 'Ft', multiplier: 100, type: 'STRIPE' },
+ { currency: 'IDR', currency_symbol: 'Rp', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ILS', currency_symbol: 'ع.د', multiplier: 100, type: 'STRIPE' },
+ { currency: 'INR', currency_symbol: '₹', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ISK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'JMD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'JPY', currency_symbol: '¥', multiplier: 1, type: 'STRIPE' },
+ { currency: 'KES', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' },
+ { currency: 'KGS', currency_symbol: 'с', multiplier: 100, type: 'STRIPE' },
+ { currency: 'KHR', currency_symbol: '៛', multiplier: 100, type: 'STRIPE' },
+ { currency: 'KMF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'KRW', currency_symbol: '₩', multiplier: 1, type: 'STRIPE' },
+ { currency: 'KYD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'KZT', currency_symbol: '₸', multiplier: 100, type: 'STRIPE' },
+ { currency: 'LAK', currency_symbol: '₭', multiplier: 100, type: 'STRIPE' },
+ { currency: 'LBP', currency_symbol: 'ل.ل', multiplier: 100, type: 'STRIPE' },
+ { currency: 'LKR', currency_symbol: 'Rs', multiplier: 100, type: 'STRIPE' },
+ { currency: 'LRD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'LSL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MAD', currency_symbol: 'د.م.', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MDL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MGA', currency_symbol: 'Ar', multiplier: 1, type: 'STRIPE' },
+ { currency: 'MKD', currency_symbol: 'ден', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MMK', currency_symbol: 'Ks', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MNT', currency_symbol: '₮', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MOP', currency_symbol: 'P', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MRO', currency_symbol: 'UM', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MUR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MVR', currency_symbol: '.ރ', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MWK', currency_symbol: 'MK', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MXN', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MYR', currency_symbol: 'RM', multiplier: 100, type: 'STRIPE' },
+ { currency: 'MZN', currency_symbol: 'MT', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NAD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NGN', currency_symbol: '₦', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NIO', currency_symbol: 'C$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NOK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NPR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' },
+ { currency: 'NZD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PAB', currency_symbol: 'B/.', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PEN', currency_symbol: 'S/.', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PGK', currency_symbol: 'K', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PHP', currency_symbol: '₱', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PKR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PLN', currency_symbol: 'zł', multiplier: 100, type: 'STRIPE' },
+ { currency: 'PYG', currency_symbol: '₲', multiplier: 1, type: 'STRIPE' },
+ { currency: 'QAR', currency_symbol: 'ر.ق', multiplier: 100, type: 'STRIPE' },
+ { currency: 'RON', currency_symbol: 'lei', multiplier: 100, type: 'STRIPE' },
+ { currency: 'RSD', currency_symbol: 'дин', multiplier: 100, type: 'STRIPE' },
+ { currency: 'RUB', currency_symbol: '₽', multiplier: 100, type: 'STRIPE' },
+ { currency: 'RWF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'SAR', currency_symbol: 'ر.س', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SBD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SCR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SEK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SGD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SHP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SLL', currency_symbol: 'Le', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SOS', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SRD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'STD', currency_symbol: 'Db', multiplier: 100, type: 'STRIPE' },
+ { currency: 'SZL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' },
+ { currency: 'THB', currency_symbol: '฿', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TJS', currency_symbol: 'ЅМ', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TOP', currency_symbol: 'T$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TRY', currency_symbol: '₺', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TTD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TWD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'TZS', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' },
+ { currency: 'UAH', currency_symbol: '₴', multiplier: 100, type: 'STRIPE' },
+ { currency: 'UGX', currency_symbol: 'Sh', multiplier: 1, type: 'STRIPE' },
+ { currency: 'UYU', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'UZS', currency_symbol: 'сўм', multiplier: 100, type: 'STRIPE' },
+ { currency: 'VND', currency_symbol: '₫', multiplier: 1, type: 'STRIPE' },
+ { currency: 'VUV', currency_symbol: 'Vt', multiplier: 1, type: 'STRIPE' },
+ { currency: 'WST', currency_symbol: 'T', multiplier: 100, type: 'STRIPE' },
+ { currency: 'XAF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'XCD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' },
+ { currency: 'XOF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' },
+ { currency: 'XPF', currency_symbol: '₣', multiplier: 1, type: 'STRIPE' },
+ { currency: 'YER', currency_symbol: '﷼', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ZAR', currency_symbol: 'Rs', multiplier: 100, type: 'STRIPE' },
+ { currency: 'ZMW', currency_symbol: 'ZK', multiplier: 100, type: 'STRIPE' }
+]
+
+export const paypalCurrencies = [
+ { currency: 'AUD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'BRL', currency_symbol: 'R$', type: 'PAYPAL' },
+ { currency: 'CAD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'CZK', currency_symbol: 'Kč', type: 'PAYPAL' },
+ { currency: 'DKK', currency_symbol: 'kr', type: 'PAYPAL' },
+ { currency: 'EUR', currency_symbol: '€', type: 'PAYPAL' },
+ { currency: 'HKD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'HUF', currency_symbol: 'Ft', type: 'PAYPAL' },
+ { currency: 'INR', currency_symbol: '₹', type: 'PAYPAL' },
+ { currency: 'ILS', currency_symbol: 'ع.د', type: 'PAYPAL' },
+ { currency: 'JPY', currency_symbol: '¥', type: 'PAYPAL' },
+ { currency: 'MYR', currency_symbol: 'RM', type: 'PAYPAL' },
+ { currency: 'MXN', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'TWD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'NZD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'NOK', currency_symbol: 'kr', type: 'PAYPAL' },
+ { currency: 'PHP', currency_symbol: '₱', type: 'PAYPAL' },
+ { currency: 'PLN', currency_symbol: 'zł', type: 'PAYPAL' },
+ { currency: 'GBP', currency_symbol: '£', type: 'PAYPAL' },
+ { currency: 'RUB', currency_symbol: '₽', type: 'PAYPAL' },
+ { currency: 'SGD', currency_symbol: '$', type: 'PAYPAL' },
+ { currency: 'SEK', currency_symbol: 'kr', type: 'PAYPAL' },
+ { currency: 'CHF', currency_symbol: 'Fr', type: 'PAYPAL' },
+ { currency: 'THB', currency_symbol: '฿', type: 'PAYPAL' },
+ { currency: 'USD', currency_symbol: '$', type: 'PAYPAL' }
+]
diff --git a/CustomerApp/src/utils/fontStyles.js b/CustomerApp/src/utils/fontStyles.js
new file mode 100755
index 0000000..035d8d6
--- /dev/null
+++ b/CustomerApp/src/utils/fontStyles.js
@@ -0,0 +1,7 @@
+export const fontStyles = {
+ PoppinLight: 'Poppin300',
+ PoppingRegular: 'Poppin400',
+ PoppingMedium: 'Poppin500',
+ PoppingSemiBold: 'Poppin600',
+ PoppinBold: 'Poppin700'
+}
diff --git a/CustomerApp/src/utils/scaling.js b/CustomerApp/src/utils/scaling.js
new file mode 100755
index 0000000..26f0f56
--- /dev/null
+++ b/CustomerApp/src/utils/scaling.js
@@ -0,0 +1,12 @@
+import { Dimensions } from 'react-native'
+
+const { width, height } = Dimensions.get('window')
+// Guideline sizes are based on standard ~5" screen mobile device
+const guidelineBaseWidth = 350
+const guidelineBaseHeight = 680
+const scale = size => (width / guidelineBaseWidth) * size
+const verticalScale = size => (height / guidelineBaseHeight) * size
+const moderateScale = (size, factor = 0.5) =>
+ size + (scale(size) - size) * factor
+
+export { scale, verticalScale, moderateScale }
diff --git a/CustomerApp/src/utils/textStyles.js b/CustomerApp/src/utils/textStyles.js
new file mode 100644
index 0000000..0687236
--- /dev/null
+++ b/CustomerApp/src/utils/textStyles.js
@@ -0,0 +1,53 @@
+import { scale } from './scaling'
+import { fontStyles } from './fontStyles'
+
+export const textStyles = {
+ H1: {
+ fontSize: scale(32)
+ },
+ H2: {
+ fontSize: scale(22)
+ },
+ H3: {
+ fontSize: scale(18)
+ },
+ H4: {
+ fontSize: scale(15)
+ },
+ H5: {
+ fontSize: scale(13)
+ },
+ Normal: {
+ fontSize: scale(11)
+ },
+ Small: {
+ fontSize: scale(9)
+ },
+ Light: {
+ fontFamily: fontStyles.PoppinLight
+ },
+ Regular: {
+ fontFamily: fontStyles.PoppingRegular
+ },
+ Medium: {
+ fontFamily: fontStyles.PoppingMedium
+ },
+ Bold: {
+ fontFamily: fontStyles.PoppingSemiBold
+ },
+ Bolder: {
+ fontFamily: fontStyles.PoppinBold
+ },
+ Center: {
+ textAlign: 'center'
+ },
+ Right: {
+ textAlign: 'right'
+ },
+ UpperCase: {
+ textTransform: 'uppercase'
+ },
+ LineOver: {
+ textDecorationLine: 'line-through'
+ }
+}
diff --git a/CustomerApp/src/utils/useAppTrackingTransparency.js b/CustomerApp/src/utils/useAppTrackingTransparency.js
new file mode 100644
index 0000000..9ee960d
--- /dev/null
+++ b/CustomerApp/src/utils/useAppTrackingTransparency.js
@@ -0,0 +1,13 @@
+import {
+ requestTrackingPermissionsAsync,
+ getTrackingPermissionsAsync
+} from 'expo-tracking-transparency'
+
+export const requestTrackingPermissions = async() => {
+ const { status } = await requestTrackingPermissionsAsync()
+ return status
+}
+export const getTrackingPermissions = async() => {
+ const { status } = await getTrackingPermissionsAsync()
+ return status
+}
diff --git a/CustomerApp/translations/de.js b/CustomerApp/translations/de.js
new file mode 100644
index 0000000..7526468
--- /dev/null
+++ b/CustomerApp/translations/de.js
@@ -0,0 +1,140 @@
+export const de = {
+ home: 'Home',
+ title0: 'Gewählte Sprache',
+ subtitle0: 'English',
+ description0:
+ 'Wählen Sie eine Sprache Ihrer Wahl, um den Inhalt der App in die gewünschte Sprache zu ändern.',
+ title1: 'Lecker',
+ subtitle1: 'Frühstück',
+ description1:
+ 'Frühstück ist alles. Der Anfang, das Erste. Es ist der Mundvoll, der die Verpflichtung zu einem neuen Tag, einem fortwährenden Leben ist.',
+ title2: 'Erfrischend',
+ subtitle2: 'Getränke',
+ description2:
+ 'Wahre Stille ist der Rest des Geistes und ist für den Geist das, was Schlaf für den Körper ist, Nahrung und Erfrischung.',
+ title3: 'Köstlich',
+ subtitle3: 'Eis',
+ description3:
+ 'Das Alter mindert nicht die extreme Enttäuschung darüber, dass eine Kugel Eis vom Kegel fällt',
+ getStarted: 'Loslegen!',
+ welcome:
+ 'Willkommen bei Enatega, manchmal brauchen Sie nur Liebe. Aber ein bisschen Essen tut ab und zu nicht weh.',
+ loginBtn: 'Anmeldung',
+ registerBtn: 'Registrieren',
+ name: 'Name',
+ phone: 'Telefon',
+ email: 'Email',
+ emailphone: 'E-Mail oder Telefon',
+ password: 'Passwort',
+ deliveryAddress: 'Lieferadresse',
+ fullDeliveryAddress: 'Ihre vollständige Lieferadresse',
+ deliveryDetails: 'Erforderliche Angaben, z. Boden / Gebäude',
+ myAddresses: 'Meine Adressen',
+ addAddress: 'Neue Adressen hinzufügen',
+ editAddress: 'Adresse bearbeiten',
+ registerText: 'Oder registriere dich bei',
+ forgotPassword: 'Passwort vergessen?',
+ loginText: 'Oder Einloggen mit',
+ deliveryLocation:
+ 'Stellen Sie Ihren Lieferort so ein, dass wir Ihnen einen unendlichen Geschmack köstlichen Essens zusenden können.',
+ locationBtn: 'Standort einschalten',
+ locationPermissionDenied:
+ 'Die Berechtigung zum Zugriff auf den Speicherort wurde verweigert',
+ locationOff: 'Ort einschalten und erneut versuchen',
+ titleLanguage: 'Sprache ändern',
+ titleMenu: 'Speisekarte',
+ titleOrders: 'meine Bestellungen',
+ titleNotifications: 'Benachrichtigungen',
+ titleReviews: 'Bewertungen',
+ titleProfile: 'Profiel',
+ titleHelp: 'Hilfe',
+ titleChat: 'Plaudern',
+ titleLogout: 'Ausloggen',
+ titleCart: 'Mein Warenkorb',
+ titlePayment: 'Zahlung',
+ totalOrderAmount: 'Gesamtbestellmenge',
+ reOrder: 'Nachbestellen',
+ unReadNotifications: 'Keine ungelesenen Benachrichtigungen',
+ upload: 'Hochladen',
+ saveBtn: 'sparen',
+ saveContBtn: 'SPEICHERN UND FORTFAHREN',
+ emailUs: 'Mailen Sie uns an',
+ question1: 'Wo finden wir das Essen?',
+ question2: 'Wie treten wir in Kontakt?',
+ question3: 'Wie kann ich den Zusteller bezahlen?',
+ question4: 'Ist der Dienst in meiner Stadt verfügbar?',
+ answer1:
+ 'Sie finden das Essen in einem Geschäft in Ihrer Nähe, ohne den Kundenservice zu belasten. Unsere Gebühren sind im Vergleich zu anderen extrem niedrig.',
+ answer2:
+ 'Sie können uns über unsere E-Mail, Telefonnummer oder unsere Website kontaktieren.',
+ answer3:
+ 'Sie können den Zusteller persönlich bezahlen oder auch online mit Kredit- oder Debitkarte bezahlen.',
+ answer4:
+ 'Derzeit ist dieser Service in den Städten Islamabad und Karachi verfügbar. Sie können uns kontaktieren, um diesen Service in Ihrer Stadt in Anspruch zu nehmen.',
+ add: 'HINZUFÜGEN',
+ quantity: 'Menge',
+ size: 'Größe',
+ addToCart: 'in den Warenkorb legen',
+ orderNow: 'Jetzt bestellen',
+ addToCartMessage: 'Zum Warenkorb hinzugefügt',
+ emptyCart: 'Keine Artikel im Warenkorb',
+ itemTotal: 'Artikel Gesamt',
+ delvieryCharges: 'Versandkosten',
+ total: 'Gesamt',
+ contactInfo: 'Kontaktinformation',
+ deliveryAddressmessage: 'Lieferadresse einstellen',
+ proceedCheckout: 'Zur Kasse',
+ paymentText: 'Wie möchten Sie bezahlen?',
+ checkout: 'Auschecken',
+ creditCard: 'Kreditkarte Debitkarte',
+ paypal: 'Paypal',
+ cod: 'Nachnahme',
+ thankYou: 'Danke dir!',
+ orderConfirmed: 'Ihre Bestellung wird bestätigt',
+ orderId: 'Ihre Bestellnummer',
+ orderAmount: 'Ihre Bestellmenge',
+ orderDetail: 'Bestelldetails',
+ paymentMethod: 'Zahlungsmethode',
+ trackOrder: 'Versandverfolgung',
+ backToMenu: 'Zurück zum Menü',
+ foodItem: 'Essensgegenstand',
+ deliveredTo: 'Geliefert an',
+ writeAReview: 'Eine Rezension schreiben',
+ orderReceived: 'Bestellung erhalten',
+ cancelled: 'Abgebrochen',
+ foodPreparing: 'Essen wird zubereitet',
+ delivered: 'Geliefert',
+ rateAndReview: 'Bewerten und bewerten',
+ reviewPlaceholder: 'Detaillierte Bewertungen erhalten mehr Sichtbarkeit ...',
+ submit: 'einreichen',
+ noWorriesText: 'Keine Sorge, lassen Sie sich von uns helfen!',
+ yourEmail: 'Deine E-Mail',
+ send: 'Senden',
+ checkEmail:
+ 'Überprüfen Sie Ihre E-Mail-Adresse auf den Link zum Zurücksetzen des Kennworts',
+ languageText: 'Bitte wählen Sie Ihre gewünschte Sprache',
+ countryCodePickerTranslation: 'deu',
+ countryCodeSelect: 'Ländercode auswählen',
+ paymentNotSupported: 'Diese Zahlungsmethode unterstützt diese Währung nicht',
+ unReadReviews: 'Noch keine Bewertungen!',
+ unReadOrders: 'Noch keine Bestellungen!',
+ error: 'Error',
+ noMoreItems: 'Keine Artikel mehr auf Lager',
+ hungry: 'Hungrig',
+ emptyCartBtn: 'Zurück zum Essen',
+ subTotal: 'Zwischensumme',
+ deliveryFee: 'Liefergebühr',
+ haveVoucher: 'Hast du einen Gutschein?',
+ remove: 'Entfernen',
+ change: 'Veränderung',
+ condition1:
+ 'Mit Abschluss dieser Bestellung stimme ich allen Allgemeinen Geschäftsbedingungen zu.',
+ condition2:
+ 'Ich bin damit einverstanden und fordere Sie auf, den bestellten Service vor Ablauf der Widerrufsfrist auszuführen. Mir ist bekannt, dass ich nach vollständiger Erfüllung der Leistung mein Rücktrittsrecht verliere.',
+ orderBtn: 'Bestellung aufgeben',
+ coupanApply: 'Gutscheinrabatt angewendet',
+ coupanFailed: 'Gutschein nicht verfügbar',
+ invalidCoupan: 'Ungültiger Gutschein',
+ validateItems: 'Artikel vor dem Auschecken in den Warenkorb legen',
+ validateDelivery: 'Stellen Sie die Lieferadresse vor dem Auschecken ein'
+}
diff --git a/CustomerApp/translations/en.js b/CustomerApp/translations/en.js
new file mode 100644
index 0000000..91c00e8
--- /dev/null
+++ b/CustomerApp/translations/en.js
@@ -0,0 +1,143 @@
+export const en = {
+ home: 'Home',
+ title0: 'Selected Language',
+ subtitle0: 'English',
+ description0:
+ 'Select any language of your choice to change the content of the app to your required language.',
+ title1: 'Tasty',
+ subtitle1: 'BreakFast',
+ description1:
+ 'Breakfast is everything. The beginning, the first thing. It is the mouthful that is the commitment to a new day, a continuing life.',
+ title2: 'Refreshing',
+ subtitle2: 'Drinks',
+ description2:
+ 'True silence is the rest of the mind, and is to the spirit what sleep is to the body, nourishment and refreshment.',
+ title3: 'Delicous',
+ subtitle3: 'Icecream',
+ description3:
+ 'Age does not diminish the extreme disappointment of having a scoop of ice cream fall from the cone',
+ getStarted: 'Get Started!',
+ welcome:
+ "Welcome to Enatega, sometimes all you need is love. But a little food now and then doesn't hurt.",
+ loginBtn: 'Login',
+ registerBtn: 'Register',
+ name: 'Name',
+ phone: 'Phone Number',
+ email: 'Email',
+ emailphone: 'Email or Phone',
+ password: 'Password',
+ deliveryAddress: 'Delivery Address',
+ fullDeliveryAddress: 'Your full delivery address',
+ deliveryDetails: 'Required details -e.g. floor/ building',
+ myAddresses: 'My Addresses',
+ addAddress: 'Add Address',
+ editAddress: 'Edit Address',
+ registerText: 'Or Register With',
+ forgotPassword: 'Forgot Password?',
+ loginText: 'Or Login With',
+ deliveryLocation:
+ 'Turn on location so we could send you endless taste of delicious food.',
+ locationBtn: 'Turn on Location',
+ locationPermissionDenied: 'Permission to access location was denied',
+ cameraRollPermissionDenied: 'Permission to access Camera Roll was denied',
+ locationOff: 'Turn on location and try again',
+ titleLanguage: 'Change Language',
+ titleMenu: 'Menu',
+ titleOrders: 'My Orders',
+ titleNotifications: 'Notifications',
+ titleReviews: 'Reviews',
+ titleProfile: 'Profile',
+ titleSettings: 'Settings',
+ titleHelp: 'Help',
+ titleChat: 'Chat',
+ titleLogout: 'Logout',
+ titleCart: 'My Cart',
+ titlePayment: 'Payment',
+ totalOrderAmount: 'Total Order Amount',
+ reOrder: 'Reorder',
+ unReadNotifications: 'No unread notifications',
+ upload: 'Upload',
+ saveBtn: 'Save Changes',
+ saveContBtn: 'SAVE AND CONTINUE',
+ emailUs: 'Email us at',
+ question1: 'Where do we find the food?',
+ question2: 'How do we contact?',
+ question3: 'How can I pay the delivery person?',
+ question4: 'Is the service available in my city?',
+ answer1:
+ 'You can find the food at your nearest store without paying anything to customer service.Our charges are extremely low as compared to others.',
+ answer2: 'You can contact us through our email, phone number or our website.',
+ answer3:
+ 'You can pay the delivery person in person or pay online as well through credit or debit card.',
+ answer4:
+ 'Currently this service is available in cities Islamabad and Karachi you can contact us to avail this service in your city.',
+ add: 'ADD',
+ quantity: 'Quantity',
+ size: 'Size',
+ addToCart: 'Add to Cart',
+ orderNow: 'Order Now',
+ addToCartMessage: 'Added to cart',
+ emptyCart: 'No items in cart',
+ itemTotal: 'Item Total',
+ delvieryCharges: 'Delivery Charges',
+ total: 'Total',
+ contactInfo: 'Contact Info',
+ deliveryAddressmessage: 'Set delivery address',
+ proceedCheckout: 'Proceed to Checkout',
+ paymentText: 'How do you wish to pay?',
+ checkout: 'Checkout',
+ creditCart: 'Credit Card/Debit Card',
+ paypal: 'Paypal',
+ cod: 'Cash on delivery',
+ thankYou: 'Thank You!',
+ orderConfirmed: 'Your Order is confirmed',
+ orderId: 'Your Order Id',
+ orderAmount: 'Your Order Amount',
+ orderDetail: 'Order Detail',
+ paymentMethod: 'Payment Method',
+ trackOrder: 'Track Order',
+ backToMenu: 'Back To Menu',
+ foodItem: 'Food item',
+ deliveredTo: 'Delivered to',
+ writeAReview: 'Write a Review',
+ orderReceived: 'Order Received',
+ orderPicked: 'Your order is on its way',
+ orderDelivered: 'Delivered',
+ completed: 'Completed',
+ cancelled: 'Cancelled',
+ orderPreparing: 'Your order is being prepared',
+ delivered: 'Delivered',
+ rateAndReview: 'Rate and Review',
+ reviewPlaceholder: 'More detailed reviews get more visibility...',
+ submit: 'Submit',
+ noWorriesText: 'No worries, let us help you out!',
+ yourEmail: 'Your Email',
+ send: 'Send',
+ apply: 'Apply',
+ checkEmail: 'Check your email for reset password link',
+ languageText: 'Please select your required language',
+ countryCodePickerTranslation: 'eng',
+ countryCodeSelect: 'Select Country Code',
+ paymentNotSupported: 'This payment method does not support this Currency',
+ loginOrCreateAccount: 'Login/Create Account',
+ unReadReviews: 'No Reviews Yet!',
+ unReadOrders: 'No Orders Yet!',
+ error: 'Error',
+ noMoreItems: 'No more items in stock',
+ hungry: 'Hungry',
+ emptyCartBtn: 'Back to Food',
+ subTotal: 'SubTotal',
+ deliveryFee: 'Delivery Fee',
+ haveVoucher: 'Do you have a voucher',
+ remove: 'Remove',
+ change: 'Change',
+ condition1: 'By completing this order, I agree to all Terms & Conditions.',
+ condition2:
+ 'I agree and I demand that you execute the ordered service before the end of the revocation period. I am aware that after complete fulfillment of the service I lose my right of rescission.',
+ orderBtn: 'Place order',
+ coupanApply: 'Coupon discount applied',
+ coupanFailed: 'Coupon Unavailable',
+ invalidCoupan: 'Invalid Coupon',
+ validateItems: 'Add items to cart before checkout',
+ validateDelivery: 'Set delivery address before checkout'
+}
diff --git a/CustomerApp/translations/fr.js b/CustomerApp/translations/fr.js
new file mode 100644
index 0000000..4d680f7
--- /dev/null
+++ b/CustomerApp/translations/fr.js
@@ -0,0 +1,141 @@
+export const fr = {
+ home: 'Home',
+ title0: 'Langue sélectionnée',
+ subtitle0: 'English',
+ description0:
+ "Sélectionnez la langue de votre choix pour modifier le contenu de l'application dans la langue de votre choix.",
+ title1: 'Savoureux',
+ subtitle1: 'Petit déjeuner',
+ description1:
+ "Le petit déjeuner est tout. Le début, la première chose. C'est la bouchée qui est l'engagement pour un nouveau jour, une vie continue.",
+ title2: 'Rafraîchissant',
+ subtitle2: 'Boissons',
+ description2:
+ "Le vrai silence est le reste de l'esprit, et à l'esprit ce que le sommeil est pour le corps, nourriture et rafraîchissement.",
+ title3: 'Délicieux',
+ subtitle3: 'Crème glacée',
+ description3:
+ "L'âge ne diminue en rien l'extrême déception d'avoir une boule de glace tombée du cône.",
+ getStarted: 'Commencer!',
+ welcome:
+ "Bienvenue dans Enatega, parfois tout ce dont vous avez besoin est de l'amour. Mais un peu de nourriture maintenant et ensuite ne fait pas mal.",
+ loginBtn: "S'identifier",
+ registerBtn: 'registre',
+ name: 'prénom',
+ phone: 'Téléphone',
+ email: 'Email',
+ emailphone: 'Email ou téléphone',
+ password: 'Mot de passe',
+ deliveryAddress: 'Adresse de livraison',
+ fullDeliveryAddress: 'Votre adresse de livraison complète',
+ deliveryDetails: 'Détails requis -e.g. étage / bâtiment',
+ myAddresses: 'Mes adresses',
+ addAddress: 'Ajouter une nouvelle adresse',
+ editAddress: "Modifier l'adresse",
+ registerText: "Ou s'inscrire avec",
+ forgotPassword: 'Mot de passe oublié?',
+ loginText: 'Ou connectez-vous avec',
+ deliveryLocation:
+ 'Définissez votre lieu de livraison afin que nous puissions vous envoyer un goût infini de plats délicieux.',
+ locationBtn: "Activer l'emplacement",
+ locationPermissionDenied:
+ "La permission d'accéder à l'emplacement a été refusée",
+ locationOff: "Activer l'emplacement et réessayer",
+ titleLanguage: 'Changer de langue',
+ titleMenu: 'Menu',
+ titleOrders: 'Mes commandes',
+ titleNotifications: 'Les notifications',
+ titleReviews: 'Avis',
+ titleProfile: 'Profil',
+ titleHelp: 'Aidez-moi',
+ titleChat: 'Bavarder',
+ titleLogout: 'Connectez - Out',
+ titleCart: 'Mon panier',
+ titlePayment: 'Paiement',
+ totalOrderAmount: 'Total de la commande',
+ reOrder: 'Réorganiser',
+ unReadNotifications: 'Pas de notifications non lues',
+ upload: 'Télécharger',
+ saveBtn: 'sauvegarder',
+ saveContBtn: 'SAUVEGARDER ET CONTINUER',
+ emailUs: 'écrivez-nous à',
+ question1: 'Où trouvons-nous la nourriture?',
+ question2: 'Comment pouvons-nous contacter?',
+ question3: 'Comment puis-je payer le livreur?',
+ question4: 'Le service est-il disponible dans ma ville?',
+ answer1:
+ 'Vous pouvez trouver la nourriture dans le magasin le plus proche sans rien payer au service client. Nos frais sont extrêmement bas comparés aux autres.',
+ answer2:
+ 'Vous pouvez nous contacter via notre email, numéro de téléphone ou notre site web.',
+ answer3:
+ 'Vous pouvez payer le livreur en personne ou en ligne, par carte de crédit ou de débit.',
+ answer4:
+ "Actuellement, ce service est disponible dans les villes d'Islamabad et de Karachi. Vous pouvez nous contacter pour bénéficier de ce service dans votre ville.",
+ add: 'AJOUTER',
+ quantity: 'Quantité',
+ size: 'Taille',
+ addToCart: 'Ajouter au panier',
+ orderNow: 'Commandez maintenant',
+ addToCartMessage: 'Ajouté au panier',
+ emptyCart: 'Aucun article dans le panier',
+ itemTotal: 'Objet total',
+ delvieryCharges: 'Frais de livraison',
+ total: 'Total',
+ contactInfo: 'Informations de contact',
+ deliveryAddressmessage: "Définir l'adresse de livraison",
+ proceedCheckout: 'Passer à la caisse',
+ paymentText: 'Comment souhaitez-vous payer?',
+ checkout: 'Check-out',
+ creditCard: 'Carte de crédit carte de débit',
+ paypal: 'Pay Pal',
+ cod: 'Paiement à la livraison',
+ thankYou: 'Je vous remercie!',
+ orderConfirmed: 'Votre commande est confirmée',
+ orderId: 'Votre identifiant de commande',
+ orderAmount: 'Le montant de votre commande',
+ orderDetail: 'Détails de la commande',
+ paymentMethod: 'Mode de paiement',
+ trackOrder: 'Suivi de commande',
+ backToMenu: 'Suivi de commande',
+ foodItem: 'Produit alimentaire',
+ deliveredTo: 'livré à',
+ writeAReview: 'Écrire une critique',
+ orderReceived: 'Ordre reçu',
+ cancelled: 'Annulé',
+ foodPreparing: 'La nourriture est en cours de préparation',
+ delivered: 'Livré',
+ rateAndReview: 'Notez et évaluez',
+ reviewPlaceholder: 'Des revues plus détaillées ont plus de visibilité ...',
+ submit: 'Soumettre',
+ noWorriesText: 'Pas de soucis, laissez-nous vous aider!',
+ yourEmail: 'Votre email',
+ send: 'Envoyer',
+ checkEmail:
+ 'Vérifiez votre email pour le lien de réinitialisation du mot de passe',
+ languageText: "S'il vous plaît sélectionnez votre langue requise",
+ countryCodePickerTranslation: 'fra',
+ countryCodeSelect: 'Sélectionnez le code pays',
+ paymentNotSupported:
+ 'Ce mode de paiement ne prend pas en charge cette devise',
+ unReadReviews: "Pas encore d'avis!",
+ unReadOrders: 'Pas de commande pour le moment!',
+ error: 'Erreur',
+ noMoreItems: "Plus d'articles en stock",
+ hungry: 'Faim',
+ emptyCartBtn: 'Retour à la nourriture',
+ subTotal: 'Total',
+ deliveryFee: 'Frais de livraison',
+ haveVoucher: 'Avez-vous un bon',
+ remove: 'Retirer',
+ change: 'Changement',
+ condition1:
+ "En remplissant cette commande, j'accepte toutes les conditions générales.",
+ condition2:
+ "J'accepte et je vous demande d'exécuter le service commandé avant la fin de la période de révocation. Je suis conscient qu'après l'accomplissement complet du service, je perds mon droit de résolution.",
+ orderBtn: 'Passer la commande',
+ coupanApply: 'Remise de coupon appliquée',
+ coupanFailed: 'Coupon non disponible',
+ invalidCoupan: 'Coupon non valide',
+ validateItems: 'Ajouter des articles au panier avant le paiement',
+ validateDelivery: "Définir l'adresse de livraison avant le paiement"
+}
diff --git a/CustomerApp/translations/km.js b/CustomerApp/translations/km.js
new file mode 100644
index 0000000..6cd9087
--- /dev/null
+++ b/CustomerApp/translations/km.js
@@ -0,0 +1,136 @@
+export const km = {
+ home: 'Home',
+ title0: 'ភាសាដែលបានជ្រើស',
+ subtitle0: 'English',
+ description0:
+ 'ជ្រើសរើសភាសាណាមួយនៃជម្រើសរបស់អ្នកដើម្បីប្តូរមាតិកានៃកម្មវិធីទៅភាសាដែលអ្នកត្រូវការ។',
+ title1: 'ហ៊ាន',
+ subtitle1: 'អាហារពេលព្រឹក',
+ description1:
+ 'អាហារពេលព្រឹកគឺជាអ្វីគ្រប់យ៉ាង។ ការចាប់ផ្តើមរឿងដំបូង។ វាគឺជាមាត់ដែលជាការប្តេជ្ញាចិត្តចំពោះថ្ងៃថ្មីនិងជីវិតដែលនៅតែបន្ត។',
+ title2: 'ធ្វើឱ្យស្រស់',
+ subtitle2: 'ភេសជ្ជៈ',
+ description2:
+ 'ភាពស្ងៀមស្ងាត់ពិតគឺជាគំនិតដែលនៅសល់ហើយជាវិញ្ញាណដែលជាការដេកលក់ដល់រាងកាយការថែទាំនិងការសំរាក។',
+ title3: 'ឆ្ងាញ់',
+ subtitle3: 'ការ៉េម',
+ description3:
+ 'អាយុមិនបន្ថយនូវការខកចិត្តយ៉ាងខ្លាំងនៃការធ្លាក់ចុះនៃការ៉េមពីកោណទេ',
+ getStarted: 'ចាប់ផ្ដើម!',
+ welcome:
+ 'សូមស្វាគមន៏ទៅ Enatega ពេលខ្លះអ្វីដែលអ្នកត្រូវការគឺស្នេហា។ ប៉ុន្តែអាហារតិចតួចឥឡូវនេះហើយបន្ទាប់មកមិនឈឺទេ។',
+ loginBtn: 'ចូល',
+ registerBtn: 'ចុះឈ្មោះ',
+ name: 'ឈ្មោះ',
+ phone: 'ទូរស័ព្ទ',
+ email: 'អ៊ីមែល',
+ emailphone: 'អីុម៉ែលឬទូរស័ព្ទ',
+ password: 'ពាក្យសម្ងាត់',
+ deliveryAddress: 'អាស័យដ្ឋានសំរាប់ការដឹកជញ្ជូន',
+ fullDeliveryAddress: 'អាសយដ្ឋានចែកចាយពេញរបស់អ្នក',
+ deliveryDetails: 'ព័ត៌មានលម្អិតចាំបាច់ -e. ជាន់ / អាគារ',
+ myAddresses: 'អាស័យដ្ឋានរបស់ខ្ញុំ',
+ addAddress: 'បន្ថែមអាសយដ្ឋានថ្មី',
+ editAddress: 'កែសម្រួលអាសយដ្ឋាន',
+ registerText: 'ឬចុះឈ្មោះជាមួយ',
+ forgotPassword: 'ភ្លេចលេខសំងាត់?',
+ loginText: 'ឬចូលជាមួយ',
+ deliveryLocation:
+ 'កំណត់ទីតាំងដឹកជញ្ជូនរបស់អ្នកដូច្នេះយើងអាចផ្ញើឱ្យអ្នកនូវរសជាតិអាហារឆ្ងាញ់គ្មានទីបញ្ចប់។',
+ locationBtn: 'បើកទីតាំង',
+ locationPermissionDenied: 'ការអនុញ្ញាតចូលទៅកាន់ទីតាំងត្រូវបានបដិសេធ',
+ locationOff: 'បើកទីតាំងហើយព្យាយាមម្តងទៀត',
+ titleLanguage: 'ប្ដូរភាសា',
+ titleMenu: 'ម៉ឺនុយ',
+ titleOrders: 'ការបញ្ជាទិញរបស់ខ្ញុំ',
+ titleNotifications: 'ការជូនដំណឹង',
+ titleReviews: 'ពិនិត្យ',
+ titleProfile: 'ប្រវត្តិរូប',
+ titleHelp: 'ជំនួយ',
+ titleChat: 'ជជែក',
+ titleLogout: 'ចាកចេញ',
+ titleCart: 'កន្ត្រករបស់ខ្ញុំ',
+ titlePayment: 'ការទូទាត់',
+ totalOrderAmount: 'បរិមាណសរុប',
+ reOrder: 'តម្រៀបឡើងវិញ',
+ unReadNotifications: 'គ្មានការជូនដំណឹងមិនទាន់អាន',
+ upload: 'ផ្ទុកឡើង',
+ saveBtn: 'រក្សាទុក',
+ saveContBtn: 'រក្សាទុកនិងបន្ត',
+ emailUs: 'អ៊ីម៉ែលមកយើងនៅ',
+ question1: 'តើយើងរកម្ហូបបាននៅឯណា?',
+ question2: 'តើយើងទាក់ទងយ៉ាងដូចម្តេច?',
+ question3: 'តើខ្ញុំអាចបង់ប្រាក់ដល់មនុស្សដែលត្រូវដឹកជញ្ជូន?',
+ question4: 'តើសេវាកម្មនេះមាននៅក្នុងទីក្រុងរបស់ខ្ញុំដែរឬទេ?',
+ answer1:
+ 'អ្នកអាចរកឃើញម្ហូបអាហារនៅហាងដែលនៅជិតបំផុតរបស់អ្នកដោយមិនបង់អ្វីឱ្យសេវាកម្មបំរើអតិថិជន។ ការចោទប្រកាន់របស់យើងមានកម្រិតទាបខ្លាំងបើប្រៀបធៀបទៅនឹងអ្នកដទៃ។',
+ answer2: 'អ្នកអាចទាក់ទងយើងតាមរយៈអ៊ីម៉ែលលេខទូរស័ព្ទឬវេបសាយរបស់យើង។',
+ answer3:
+ 'អ្នកអាចបង់ប្រាក់ទៅកាន់បុគ្គលដឹកជញ្ជូនដោយផ្ទាល់ឬបង់ប្រាក់តាមរយៈអ៊ីនធឺណេតតាមរយៈប័ណ្ណឥណទានឬឥណពន្ធផងដែរ។',
+ answer4:
+ 'បច្ចុប្បន្នសេវាកម្មនេះអាចរកបាននៅក្នុងទីក្រុងអ៊ីស្លាម៉ាបាតនិងការ៉ាជីដែលអ្នកអាចទាក់ទងមកយើងដើម្បីទទួលបានសេវាកម្មនេះនៅក្នុងទីក្រុងរបស់អ្នក។',
+ add: 'បន្ថែម',
+ quantity: 'បរិមាណ',
+ size: 'ទំហំ',
+ addToCart: 'បន្ថែមទៅកន្ត្រក',
+ orderNow: 'បញ្ជាទិញឥឡូវ',
+ addToCartMessage: 'បានបន្ថែមទៅរទេះ',
+ emptyCart: 'គ្មានធាតុក្នុងរទេះទេ',
+ itemTotal: 'ធាតុសរុប',
+ delvieryCharges: 'ការដឹកជញ្ជូន',
+ total: 'សរុប',
+ contactInfo: 'ព័ត៌មានទំនាក់ទំនង',
+ deliveryAddressmessage: 'កំណត់អាសយដ្ឋានបញ្ជូន',
+ proceedCheckout: 'បន្តដើម្បីពិនិត្យចេញ',
+ paymentText: 'តើអ្នកចង់បង់ប្រាក់ដោយរបៀបណា?',
+ checkout: 'ពិនិត្យមុនពេលចេញ',
+ creditCard: 'ប័ណ្ណឥណទាន / ប័ណ្ណឥណពន្ធ',
+ paypal: 'Paypal',
+ cod: 'សាច់ប្រាក់នៅពេលប្រគល់',
+ thankYou: 'សូមអរគុណ!',
+ orderConfirmed: 'បញ្ជាទិញរបស់អ្នកត្រូវបានបញ្ជាក់',
+ orderId: 'លេខសម្គាល់លំដាប់របស់អ្នក',
+ orderAmount: 'ចំនួនទឹកប្រាក់នៃការបញ្ជាទិញរបស់អ្នក',
+ orderDetail: 'លំអិតលំដាប់',
+ paymentMethod: 'វិធីសាស្រ្តទូទាត់',
+ trackOrder: 'លំដាប់តាមបទ',
+ backToMenu: 'លំដាប់តាមបទ',
+ foodItem: 'ម្ហូបអាហារ',
+ deliveredTo: 'បញ្ជូនទៅ',
+ writeAReview: 'សរសេរសង្ខេបឡើងវិញ',
+ orderReceived: 'បញ្ជាទិញដែលទទួលបាន',
+ cancelled: 'បានបោះបង់',
+ foodPreparing: 'ម្ហូបកំពុងត្រូវបានរៀបចំ',
+ delivered: 'បានបញ្ជូន',
+ rateAndReview: 'វាយតម្លៃនិងពិនិត្យ',
+ reviewPlaceholder: 'ការពិនិត្យលម្អិតបន្ថែមទៀតទទួលបានភាពមើលឃើញកាន់តែច្រើន ...',
+ submit: 'ដាក់ស្នើ',
+ noWorriesText: 'គ្មានការព្រួយបារម្ភសូមឱ្យយើងជួយអ្នកចេញ!',
+ yourEmail: 'អ៊ីមែលរបស់អ្នក',
+ send: 'ផ្ញើ',
+ checkEmail: 'ពិនិត្យអ៊ីមែលរបស់អ្នកសម្រាប់តំណពាក្យសម្ងាត់ឡើងវិញ',
+ languageText: 'សូមជ្រើសរើសភាសាដែលអ្នកត្រូវការ',
+ countryCodePickerTranslation: 'eng',
+ countryCodeSelect: 'ជ្រើសរើសលេខកូដប្រទេស',
+ paymentNotSupported: 'វិធីសាស្ត្រទូទាត់នេះមិនគាំទ្ររូបិយប័ណ្ណនេះទេ',
+ unReadReviews: 'មិនទាន់មានការពិនិត្យឡើងវិញទេ!',
+ unReadOrders: 'មិនទាន់មានការបញ្ជាទិញនៅឡើយទេ!',
+ error: 'កំហុស',
+ noMoreItems: 'មិនមានរបស់នៅក្នុងស្តុកទៀតទេ',
+ hungry: 'ឃ្លាន',
+ emptyCartBtn: 'ត្រឡប់ទៅអាហារ',
+ subTotal: 'SubTotal',
+ deliveryFee: 'ថ្លៃសេវាដឹកជញ្ជូន',
+ haveVoucher: 'តើអ្នកមានប័ណ្ណទូទាត់ទេ?',
+ remove: 'យកចេញ',
+ change: 'ផ្លាស់ប្តូរ',
+ condition1: 'ដោយបំពេញការបញ្ជាទិញនេះខ្ញុំយល់ព្រមនឹងល័ក្ខខ័ណ្ឌទាំងអស់។',
+ condition2:
+ 'ខ្ញុំយល់ព្រមហើយខ្ញុំទាមទារឱ្យអ្នកប្រតិបត្តិសេវាកម្មដែលបានបញ្ជាទិញមុនពេលចុងបញ្ចប់នៃរយៈពេលដកហូត។ ខ្ញុំដឹងថាបន្ទាប់ពីការបំពេញសេវាកម្មពេញលេញខ្ញុំបាត់បង់សិទ្ធិក្នុងការរំដោះខ្លួន។',
+ orderBtn: 'ដាក់បញ្ជាទិញ',
+ coupanApply: 'ការបញ្ចុះតម្លៃប័ណ្ណត្រូវបានអនុវត្ត',
+ coupanFailed: 'គូប៉ុងមិនមានទេ',
+ invalidCoupan: 'គូប៉ុងមិនត្រឹមត្រូវ',
+ validateItems: 'បន្ថែមរបស់របរទៅរទេះមុនពេលឆែក',
+ validateDelivery: 'កំណត់អាសយដ្ឋានដឹកជញ្ជូនមុនពេលពិនិត្យចេញ'
+}
diff --git a/CustomerApp/translations/zh.js b/CustomerApp/translations/zh.js
new file mode 100644
index 0000000..bd3170a
--- /dev/null
+++ b/CustomerApp/translations/zh.js
@@ -0,0 +1,132 @@
+export const zh = {
+ home: 'Home',
+ title0: '选定的语言',
+ subtitle0: 'English',
+ description0: '选择您选择的任何语言,将应用内容更改为您所需的语言。',
+ title1: '可口',
+ subtitle1: '早餐',
+ description1:
+ '早餐就是一切。一开始,第一件事。这是对新的一天,持续生活的承诺。',
+ title2: '清爽',
+ subtitle2: '饮料',
+ description2:
+ '真正的沉默是心灵的其余部分,对于精神来说,睡眠对身体,营养和茶点来说都是如此。',
+ title3: '美味的',
+ subtitle3: '冰淇淋',
+ description3: '年龄不会减少从冰锥中舀出一勺冰淇淋的极度失望',
+ getStarted: '开始吧!',
+ welcome:
+ '欢迎来到Enatega,有时您需要的只是爱。但是偶尔会有点食物不会受到伤害。',
+ loginBtn: '登录',
+ registerBtn: '寄存器',
+ name: '名称',
+ phone: '电话',
+ email: '电子邮件',
+ emailphone: '邮件或者电话',
+ password: '密码',
+ deliveryAddress: '邮寄地址',
+ fullDeliveryAddress: '您的完整收货地址',
+ deliveryDetails: '必填详细信息-例如 楼层/建筑物',
+ myAddresses: '我的地址',
+ addAddress: '添加新地址',
+ editAddress: '编辑地址',
+ registerText: '或注册',
+ forgotPassword: '忘记密码?',
+ loginText: '或登录',
+ deliveryLocation: '设置您的送货地点,以便我们可以向您发送无尽的美味食物。',
+ locationBtn: '打开位置',
+ locationPermissionDenied: '访问位置的权限被拒绝',
+ locationOff: '访问位置的权限被拒绝',
+ titleLanguage: '改变语言',
+ titleMenu: '菜单',
+ titleOrders: '我的订单',
+ titleNotifications: '通知',
+ titleReviews: '评测',
+ titleProfile: '轮廓',
+ titleHelp: '救命',
+ titleChat: '聊',
+ titleLogout: '登出',
+ titleCart: '我的车',
+ titlePayment: '付款',
+ totalOrderAmount: '总订单金额',
+ reOrder: '重新排序',
+ unReadNotifications: '没有未读通知',
+ upload: '上传',
+ saveBtn: '保存',
+ saveContBtn: '保存并继续',
+ emailUs: '给我们发电子邮件',
+ question1: '我们在哪里找到食物?',
+ question2: '我们如何联系?',
+ question3: '我该如何付款给送货人?',
+ question4: '我的城市有这项服务吗?',
+ answer1:
+ '您可以在离您最近的商店找到食物,而无需向客户支付任何费用。与其他人相比,我们的收费极低。',
+ answer2: '您可以通过我们的电子邮件,电话号码或我们的网站联系我们。',
+ answer3: '您可以亲自向付款人付款或使用信用卡或借记卡在线付款。',
+ answer4:
+ '目前,这项服务在伊斯兰堡和卡拉奇市提供,您可以联系我们以便在您所在的城市使用此服务。',
+ add: '加',
+ quantity: '数量',
+ size: '尺寸',
+ addToCart: '添加到购物车',
+ orderNow: '现在下单',
+ addToCartMessage: '已添加到购物车',
+ emptyCart: '购物车中没有商品',
+ itemTotal: '项目总计',
+ delvieryCharges: '送货费',
+ total: '总',
+ contactInfo: '联系信息',
+ deliveryAddressmessage: '设置送货地址',
+ proceedCheckout: '进行结算',
+ paymentText: '你想怎么付钱?',
+ checkout: '查看',
+ creditCard: '信用卡/借记卡',
+ paypal: '贝宝',
+ cod: '货到付款',
+ thankYou: 'ស谢谢!',
+ orderConfirmed: '您的订单已确认',
+ orderId: '您的订单ID',
+ orderAmount: '您的订单金额',
+ orderDetail: '订单详情',
+ paymentMethod: '付款方法',
+ trackOrder: '跟踪订单',
+ backToMenu: '跟踪订单',
+ foodItem: '食品',
+ deliveredTo: '送到了(送去了',
+ writeAReview: '写评论',
+ orderReceived: '订单已经收到',
+ cancelled: '取消',
+ foodPreparing: '食物正在准备中',
+ delivered: '交付',
+ rateAndReview: '打分和评论',
+ reviewPlaceholder: '更详细的评论获得更多可见性......',
+ submit: '提交',
+ noWorriesText: '不用担心,让我们帮帮你吧!',
+ yourEmail: '你的邮件',
+ send: '发送',
+ checkEmail: '查看您的电子邮件以重置密码链接',
+ languageText: '请选择您需要的语言',
+ countryCodePickerTranslation: 'zho',
+ countryCodeSelect: '选择国家代码',
+ paymentNotSupported: '此付款方式不支持此货币',
+ unReadReviews: '暂无评论!',
+ unReadOrders: '尚无订单!',
+ error: '错误',
+ noMoreItems: '库存不多',
+ hungry: '饥饿',
+ emptyCartBtn: '回到食物',
+ subTotal: '小计',
+ deliveryFee: '快递费',
+ haveVoucher: '你有优惠券吗',
+ remove: '去掉',
+ change: '更改',
+ condition1: '完成此订单,即表示我同意所有条款和条件。',
+ condition2:
+ '我同意,我要求您在吊销期结束之前执行订购的服务。 我知道,在完全完成服务后,我将失去撤销的权利。',
+ orderBtn: '下订单',
+ coupanApply: '优惠券折扣',
+ coupanFailed: '优惠券不可用',
+ invalidCoupan: '优惠券无效',
+ validateItems: '结帐前将商品添加到购物车',
+ validateDelivery: '结帐前设置送货地址'
+}