From b1f12c5c357a5e05129bde6855bd0309609fba25 Mon Sep 17 00:00:00 2001 From: P82288200 Date: Fri, 20 Jun 2025 07:30:03 +0000 Subject: [PATCH] feat : initial commit --- .dockerignore | 78 + .gitignore | 26 + Dockerfile | 64 + Jenkinsfile | 1020 + README.md | 541 + .../container/Dockerfile-healthsync-front | 32 + deployment/container/nginx.conf | 50 + eslint.config.js | 33 + index.html | 36 + package-lock.json | 19663 ++++++++++++++++ package.json | 42 + public.zip | Bin 0 -> 193713 bytes public/index.html | 31 + public/index.html.backup | 28 + public/runtime-env.js | 8 + public/vite.svg | 1 + src/App.css | 818 + src/App.js | 160 + src/App.js.backup | 60 + src/App.jsx | 35 + src/assets/react.svg | 1 + src/components/BottomNav.js | 48 + src/components/Header.js | 28 + src/components/LoadingSpinner.js | 12 + src/components/MissionCard.js | 21 + src/index.css | 68 + src/index.js | 11 + src/main.jsx | 10 + src/pages/ChatPage.js | 386 + src/pages/DashboardPage.js | 521 + src/pages/GoalsPage.js | 556 + src/pages/HistoryPage.js | 630 + src/pages/LoadingPage.js | 418 + src/pages/LoginPage.js | 140 + src/pages/LoginPage.js.backup | 177 + src/pages/MissionPage.js | 329 + src/pages/OAuthCallbackPage.js | 113 + src/pages/RegisterPage.js | 162 + vite.config.js | 7 + 39 files changed, 26364 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Jenkinsfile create mode 100644 README.md create mode 100644 deployment/container/Dockerfile-healthsync-front create mode 100644 deployment/container/nginx.conf create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public.zip create mode 100644 public/index.html create mode 100644 public/index.html.backup create mode 100644 public/runtime-env.js create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.js create mode 100644 src/App.js.backup create mode 100644 src/App.jsx create mode 100644 src/assets/react.svg create mode 100644 src/components/BottomNav.js create mode 100644 src/components/Header.js create mode 100644 src/components/LoadingSpinner.js create mode 100644 src/components/MissionCard.js create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 src/main.jsx create mode 100644 src/pages/ChatPage.js create mode 100644 src/pages/DashboardPage.js create mode 100644 src/pages/GoalsPage.js create mode 100644 src/pages/HistoryPage.js create mode 100644 src/pages/LoadingPage.js create mode 100644 src/pages/LoginPage.js create mode 100644 src/pages/LoginPage.js.backup create mode 100644 src/pages/MissionPage.js create mode 100644 src/pages/OAuthCallbackPage.js create mode 100644 src/pages/RegisterPage.js create mode 100644 vite.config.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..04de096 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,78 @@ +# Dependencies +node_modules +npm-debug.log* +yarn-debug.log* +yarn-error.log* +package-lock.json.bak + +# Production build +/build +/dist + +# Testing +/coverage +*.test.js +*.test.jsx +*.spec.js +*.spec.jsx +**/__tests__/** +**/__mocks__/** + +# Environment files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Git +.git/ +.gitignore +.gitattributes + +# Docker +Dockerfile* +docker-compose* +.dockerignore + +# Documentation +README.md +README-* +CHANGELOG.md +LICENSE +docs/ +*.md + +# CI/CD +.github/ +.gitlab-ci.yml +.travis.yml +.circleci/ +azure-pipelines.yml + +# Development tools +.eslintrc* +.prettierrc* +.editorconfig +.nvmrc + +# Misc +*.log +.nyc_output +.cache/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8ccfec --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +//* README.md +# HealthSync - AI 건강 코치 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5d340c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,64 @@ +# HealthSync - AI 건강 코치 Dockerfile +# Multi-stage build for optimized React application + +# Stage 1: Dependencies installation +FROM node:18-alpine AS deps +WORKDIR /app + +# Copy package files for better caching +COPY package*.json ./ + +# Install ALL dependencies (needed for build) +RUN npm ci && npm cache clean --force + +# Stage 2: Build application +FROM node:18-alpine AS builder +WORKDIR /app + +# Copy dependencies from previous stage +COPY --from=deps /app/node_modules ./node_modules + +# Copy source code +COPY . . + +# Set build environment variables +ENV CI=false +ENV NODE_ENV=production + +# Build the application +RUN npm run build + +# Stage 3: Production runtime +FROM node:18-alpine AS runner + +# Install wget for health check (alpine doesn't have curl by default) +RUN apk add --no-cache wget + +# Create non-root user for security +RUN addgroup -g 1001 -S healthsync && \ + adduser -S healthsync -u 1001 -G healthsync + +# Set working directory +WORKDIR /app + +# Install serve locally for better security +RUN npm init -y && npm install serve@14.2.1 + +# Copy built application from builder stage +COPY --from=builder /app/build ./build + +# Change ownership to non-root user +RUN chown -R healthsync:healthsync /app + +# Expose port 3000 +EXPOSE 3000 + +# Switch to non-root user +USER healthsync + +# Health check using wget instead of curl +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1 + +# Start the application using npx to run local serve +CMD ["npx", "serve", "-s", "build", "-l", "3000", "--no-clipboard"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..776e6f9 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,1020 @@ +pipeline { + agent any + + // 환경 변수 설정 (실제 환경 정보 반영) + environment { + // ACR 정보 + ACR_REGISTRY = 'acrhealthsync01.azurecr.io' + ACR_REPOSITORY = 'healthsync-frontend' + RESOURCE_GROUP = 'rg-digitalgarage-01' + + // SonarQube 정보 + SONARQUBE_SERVER = 'http://20.249.161.128:9000' + SONAR_PROJECT_KEY = 'Healthsync-front' + + // Docker 이미지 관련 + IMAGE_TAG = "${BUILD_NUMBER}-${GIT_COMMIT.take(7)}" + IMAGE_NAME = "${ACR_REGISTRY}/${ACR_REPOSITORY}:${IMAGE_TAG}" + LATEST_IMAGE = "${ACR_REGISTRY}/${ACR_REPOSITORY}:latest" + + // Node.js 환경 설정 + NODE_VERSION = '18' + NODE_OPTIONS = '--max-old-space-size=4096' + + // 빌드 환경 설정 + CI = 'true' + GENERATE_SOURCEMAP = 'false' + INLINE_RUNTIME_CHUNK = 'false' + + // 타임스탬프 + BUILD_TIMESTAMP = new Date().format("yyyy-MM-dd_HH-mm-ss") + + // 프로젝트 정보 + PROJECT_NAME = 'HealthSync Frontend' + BUILD_USER = "${env.BUILD_USER ?: 'Jenkins'}" + } + + options { + // 빌드 기록 보관 (최근 15개) + buildDiscarder(logRotator(numToKeepStr: '15', daysToKeepStr: '30')) + // 타임아웃 설정 (30분) + timeout(time: 30, unit: 'MINUTES') + // 동시 실행 방지 + disableConcurrentBuilds() + // 기본 체크아웃 건너뛰기 (수동으로 처리) + skipDefaultCheckout() + } + + stages { + stage('🔍 Checkout & Validation') { + steps { + script { + echo "🚀 === ${PROJECT_NAME} CI/CD 파이프라인 시작 ===" + echo "📋 빌드 정보:" + echo " • 빌드 번호: #${BUILD_NUMBER}" + echo " • 브랜치: ${env.BRANCH_NAME ?: 'N/A'}" + echo " • 시작 시간: ${BUILD_TIMESTAMP}" + echo " • 트리거: ${BUILD_USER}" + } + + // 소스코드 체크아웃 + checkout scm + + script { + // Git 정보 확인 + env.GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse HEAD').trim() + env.GIT_BRANCH = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim() + env.GIT_AUTHOR = sh(returnStdout: true, script: 'git log -1 --pretty=format:"%an"').trim() + + echo "📝 Git 정보:" + echo " • Commit: ${env.GIT_COMMIT}" + echo " • Branch: ${env.GIT_BRANCH}" + echo " • Author: ${env.GIT_AUTHOR}" + + // 필수 파일 존재 확인 + def requiredFiles = ['package.json', 'src/index.js', 'public/index.html'] + requiredFiles.each { file -> + if (!fileExists(file)) { + error "❌ 필수 파일이 없습니다: ${file}" + } + } + echo "✅ 프로젝트 구조 검증 완료" + } + } + } + + stage('⚙️ Setup Environment') { + steps { + script { + echo "🔧 === Node.js 환경 설정 ===" + + // Node.js 버전 확인 + def nodeVersion = sh(returnStdout: true, script: 'node --version').trim() + def npmVersion = sh(returnStdout: true, script: 'npm --version').trim() + + echo "📋 환경 정보:" + echo " • Node.js: ${nodeVersion}" + echo " • npm: ${npmVersion}" + echo " • 작업 디렉토리: ${WORKSPACE}" + echo " • NODE_OPTIONS: ${NODE_OPTIONS}" + + // Node.js 버전 검증 (v18 이상 필요) + def nodeVersionNumber = nodeVersion.replaceAll(/^v/, '').split('\\.')[0] as Integer + if (nodeVersionNumber < 18) { + error "❌ Node.js 18 이상이 필요합니다. 현재 버전: ${nodeVersion}" + } + echo "✅ Node.js 버전 검증 완료" + + // 프로젝트 정보 확인 + def packageJson = readJSON file: 'package.json' + echo "📦 프로젝트 정보:" + echo " • 이름: ${packageJson.name}" + echo " • 버전: ${packageJson.version}" + echo " • React: ${packageJson.dependencies?.react ?: 'N/A'}" + echo " • Scripts: ${packageJson.scripts?.keySet()?.join(', ')}" + } + } + } + + stage('📦 Install Dependencies') { + steps { + script { + echo "📥 === 종속성 설치 시작 ===" + + // npm 캐시 설정 + sh ''' + echo "🔧 npm 캐시 설정..." + npm config set cache ${WORKSPACE}/.npm-cache + npm config set prefer-offline true + npm config set audit-level moderate + ''' + + // package-lock.json 존재 여부에 따른 설치 방법 선택 + def packageLockExists = fileExists('package-lock.json') + + if (packageLockExists) { + echo "📋 package-lock.json 발견 - npm ci 실행" + sh ''' + echo "⏱️ 설치 시작 시간: $(date)" + npm ci --prefer-offline --no-audit --no-fund + echo "✅ 설치 완료 시간: $(date)" + ''' + } else { + echo "📋 package-lock.json 없음 - npm install 실행" + sh ''' + echo "⏱️ 설치 시작 시간: $(date)" + npm install --prefer-offline --no-audit --no-fund + echo "✅ 설치 완료 시간: $(date)" + ''' + } + + // 설치된 패키지 정보 확인 + sh ''' + echo "📊 설치 완료 통계:" + if [ -d node_modules ]; then + echo " • node_modules 크기: $(du -sh node_modules 2>/dev/null || echo 'N/A')" + echo " • 설치된 패키지 수: $(ls node_modules 2>/dev/null | wc -l || echo '0')" + else + echo " • node_modules 디렉토리 없음" + fi + ''' + } + } + post { + success { + echo "✅ 종속성 설치 성공" + } + failure { + echo "❌ 종속성 설치 실패" + } + } + } + + stage('🔍 Code Quality Analysis') { + parallel { + stage('ESLint') { + steps { + script { + echo "🔍 === ESLint 정적 분석 시작 ===" + + try { + // package.json에서 lint 스크립트 확인 + def packageJson = readJSON file: 'package.json' + def hasLintScript = packageJson.scripts?.containsKey('lint') + + if (hasLintScript) { + echo "📋 package.json에 lint 스크립트 발견" + sh 'npm run lint 2>&1 || echo "ESLint 검사 완료 (경고 포함)"' + } else { + echo "📋 package.json에 lint 스크립트 없음 - 직접 ESLint 실행" + // ESLint가 설치되어 있는지 확인 후 실행 + sh ''' + if [ -f node_modules/.bin/eslint ]; then + echo "🔍 직접 ESLint 실행 중..." + npx eslint src --ext .js,.jsx,.ts,.tsx --format table 2>&1 || echo "ESLint 검사 완료 (경고 포함)" + else + echo "⚠️ ESLint가 설치되지 않았습니다. React App의 기본 설정을 사용합니다." + fi + ''' + } + echo "✅ ESLint 분석 완료" + } catch (Exception e) { + echo "⚠️ ESLint 실행 중 오류: ${e.getMessage()}" + echo "ℹ️ 빌드를 계속 진행합니다" + } + } + } + } + + stage('Security Audit') { + steps { + script { + echo "🔒 === npm 보안 감사 시작 ===" + + try { + // 보안 취약점 검사 + def auditResult = sh( + returnStatus: true, + script: ''' + echo "🔍 보안 취약점 검사 실행 중..." + npm audit --audit-level=moderate --json > audit-results.json 2>/dev/null || true + npm audit --audit-level=moderate + ''' + ) + + if (auditResult == 0) { + echo "✅ 보안 취약점 없음" + } else { + echo "⚠️ 보안 취약점 발견 - 검토 필요" + echo "ℹ️ 자세한 내용은 'npm audit' 결과를 확인하세요" + } + + // 감사 결과 아카이브 (파일이 존재하는 경우에만) + if (fileExists('audit-results.json')) { + archiveArtifacts artifacts: 'audit-results.json', allowEmptyArchive: true + } + + } catch (Exception e) { + echo "⚠️ 보안 감사 중 오류: ${e.getMessage()}" + } + } + } + } + + stage('Dependency Check') { + steps { + script { + echo "📋 === 종속성 검사 시작 ===" + + sh ''' + echo "📊 종속성 분석..." + npm ls --depth=0 2>/dev/null || echo "일부 종속성 문제 발견" + + echo "" + echo "📋 주요 종속성 버전:" + npm list react react-dom react-scripts 2>/dev/null || echo "React 정보 확인 불가" + + echo "" + echo "🔍 outdated 패키지 확인:" + npm outdated 2>/dev/null || echo "모든 패키지가 최신 상태이거나 확인 불가" + ''' + } + } + } + } + } + + stage('🧪 Run Tests') { + steps { + script { + echo "🧪 === 유닛 테스트 실행 시작 ===" + + try { + // React 테스트 실행 + sh ''' + echo "🔧 테스트 환경 설정..." + export CI=true + export NODE_ENV=test + export WATCHMAN_DISABLE_RECRAWL=true + + echo "🧪 테스트 실행 중..." + npm test -- --coverage --watchAll=false --verbose --testResultsProcessor=jest-junit --coverageReporters=text-lcov --coverageReporters=html --testTimeout=30000 2>&1 + ''' + + // 테스트 결과 분석 + sh ''' + echo "📊 테스트 결과 분석..." + if [ -d coverage ]; then + echo "✅ 커버리지 리포트 생성 완료" + echo "📋 커버리지 요약:" + ls -la coverage/ + + # 커버리지 요약 정보 출력 + if [ -f coverage/lcov.info ]; then + echo "📊 LCOV 리포트 생성됨" + fi + if [ -f coverage/lcov-report/index.html ]; then + echo "📊 HTML 리포트 생성됨" + fi + else + echo "⚠️ 커버리지 리포트 생성 실패" + fi + ''' + + echo "✅ 테스트 실행 완료" + + } catch (Exception e) { + echo "❌ 테스트 실행 실패: ${e.getMessage()}" + currentBuild.result = 'UNSTABLE' + echo "ℹ️ 빌드는 계속 진행됩니다 (UNSTABLE)" + } + } + } + post { + always { + script { + // 테스트 결과 발행 + if (fileExists('coverage/lcov-report/index.html')) { + publishHTML([ + allowMissing: false, + alwaysLinkToLastBuild: true, + keepAll: true, + reportDir: 'coverage/lcov-report', + reportFiles: 'index.html', + reportName: 'Test Coverage Report', + reportTitles: 'Coverage Report' + ]) + echo "📊 커버리지 리포트 발행 완료" + } + + // JUnit 테스트 결과 발행 (파일 존재 시) + if (fileExists('junit.xml')) { + publishTestResults testResultsPattern: 'junit.xml' + echo "📋 테스트 결과 발행 완료" + } else if (fileExists('test-results.xml')) { + publishTestResults testResultsPattern: 'test-results.xml' + echo "📋 테스트 결과 발행 완료" + } + } + } + } + } + + stage('📊 SonarQube Analysis') { + when { + anyOf { + branch 'main' + branch 'develop' + branch 'master' + } + } + steps { + script { + echo "📊 === SonarQube 코드 품질 분석 시작 ===" + + // SonarQube 토큰을 Jenkins Secret으로 사용 (수정된 크리덴셜 ID) + withCredentials([string(credentialsId: 'sonarqube_access_token', variable: 'SONAR_TOKEN')]) { + sh ''' + echo "🔧 SonarQube 분석 설정..." + echo " • 프로젝트 키: ${SONAR_PROJECT_KEY}" + echo " • 서버: ${SONARQUBE_SERVER}" + echo " • 브랜치: ${GIT_BRANCH}" + + # SonarQube Scanner 실행 가능 여부 확인 + if command -v sonar-scanner &> /dev/null; then + echo "📊 SonarQube Scanner 발견 - 분석 시작..." + + sonar-scanner \\ + -Dsonar.projectKey=${SONAR_PROJECT_KEY} \\ + -Dsonar.projectName="HealthSync Frontend" \\ + -Dsonar.projectVersion=${BUILD_NUMBER} \\ + -Dsonar.sources=src \\ + -Dsonar.tests=src \\ + -Dsonar.test.inclusions="**/*.test.js,**/*.test.jsx,**/*.spec.js,**/*.spec.jsx" \\ + -Dsonar.host.url=${SONARQUBE_SERVER} \\ + -Dsonar.login=${SONAR_TOKEN} \\ + -Dsonar.javascript.lcov.reportPaths=coverage/lcov.info \\ + -Dsonar.coverage.exclusions="**/*.test.js,**/*.test.jsx,**/*.spec.js,**/*.spec.jsx,**/node_modules/**,**/public/**,**/build/**" \\ + -Dsonar.cpd.exclusions="**/node_modules/**,**/build/**,**/coverage/**" \\ + -Dsonar.exclusions="**/node_modules/**,**/build/**,**/coverage/**,**/*.min.js,**/serviceWorker.js,**/reportWebVitals.js" \\ + -Dsonar.sourceEncoding=UTF-8 \\ + -Dsonar.scm.provider=git \\ + -Dsonar.working.directory=${WORKSPACE}/.scannerwork \\ + -Dsonar.qualitygate.wait=true + + echo "✅ SonarQube 분석 완료" + else + echo "❌ SonarQube Scanner를 찾을 수 없습니다" + echo "Jenkins Global Tool Configuration에서 SonarQube Scanner를 설정해주세요" + error "SonarQube Scanner 설정 필요" + fi + ''' + } + } + } + post { + success { + echo "✅ SonarQube 분석 성공" + } + failure { + echo "❌ SonarQube 분석 실패" + } + } + } + + stage('🚪 Quality Gate') { + when { + anyOf { + branch 'main' + branch 'develop' + branch 'master' + } + } + steps { + script { + echo "🚪 === SonarQube 품질 게이트 확인 시작 ===" + + timeout(time: 10, unit: 'MINUTES') { + echo "⏳ 품질 게이트 결과 대기 중..." + + def qg = waitForQualityGate() + + echo "📋 품질 게이트 결과: ${qg.status}" + + if (qg.status != 'OK') { + echo "❌ 품질 게이트 실패!" + echo "📄 실패 상세:" + qg.conditions?.each { condition -> + echo " • ${condition.metricKey}: ${condition.actualValue} (기준: ${condition.operator} ${condition.threshold})" + } + error "SonarQube 품질 게이트를 통과하지 못했습니다: ${qg.status}" + } else { + echo "✅ 품질 게이트 통과!" + echo "🎉 코드 품질 기준을 만족합니다" + } + } + } + } + } + + stage('🏗️ Build Application') { + steps { + script { + echo "🏗️ === React 애플리케이션 빌드 시작 ===" + + try { + // 빌드 환경 설정 + sh ''' + echo "🔧 빌드 환경 설정..." + export NODE_ENV=production + export GENERATE_SOURCEMAP=false + export INLINE_RUNTIME_CHUNK=false + export BUILD_PATH=build + + echo "📋 빌드 설정:" + echo " • NODE_ENV: $NODE_ENV" + echo " • 소스맵 생성: $GENERATE_SOURCEMAP" + echo " • 런타임 청크 인라인: $INLINE_RUNTIME_CHUNK" + echo " • 빌드 경로: $BUILD_PATH" + ''' + + // React 프로덕션 빌드 + sh ''' + echo "🏗️ 프로덕션 빌드 시작..." + echo "⏱️ 빌드 시작 시간: $(date)" + + npm run build + + echo "⏱️ 빌드 완료 시간: $(date)" + echo "✅ 빌드 성공!" + ''' + + // 빌드 결과 분석 + sh ''' + echo "📊 빌드 결과 분석..." + if [ -d build ]; then + echo "📁 빌드 디렉토리 내용:" + ls -la build/ + echo "" + echo "📏 빌드 크기 분석:" + du -sh build/ + if [ -d build/static ]; then + echo " • 정적 파일: $(du -sh build/static 2>/dev/null || echo 'N/A')" + if [ -d build/static/js ]; then + echo " • JS 파일: $(find build/static/js -name '*.js' -exec du -ch {} + 2>/dev/null | tail -1 || echo 'N/A')" + fi + if [ -d build/static/css ]; then + echo " • CSS 파일: $(find build/static/css -name '*.css' -exec du -ch {} + 2>/dev/null | tail -1 || echo 'N/A')" + fi + fi + echo "" + echo "📋 주요 파일 목록:" + find build -name '*.js' -o -name '*.css' -o -name '*.html' | head -10 + else + echo "❌ 빌드 디렉토리가 생성되지 않았습니다" + exit 1 + fi + ''' + + // 빌드 아티팩트 아카이브 + archiveArtifacts artifacts: 'build/**/*', fingerprint: true, allowEmptyArchive: false + echo "📦 빌드 아티팩트 아카이브 완료" + + } catch (Exception e) { + error "❌ React 빌드 실패: ${e.getMessage()}" + } + } + } + post { + success { + echo "✅ 애플리케이션 빌드 성공" + } + failure { + echo "❌ 애플리케이션 빌드 실패" + } + } + } + + stage('🐳 Docker Build') { + steps { + script { + echo "🐳 === Docker 이미지 빌드 시작 ===" + + // 최적화된 Dockerfile 생성 + writeFile file: 'Dockerfile', text: ''' +# 멀티스테이지 빌드: 프로덕션 스테이지 (빌드는 Jenkins에서 완료) +FROM nginx:1.25-alpine + +# 메타데이터 추가 +LABEL maintainer="HealthSync Team" \\ + version="1.0" \\ + description="HealthSync Frontend Application" + +# 보안을 위한 사용자 생성 +RUN addgroup -g 1001 -S healthsync && \\ + adduser -S healthsync -u 1001 -G healthsync + +# 빌드된 React 애플리케이션 복사 +COPY --chown=healthsync:healthsync build/ /usr/share/nginx/html/ + +# 최적화된 Nginx 설정 복사 +COPY --chown=healthsync:healthsync nginx.conf /etc/nginx/nginx.conf + +# 헬스체크용 curl 설치 및 권한 설정 +RUN apk add --no-cache curl && \\ + mkdir -p /var/log/nginx /var/cache/nginx /var/run && \\ + chown -R healthsync:healthsync /usr/share/nginx/html && \\ + chown -R healthsync:healthsync /var/cache/nginx && \\ + chown -R healthsync:healthsync /var/log/nginx && \\ + chown -R healthsync:healthsync /etc/nginx/conf.d && \\ + touch /var/run/nginx.pid && \\ + chown healthsync:healthsync /var/run/nginx.pid + +# 포트 노출 +EXPOSE 80 + +# 헬스체크 추가 +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\ + CMD curl -f http://localhost:80/ || exit 1 + +# 사용자 변경 +USER healthsync + +# Nginx 실행 +CMD ["nginx", "-g", "daemon off;"] +''' + + // 최적화된 nginx.conf 생성 + writeFile file: 'nginx.conf', text: ''' +# Nginx 설정 - HealthSync Frontend 최적화 +user healthsync; +worker_processes auto; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; + use epoll; + multi_accept on; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # 로그 포맷 + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for" ' + 'rt=$request_time uct="$upstream_connect_time" ' + 'uht="$upstream_header_time" urt="$upstream_response_time"'; + + access_log /var/log/nginx/access.log main; + + # 성능 최적화 + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + client_max_body_size 10m; + + # Gzip 압축 설정 + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_comp_level 6; + gzip_types + text/plain + text/css + text/xml + text/javascript + application/json + application/javascript + application/xml+rss + application/atom+xml + image/svg+xml; + + # 서버 설정 + server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html index.htm; + + # 보안 헤더 + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:" always; + + # React Router 지원 (SPA) + location / { + try_files $uri $uri/ /index.html; + + # 캐시 설정 (HTML은 캐시 안함) + location ~* \\.html$ { + expires -1; + add_header Cache-Control "no-cache, no-store, must-revalidate"; + } + } + + # 정적 파일 캐싱 + location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + access_log off; + } + + # API 프록시 (필요시) + location /api/ { + # API Gateway로 프록시 설정 (실제 환경에 맞게 수정) + proxy_pass http://healthsync-api-gateway:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_connect_timeout 30s; + proxy_send_timeout 30s; + proxy_read_timeout 30s; + } + + # 헬스체크 엔드포인트 + location /health { + access_log off; + return 200 "healthy\\n"; + add_header Content-Type text/plain; + } + + # 에러 페이지 + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } +} +''' + + // Docker 이미지 빌드 + sh ''' + echo "🔧 Docker 이미지 빌드 준비..." + echo " • 이미지 이름: ${IMAGE_NAME}" + echo " • Latest 이미지: ${LATEST_IMAGE}" + echo " • 빌드 컨텍스트: $(pwd)" + + echo "🐳 Docker 이미지 빌드 중..." + docker build \\ + --tag ${IMAGE_NAME} \\ + --tag ${LATEST_IMAGE} \\ + --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \\ + --build-arg VCS_REF=${GIT_COMMIT} \\ + --build-arg BUILD_VERSION=${BUILD_NUMBER} \\ + . + + echo "📊 이미지 정보 확인..." + docker images | grep ${ACR_REPOSITORY} | head -5 + + echo "📏 이미지 크기:" + docker image inspect ${IMAGE_NAME} --format='Size: {{.Size}} bytes ({{div .Size 1048576}} MB)' + + echo "✅ Docker 이미지 빌드 완료" + ''' + } + } + } + + stage('🔒 Security Scan') { + steps { + script { + echo "🔒 === Docker 이미지 보안 스캔 시작 ===" + + try { + // Docker 이미지 보안 스캔 + sh ''' + echo "🔍 Docker 이미지 취약점 스캔..." + + # Trivy 보안 스캔 (설치되어 있는 경우) + if command -v trivy &> /dev/null; then + echo "🔍 Trivy로 취약점 스캔 중..." + trivy image --exit-code 0 --severity HIGH,CRITICAL --format table ${IMAGE_NAME} + trivy image --exit-code 0 --severity HIGH,CRITICAL --format json -o trivy-report.json ${IMAGE_NAME} || true + else + echo "⚠️ Trivy가 설치되지 않아 보안 스캔을 건너뜁니다" + fi + + # Docker Scout 스캔 (Docker Desktop에 포함) + if command -v docker && docker scout version &> /dev/null; then + echo "🔍 Docker Scout로 취약점 스캔 중..." + docker scout cves ${IMAGE_NAME} || echo "Docker Scout 스캔 완료 (경고 포함)" + else + echo "ℹ️ Docker Scout를 사용할 수 없습니다" + fi + + echo "✅ 보안 스캔 완료" + ''' + + // 스캔 결과 아카이브 + if (fileExists('trivy-report.json')) { + archiveArtifacts artifacts: 'trivy-report.json', allowEmptyArchive: true + echo "📋 보안 스캔 리포트 아카이브 완료" + } + + } catch (Exception e) { + echo "⚠️ 보안 스캔 중 오류: ${e.getMessage()}" + echo "ℹ️ 빌드는 계속 진행됩니다" + } + } + } + } + + stage('🚀 Push to ACR') { + steps { + script { + echo "🚀 === Azure Container Registry에 이미지 푸시 시작 ===" + + // Azure 크리덴셜로 로그인 및 푸시 + withCredentials([azureServicePrincipal('Azure-Credential')]) { + sh ''' + echo "🔑 Azure 서비스 프린시펄로 로그인..." + az login --service-principal \\ + -u ${AZURE_CLIENT_ID} \\ + -p ${AZURE_CLIENT_SECRET} \\ + --tenant ${AZURE_TENANT_ID} + + echo "🔑 ACR 로그인..." + az acr login --name acrhealthsync01 + + echo "📤 이미지 푸시 중..." + echo " • 태그별 이미지: ${IMAGE_NAME}" + docker push ${IMAGE_NAME} + + echo " • Latest 이미지: ${LATEST_IMAGE}" + docker push ${LATEST_IMAGE} + + echo "📊 푸시된 이미지 확인..." + az acr repository show-tags --name acrhealthsync01 --repository ${ACR_REPOSITORY} --top 5 --orderby time_desc + + echo "✅ 이미지 푸시 완료!" + echo "🎯 푸시된 이미지:" + echo " • ${IMAGE_NAME}" + echo " • ${LATEST_IMAGE}" + ''' + } + } + } + post { + success { + echo "✅ ACR 푸시 성공" + } + failure { + echo "❌ ACR 푸시 실패" + } + } + } + + stage('📋 Update Deployment') { + when { + branch 'main' + } + steps { + script { + echo "📋 === Kubernetes 배포 매니페스트 업데이트 ===" + + // GitOps를 위한 매니페스트 업데이트 또는 직접 배포 + sh ''' + echo "🔄 배포 매니페스트 업데이트..." + echo " • 새로운 이미지: ${IMAGE_NAME}" + echo " • 빌드 번호: ${BUILD_NUMBER}" + echo " • Git 커밋: ${GIT_COMMIT}" + + # ArgoCD 또는 GitOps를 위한 배포 정보 생성 + echo "📝 배포 정보 생성..." + cat > deployment-info.yaml << EOF +apiVersion: apps/v1 +kind: Deployment +metadata: + name: healthsync-frontend + annotations: + deployment.jenkins.build: '${BUILD_NUMBER}' + deployment.jenkins.commit: '${GIT_COMMIT}' + deployment.jenkins.timestamp: '${BUILD_TIMESTAMP}' + deployment.jenkins.image: '${IMAGE_NAME}' +spec: + template: + spec: + containers: + - name: healthsync-frontend + image: ${IMAGE_NAME} + imagePullPolicy: Always +EOF + + echo "📄 생성된 배포 정보:" + cat deployment-info.yaml + ''' + + // 배포 정보 아카이브 + archiveArtifacts artifacts: 'deployment-info.yaml', allowEmptyArchive: true + } + } + } + } + + post { + always { + script { + echo "🧹 === 파이프라인 정리 작업 시작 ===" + + // 빌드 통계 출력 + def buildDuration = currentBuild.duration ? "${(currentBuild.duration / 1000).intValue()}초" : "계산 중" + echo "📊 빌드 통계:" + echo " • 총 소요 시간: ${buildDuration}" + echo " • 최종 상태: ${currentBuild.result ?: 'SUCCESS'}" + echo " • 빌드 URL: ${env.BUILD_URL}" + echo " • 워크스페이스: ${WORKSPACE}" + + // Docker 이미지 정리 (디스크 공간 확보) + sh ''' + echo "🐳 Docker 정리..." + docker system prune -f --volumes || echo "Docker 정리 완료" + + echo "📊 디스크 사용량:" + df -h ${WORKSPACE} || echo "디스크 정보 확인 불가" + ''' + + // 워크스페이스 정리 + try { + cleanWs( + cleanWhenNotBuilt: false, + deleteDirs: true, + disableDeferredWipeout: true, + notFailBuild: true, + patterns: [ + [pattern: 'node_modules', type: 'INCLUDE'], + [pattern: '.npm-cache', type: 'INCLUDE'], + [pattern: 'coverage', type: 'INCLUDE'], + [pattern: '.scannerwork', type: 'INCLUDE'], + [pattern: 'build', type: 'INCLUDE'] + ] + ) + echo "✅ 워크스페이스 정리 완료" + } catch (Exception e) { + echo "⚠️ 워크스페이스 정리 중 오류: ${e.getMessage()}" + } + } + } + + success { + script { + echo "🎉 === 파이프라인 성공적으로 완료! ===" + echo "✅ 모든 단계가 성공했습니다" + echo "🚀 배포 준비 완료: ${IMAGE_NAME}" + + def buildDurationMinutes = currentBuild.duration ? "${(currentBuild.duration / 60000).intValue()}분 ${((currentBuild.duration % 60000) / 1000).intValue()}초" : "계산 중" + + // 성공 알림 (Slack, Teams 등) + try { + def message = """ +🎉 *HealthSync Frontend 빌드 성공!* + +📋 *빌드 정보:* +• 브랜치: `${env.BRANCH_NAME ?: 'N/A'}` +• 빌드: `#${env.BUILD_NUMBER}` +• 커밋: `${env.GIT_COMMIT?.take(8) ?: 'N/A'}` +• 작성자: `${env.GIT_AUTHOR ?: 'N/A'}` + +🐳 *이미지 정보:* +• 태그: `${IMAGE_TAG}` +• 레지스트리: `${ACR_REGISTRY}` + +⏱️ *소요 시간:* ${buildDurationMinutes} +🔗 *빌드 링크:* ${env.BUILD_URL} + +✅ 프로덕션 배포 준비 완료! +""" + + // Slack 알림 (환경 변수 설정 시) + if (env.SLACK_CHANNEL) { + slackSend( + channel: env.SLACK_CHANNEL, + color: 'good', + message: message + ) + } else { + echo "📢 Slack 채널이 설정되지 않아 알림을 건너뜁니다" + } + + } catch (Exception e) { + echo "📢 알림 전송 실패: ${e.getMessage()}" + } + } + } + + failure { + script { + echo "❌ === 파이프라인 실패! ===" + echo "💥 빌드가 실패했습니다" + echo "🔍 실패 단계: ${env.STAGE_NAME ?: '알 수 없음'}" + + def buildDurationMinutes = currentBuild.duration ? "${(currentBuild.duration / 60000).intValue()}분 ${((currentBuild.duration % 60000) / 1000).intValue()}초" : "계산 중" + + // 실패 알림 + try { + def message = """ +❌ *HealthSync Frontend 빌드 실패!* + +📋 *빌드 정보:* +• 브랜치: `${env.BRANCH_NAME ?: 'N/A'}` +• 빌드: `#${env.BUILD_NUMBER}` +• 실패 단계: `${env.STAGE_NAME ?: '알 수 없음'}` +• 커밋: `${env.GIT_COMMIT?.take(8) ?: 'N/A'}` + +⏱️ *소요 시간:* ${buildDurationMinutes} +🔗 *로그 확인:* ${env.BUILD_URL}console + +🛠️ 개발팀 확인 필요! +""" + + // Slack 알림 (환경 변수 설정 시) + if (env.SLACK_CHANNEL) { + slackSend( + channel: env.SLACK_CHANNEL, + color: 'danger', + message: message + ) + } else { + echo "📢 Slack 채널이 설정되지 않아 알림을 건너뜁니다" + } + + } catch (Exception e) { + echo "📢 실패 알림 전송 실패: ${e.getMessage()}" + } + } + } + + unstable { + script { + echo "⚠️ === 파이프라인이 불안정한 상태로 완료 ===" + echo "🔶 일부 테스트 실패 또는 경고 발생" + + def buildDurationMinutes = currentBuild.duration ? "${(currentBuild.duration / 60000).intValue()}분 ${((currentBuild.duration % 60000) / 1000).intValue()}초" : "계산 중" + + // 불안정 상태 알림 + try { + def message = """ +⚠️ *HealthSync Frontend 빌드 불안정* + +📋 *빌드 정보:* +• 브랜치: `${env.BRANCH_NAME ?: 'N/A'}` +• 빌드: `#${env.BUILD_NUMBER}` +• 상태: `UNSTABLE` + +💡 *가능한 원인:* +• 일부 테스트 실패 +• 코드 품질 경고 +• 보안 스캔 경고 + +⏱️ *소요 시간:* ${buildDurationMinutes} +🔗 *상세 확인:* ${env.BUILD_URL} + +🔍 검토 후 조치 필요 +""" + + // Slack 알림 (환경 변수 설정 시) + if (env.SLACK_CHANNEL) { + slackSend( + channel: env.SLACK_CHANNEL, + color: 'warning', + message: message + ) + } else { + echo "📢 Slack 채널이 설정되지 않아 알림을 건너뜁니다" + } + + } catch (Exception e) { + echo "📢 불안정 알림 전송 실패: ${e.getMessage()}" + } + } + } + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..100ba3c --- /dev/null +++ b/README.md @@ -0,0 +1,541 @@ +# 🏥 HealthSync - AI기반 개인형 맞춤 건강관리 서비스 + +> **"AI와 함께하는 스마트한 건강 습관 만들기"** + +직장인을 위한 AI 기반 개인 맞춤형 건강관리 플랫폼으로, 건강검진 데이터 분석부터 일상 건강 습관 형성까지 지원하는 올인원 헬스케어 솔루션입니다. + +## 📋 MVP 산출물 + +### 🎯 1. 발표자료 +- [MVP 발표자료](https://gamma.app/docs/HealthSync-mzr82kum8wfpqyf) + +### 🏗️ 2. 설계결과 +- [논리 아키텍처](https://drive.google.com/file/d/1pmg7BXCfOjf_XytCBd5aiROmLoZv5BQG/view?usp=drive_link) +- [API 설계서](https://docs.google.com/spreadsheets/d/18ApEjdr-ypVo5MlSGuNh8DUjP5tjOd0M/edit?usp=drive_link&ouid=118178534404133188086&rtpof=true&sd=true) +- [시퀀스 다이어그램](https://drive.google.com/file/d/1R5LhWQMk1irxiNmfmTvH1s5Y-OZ5D1oA/view?usp=drive_link) +- [클래스 설계서](https://drive.google.com/file/d/1bIeeTnuoJRsllwnNnvbcG-znOgPD9829/view?usp=drive_link) +- [데이터베이스 설계](https://drive.google.com/file/d/1PIWG69nZMU7_7VsHM1H4A2JiRcPRU0fy/view?usp=drive_link) +- [패키지 구조도](https://drive.google.com/file/d/1uewSxUTtsWmibSnxz4DYHJM1hTd3TlXP/view?usp=drive_link) +- [물리 아키텍처](https://drive.google.com/file/d/1sW-Noid27NFo1Vj1Pqm_qanz7bA21Ef6/view?usp=drive_link) + +### 📱 3. Git Repository +- **백엔드 (User/Health/Goal)**: [HealthSync_BE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git) +- **백엔드 (AI Service)**: [HealthSync_Intelligence](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git) +- **백엔드 (Motivator Service)**: [HealthSync_Motivator](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git) +- **Kubernetes Manifest**: [HealthSync_Manifest](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git) +- **프론트엔드**: [HealthSync_FE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git) + +### 🎬 4. 시연 동영상 +- [MVP 시연 영상](https://www.youtube.com/watch?v=FW2d6m4Wppo) + +--- + +## 🚀 프로젝트 소개 + +### 💡 비즈니스 가치 +**🏢 회사 관점** +- AI 기반 초개인화 헬스케어 플랫폼 개발로 고객 유치 및 비즈니스 가치 극대화 +- 기업 인지도 향상 및 헬스케어 시장 선점 + +**👤 고객 관점** +- 건강한 생활을 유지하고자 하는 고객에게 지속적인 건강 개선 추적 제공 +- 사용자 중심의 개인화된 헬스케어 경험 제공 + +### 🎯 핵심 기능 + +#### 🔐 인증 & 온보딩 +- **간편 로그인**: 구글 계정 연동으로 쉬운 회원가입 +- **개인화 설정**: 직업군별 맞춤 정보 수집 (IT/PM/마케팅/영업/인프라운영/고객상담) + +#### 📊 건강 데이터 분석 +- **건강검진 연동**: 건강보험공단 데이터 자동 불러오기 +- **AI 진단**: Claude API 기반 3줄 요약 건강 상태 분석 +- **이력 관리**: 최근 5회 건강검진 결과 시각화 + +#### 🎯 스마트 미션 시스템 +- **AI 추천**: 건강 상태 + 직업 특성 고려한 5개 맞춤 미션 제안 +- **습관 추적**: 일일 목표 설정 및 달성률 모니터링 +- **성취 관리**: 연속 달성 기록 및 마일스톤 보상 + +#### 💬 AI 헬스 코치 +- **실시간 상담**: 건강 관련 질문에 대한 전문적 답변 +- **독려 메시지**: 주기적 동기부여 및 리마인더 알림 +- **축하 시스템**: 미션 달성 시 즉각적인 피드백 제공 + +### 🏗️ 기술 아키텍처 + +#### 📱 Frontend +- **React 18** + **TypeScript** +- **Material-UI** 컴포넌트 라이브러리 +- 모바일 퍼스트 반응형 디자인 +- PWA 지원으로 네이티브 앱 수준 경험 + +#### ⚙️ Backend (마이크로서비스) +- **Spring Boot 3.4.0** + **Java 21** +- **Clean/Hexagonal Architecture** 적용 +- **Spring Cloud Gateway** 통합 API 게이트웨이 +- **JWT 기반** 인증/인가 시스템 +- **User/Health/Goal**: 핵심 비즈니스 로직 처리 +- **Motivator**: 동기부여 및 알림 전담 서비스 + +#### 🧠 AI Service +- **Python FastAPI** + **Claude API** 직접 연동 +- 비동기 처리로 빠른 응답 시간 보장 +- Redis 캐싱으로 성능 최적화 + +#### 🗄️ Data Layer +- **PostgreSQL 15**: 메인 데이터베이스 +- **Redis 7**: 캐싱 및 세션 관리 +- **Azure Blob Storage**: 건강검진 파일 저장 + +#### ☁️ Infrastructure +- **Azure Kubernetes Service (AKS)**: 컨테이너 오케스트레이션 +- **Azure Container Registry (ACR)**: 컨테이너 이미지 저장소 +- **Jenkins + ArgoCD**: CI/CD 파이프라인 +- **GitOps**: Manifest 저장소 기반 배포 자동화 +- **Nginx Ingress**: 로드밸런싱 및 SSL 종료 + +--- + +## 🛠️ 로컬 실행 가이드 + +### 📋 사전 요구사항 +- **Java 21+** +- **Node.js 18+** +- **Docker & Docker Compose** +- **Git** + +### 🔧 환경 설정 + +#### 1. 저장소 클론 +```bash +# 백엔드 (User/Health/Goal 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git +cd HealthSync_BE + +# 백엔드 (AI 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git +cd HealthSync_Intelligence + +# 백엔드 (Motivator 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git +cd HealthSync_Motivator + +# Kubernetes Manifest +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git +cd HealthSync_Manifest + +# 프론트엔드 +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git +cd HealthSync_FE +``` + +#### 2. 환경변수 설정 +```bash +# .env 파일 생성 +cp .env.example .env + +# 필수 환경변수 설정 +export CLAUDE_API_KEY=your_claude_api_key +export GOOGLE_CLIENT_ID=your_google_client_id +export GOOGLE_CLIENT_SECRET=your_google_client_secret +export DB_PASSWORD=your_database_password +``` + +### 🚀 실행 방법 + +#### Option 1: Docker Compose (추천) +```bash +# 전체 서비스 시작 +docker-compose up -d + +# 특정 서비스만 시작 +docker-compose up -d postgres redis +docker-compose up -d backend +docker-compose up -d frontend + +# 로그 확인 +docker-compose logs -f +``` + +#### Option 2: 개별 실행 +```bash +# 1. 데이터베이스 시작 +docker-compose up -d postgres redis + +# 2. 백엔드 서비스 시작 +# User/Health/Goal 서비스 +cd HealthSync_BE +./gradlew bootRun + +# AI 서비스 (별도 터미널) +cd HealthSync_Intelligence +python -m uvicorn main:app --reload --port 8083 + +# Motivator 서비스 (별도 터미널) +cd HealthSync_Motivator +./gradlew bootRun # 또는 python main.py (기술스택에 따라) + +# 3. 프론트엔드 시작 +cd HealthSync_FE +npm install +npm start +``` + +### 🌐 접속 정보 +- **프론트엔드**: http://localhost:3000 +- **API Gateway**: http://localhost:8080 +- **Swagger UI**: http://localhost:8080/swagger-ui.html +- **PostgreSQL**: localhost:5432 +- **Redis**: localhost:6379 + +--- + +## 🚢 CI/CD 가이드 + +### 🔄 자동 배포 파이프라인 + +#### 1. CI 파이프라인 (Jenkins) +```yaml +stages: + - checkout: 소스 코드 체크아웃 + - test: 단위 테스트 및 통합 테스트 실행 + - build: Docker 이미지 빌드 + - push: Azure Container Registry에 이미지 푸시 + - deploy: Manifest 저장소 업데이트 및 ArgoCD 배포 트리거 +``` + +#### 2. CD 파이프라인 (ArgoCD) +```yaml +source: + repoURL: https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git + path: overlays/production + +destination: + server: https://kubernetes.default.svc + namespace: healthsync-prod +``` + +### 🏗️ 배포 환경 + +#### Development +- **URL**: https://dev.healthsync.com +- **자동 배포**: main 브랜치 push 시 +- **데이터베이스**: Development PostgreSQL + +#### Production +- **URL**: https://healthsync.com +- **배포 방식**: 수동 승인 후 배포 +- **데이터베이스**: Production PostgreSQL (백업 설정) + +### 📊 모니터링 +- **Prometheus**: 메트릭 수집 +- **Grafana**: 대시보드 및 알림 +- **Application Insights**: 애플리케이션 모니터링 + +--- + +## 👥 팀 구성 (Agentic Workflow) + +### 🎯 M사상 실천 +**Value-Oriented** | **Interactive** | **Iterative** + +| 역할 | 이름 | 담당 영역 | +|------|------|-----------| +| **PO** | 김PO "PO" | 제품 기획 및 비즈니스 가치 정의 | +| **UI/UX** | 김소영 "유엑스" | 사용자 경험 설계 및 인터페이스 디자인 | +| **Frontend** | 이준수 "프론트" | React 기반 웹 애플리케이션 개발 | +| **Backend** | 박서준 "백엔드" | Spring Boot 마이크로서비스 개발 | +| **DevOps** | 정민아 "데브옵스" | CI/CD 및 인프라 자동화 | +| **Data Science** | 최태호 "데사이" | AI 모델 개발 및 데이터 분석 | +| **Medical** | 김지현 "닥터킴" | 의료 전문 자문 및 검증 | +| **QA** | 윤도현 "테스터" | 품질 보증 및 테스트 자동화 | +| **Security** | 서예린 "시큐어" | 보안 및 개인정보보호 | + +--- + +## 📜 라이선스 + +MIT License - 자세한 내용은 [LICENSE](./LICENSE) 파일을 참조하세요. + +--- + +## 📞 문의 및 지원 + +- **이슈 제출**: [Gitea Issues](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/issues) +- **기능 요청**: [Feature Request](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/discussions) +- **보안 문의**: security@healthsync.com + +--- + +*🎯 건강한 습관, AI와 함께 시작하세요! HealthSync는 여러분의 건강한 내일을 응원합니다.*# 🏥 HealthSync - AI기반 개인형 맞춤 건강관리 서비스 + +> **"AI와 함께하는 스마트한 건강 습관 만들기"** + +직장인을 위한 AI 기반 개인 맞춤형 건강관리 플랫폼으로, 건강검진 데이터 분석부터 일상 건강 습관 형성까지 지원하는 올인원 헬스케어 솔루션입니다. + +## 📋 MVP 산출물 + +### 🎯 1. 발표자료 +- [MVP 발표자료](https://gamma.app/docs/HealthSync-mzr82kum8wfpqyf) + +### 🏗️ 2. 설계결과 +- [논리 아키텍처](https://drive.google.com/file/d/1pmg7BXCfOjf_XytCBd5aiROmLoZv5BQG/view?usp=drive_link) +- [API 설계서](https://docs.google.com/spreadsheets/d/18ApEjdr-ypVo5MlSGuNh8DUjP5tjOd0M/edit?usp=drive_link&ouid=118178534404133188086&rtpof=true&sd=true) +- [시퀀스 다이어그램](https://drive.google.com/file/d/1R5LhWQMk1irxiNmfmTvH1s5Y-OZ5D1oA/view?usp=drive_link) +- [클래스 설계서](https://drive.google.com/file/d/1bIeeTnuoJRsllwnNnvbcG-znOgPD9829/view?usp=drive_link) +- [데이터베이스 설계](https://drive.google.com/file/d/1PIWG69nZMU7_7VsHM1H4A2JiRcPRU0fy/view?usp=drive_link) +- [패키지 구조도](https://drive.google.com/file/d/1uewSxUTtsWmibSnxz4DYHJM1hTd3TlXP/view?usp=drive_link) +- [물리 아키텍처](https://drive.google.com/file/d/1sW-Noid27NFo1Vj1Pqm_qanz7bA21Ef6/view?usp=drive_link) + +### 📱 3. Git Repository +- **백엔드 (User/Health/Goal)**: [HealthSync_BE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git) +- **백엔드 (AI Service)**: [HealthSync_Intelligence](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git) +- **백엔드 (Motivator Service)**: [HealthSync_Motivator](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git) +- **Kubernetes Manifest**: [HealthSync_Manifest](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git) +- **프론트엔드**: [HealthSync_FE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git) + +### 🎬 4. 시연 동영상 +- [MVP 시연 영상](https://youtube.com/shorts/ptJ4hGYEh4o?feature=share) + +--- + +## 🚀 프로젝트 소개 + +### 💡 비즈니스 가치 +**🏢 회사 관점** +- AI 기반 초개인화 헬스케어 플랫폼 개발로 고객 유치 및 비즈니스 가치 극대화 +- 기업 인지도 향상 및 헬스케어 시장 선점 + +**👤 고객 관점** +- 건강한 생활을 유지하고자 하는 고객에게 지속적인 건강 개선 추적 제공 +- 사용자 중심의 개인화된 헬스케어 경험 제공 + +### 🎯 핵심 기능 + +#### 🔐 인증 & 온보딩 +- **간편 로그인**: 구글 계정 연동으로 쉬운 회원가입 +- **개인화 설정**: 직업군별 맞춤 정보 수집 (IT/PM/마케팅/영업/인프라운영/고객상담) + +#### 📊 건강 데이터 분석 +- **건강검진 연동**: 건강보험공단 데이터 자동 불러오기 +- **AI 진단**: Claude API 기반 3줄 요약 건강 상태 분석 +- **이력 관리**: 최근 5회 건강검진 결과 시각화 + +#### 🎯 스마트 미션 시스템 +- **AI 추천**: 건강 상태 + 직업 특성 고려한 5개 맞춤 미션 제안 +- **습관 추적**: 일일 목표 설정 및 달성률 모니터링 +- **성취 관리**: 연속 달성 기록 및 마일스톤 보상 + +#### 💬 AI 헬스 코치 +- **실시간 상담**: 건강 관련 질문에 대한 전문적 답변 +- **독려 메시지**: 주기적 동기부여 및 리마인더 알림 +- **축하 시스템**: 미션 달성 시 즉각적인 피드백 제공 + +### 🏗️ 기술 아키텍처 + +#### 📱 Frontend +- **React 18** + **TypeScript** +- **Material-UI** 컴포넌트 라이브러리 +- 모바일 퍼스트 반응형 디자인 +- PWA 지원으로 네이티브 앱 수준 경험 + +#### ⚙️ Backend (마이크로서비스) +- **Spring Boot 3.4.0** + **Java 21** +- **Clean/Hexagonal Architecture** 적용 +- **Spring Cloud Gateway** 통합 API 게이트웨이 +- **JWT 기반** 인증/인가 시스템 +- **User/Health/Goal**: 핵심 비즈니스 로직 처리 +- **Motivator**: 동기부여 및 알림 전담 서비스 + +#### 🧠 AI Service +- **Python FastAPI** + **Claude API** 직접 연동 +- 비동기 처리로 빠른 응답 시간 보장 +- Redis 캐싱으로 성능 최적화 + +#### 🗄️ Data Layer +- **PostgreSQL 15**: 메인 데이터베이스 +- **Redis 7**: 캐싱 및 세션 관리 +- **Azure Blob Storage**: 건강검진 파일 저장 + +#### ☁️ Infrastructure +- **Azure Kubernetes Service (AKS)**: 컨테이너 오케스트레이션 +- **Azure Container Registry (ACR)**: 컨테이너 이미지 저장소 +- **Jenkins + ArgoCD**: CI/CD 파이프라인 +- **GitOps**: Manifest 저장소 기반 배포 자동화 +- **Nginx Ingress**: 로드밸런싱 및 SSL 종료 + +--- + +## 🛠️ 로컬 실행 가이드 + +### 📋 사전 요구사항 +- **Java 21+** +- **Node.js 18+** +- **Docker & Docker Compose** +- **Git** + +### 🔧 환경 설정 + +#### 1. 저장소 클론 +```bash +# 백엔드 (User/Health/Goal 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git +cd HealthSync_BE + +# 백엔드 (AI 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git +cd HealthSync_Intelligence + +# 백엔드 (Motivator 서비스) +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git +cd HealthSync_Motivator + +# Kubernetes Manifest +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git +cd HealthSync_Manifest + +# 프론트엔드 +git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git +cd HealthSync_FE +``` + +#### 2. 환경변수 설정 +```bash +# .env 파일 생성 +cp .env.example .env + +# 필수 환경변수 설정 +export CLAUDE_API_KEY=your_claude_api_key +export GOOGLE_CLIENT_ID=your_google_client_id +export GOOGLE_CLIENT_SECRET=your_google_client_secret +export DB_PASSWORD=your_database_password +``` + +### 🚀 실행 방법 + +#### Option 1: Docker Compose (추천) +```bash +# 전체 서비스 시작 +docker-compose up -d + +# 특정 서비스만 시작 +docker-compose up -d postgres redis +docker-compose up -d backend +docker-compose up -d frontend + +# 로그 확인 +docker-compose logs -f +``` + +#### Option 2: 개별 실행 +```bash +# 1. 데이터베이스 시작 +docker-compose up -d postgres redis + +# 2. 백엔드 서비스 시작 +# User/Health/Goal 서비스 +cd HealthSync_BE +./gradlew bootRun + +# AI 서비스 (별도 터미널) +cd HealthSync_Intelligence +python -m uvicorn main:app --reload --port 8083 + +# Motivator 서비스 (별도 터미널) +cd HealthSync_Motivator +./gradlew bootRun # 또는 python main.py (기술스택에 따라) + +# 3. 프론트엔드 시작 +cd HealthSync_FE +npm install +npm start +``` + +### 🌐 접속 정보 +- **프론트엔드**: http://localhost:3000 +- **API Gateway**: http://localhost:8080 +- **Swagger UI**: http://localhost:8080/swagger-ui.html +- **PostgreSQL**: localhost:5432 +- **Redis**: localhost:6379 + +--- + +## 🚢 CI/CD 가이드 + +### 🔄 자동 배포 파이프라인 + +#### 1. CI 파이프라인 (Jenkins) +```yaml +stages: + - checkout: 소스 코드 체크아웃 + - test: 단위 테스트 및 통합 테스트 실행 + - build: Docker 이미지 빌드 + - push: Azure Container Registry에 이미지 푸시 + - deploy: Manifest 저장소 업데이트 및 ArgoCD 배포 트리거 +``` + +#### 2. CD 파이프라인 (ArgoCD) +```yaml +source: + repoURL: https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git + path: overlays/production + +destination: + server: https://kubernetes.default.svc + namespace: healthsync-prod +``` + +### 🏗️ 배포 환경 + +#### Development +- **URL**: https://dev.healthsync.com +- **자동 배포**: main 브랜치 push 시 +- **데이터베이스**: Development PostgreSQL + +#### Production +- **URL**: https://healthsync.com +- **배포 방식**: 수동 승인 후 배포 +- **데이터베이스**: Production PostgreSQL (백업 설정) + +### 📊 모니터링 +- **Prometheus**: 메트릭 수집 +- **Grafana**: 대시보드 및 알림 +- **Application Insights**: 애플리케이션 모니터링 + +--- + +## 👥 팀 구성 (Agentic Workflow) + +### 🎯 M사상 실천 +**Value-Oriented** | **Interactive** | **Iterative** + +| 역할 | 이름 | 담당 영역 | +|------|------|-----------| +| **PO** | 김PO "PO" | 제품 기획 및 비즈니스 가치 정의 | +| **UI/UX** | 김소영 "유엑스" | 사용자 경험 설계 및 인터페이스 디자인 | +| **Frontend** | 이준수 "프론트" | React 기반 웹 애플리케이션 개발 | +| **Backend** | 박서준 "백엔드" | Spring Boot 마이크로서비스 개발 | +| **DevOps** | 정민아 "데브옵스" | CI/CD 및 인프라 자동화 | +| **Data Science** | 최태호 "데사이" | AI 모델 개발 및 데이터 분석 | +| **Medical** | 김지현 "닥터킴" | 의료 전문 자문 및 검증 | +| **QA** | 윤도현 "테스터" | 품질 보증 및 테스트 자동화 | +| **Security** | 서예린 "시큐어" | 보안 및 개인정보보호 | + +--- + +## 📜 라이선스 + +MIT License - 자세한 내용은 [LICENSE](./LICENSE) 파일을 참조하세요. + +--- + +## 📞 문의 및 지원 + +- **이슈 제출**: [Gitea Issues](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/issues) +- **기능 요청**: [Feature Request](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/discussions) +- **보안 문의**: security@healthsync.com + +--- + +*🎯 건강한 습관, AI와 함께 시작하세요! HealthSync는 여러분의 건강한 내일을 응원합니다.* diff --git a/deployment/container/Dockerfile-healthsync-front b/deployment/container/Dockerfile-healthsync-front new file mode 100644 index 0000000..11cb654 --- /dev/null +++ b/deployment/container/Dockerfile-healthsync-front @@ -0,0 +1,32 @@ +# Node.js Multi-stage build for React +FROM node:18-alpine AS builder + +WORKDIR /app +COPY package*.json ./ +RUN npm ci --only=production +COPY . . +RUN npm run build + +# Production stage with simple Nginx +FROM nginx:alpine + +# Copy built app +COPY --from=builder /app/build /usr/share/nginx/html + +# Create simple nginx config for React SPA +RUN echo 'server {' > /etc/nginx/conf.d/default.conf && \ + echo ' listen 80;' >> /etc/nginx/conf.d/default.conf && \ + echo ' server_name localhost;' >> /etc/nginx/conf.d/default.conf && \ + echo ' root /usr/share/nginx/html;' >> /etc/nginx/conf.d/default.conf && \ + echo ' index index.html;' >> /etc/nginx/conf.d/default.conf && \ + echo ' location / {' >> /etc/nginx/conf.d/default.conf && \ + echo ' try_files $uri $uri/ /index.html;' >> /etc/nginx/conf.d/default.conf && \ + echo ' }' >> /etc/nginx/conf.d/default.conf && \ + echo ' location /health {' >> /etc/nginx/conf.d/default.conf && \ + echo ' return 200 "healthy";' >> /etc/nginx/conf.d/default.conf && \ + echo ' add_header Content-Type text/plain;' >> /etc/nginx/conf.d/default.conf && \ + echo ' }' >> /etc/nginx/conf.d/default.conf && \ + echo '}' >> /etc/nginx/conf.d/default.conf + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/deployment/container/nginx.conf b/deployment/container/nginx.conf new file mode 100644 index 0000000..8143514 --- /dev/null +++ b/deployment/container/nginx.conf @@ -0,0 +1,50 @@ +user nginx; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + keepalive_timeout 65; + + server { + listen 80; + server_name localhost; + + root /usr/share/nginx/html; + index index.html; + + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; + + location / { + try_files $uri $uri/ /index.html; + } + + location /health { + access_log off; + return 200 "healthy\n"; + add_header Content-Type text/plain; + } + + add_header X-Frame-Options DENY; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + } +} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..ec2b712 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/index.html b/index.html new file mode 100644 index 0000000..8ba57ad --- /dev/null +++ b/index.html @@ -0,0 +1,36 @@ + + + + + + + + + HealthSync - AI 건강 코치 + + + + +
+ + + + +//* public/runtime-env.js +window.__runtime_config__ = { + AUTH_URL: 'http://20.1.2.3/auth', + HEALTH_URL: 'http://20.1.2.3/health', + GOAL_URL: 'http://20.1.2.3/goal', + CHAT_URL: 'http://20.1.2.3/chat' +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..96e8551 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19663 @@ +{ + "name": "healthsync-mobile", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "healthsync-mobile", + "version": "0.1.0", + "dependencies": { + "@react-oauth/google": "^0.12.2", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.3.0", + "@testing-library/user-event": "^13.5.0", + "jwt-decode": "^4.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.3.0", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", + "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.5.tgz", + "integrity": "sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "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.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.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==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", + "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-decorators": "^7.27.1" + }, + "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==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-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==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-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==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", + "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", + "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", + "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", + "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "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.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz", + "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz", + "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.3", + "@babel/plugin-transform-parameters": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.27.1.tgz", + "integrity": "sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", + "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", + "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", + "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", + "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "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==", + "license": "MIT" + }, + "node_modules/@csstools/normalize.css": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", + "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", + "license": "CC0-1.0" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.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/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.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==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "license": "MIT", + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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==", + "license": "ISC", + "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/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/globals/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "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-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/transform/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==", + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.16.tgz", + "integrity": "sha512-kLQc9xz6QIqd2oIYyXRUiAp79kGpFBm3fEM9ahfG1HI0WI5gdZ2OVHWdmZYnwODt7ISck+QuQ6sBPrtvUBML7Q==", + "license": "MIT", + "dependencies": { + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@react-oauth/google": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@react-oauth/google/-/google-0.12.2.tgz", + "integrity": "sha512-d1GVm2uD4E44EJft2RbKtp8Z1fp/gK8Lb6KHgs3pHlM0PxCXGLaq8LLYQYENnN4xPWO1gkL4apBtlPKzpLvZwg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "license": "MIT", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react": { + "version": "18.3.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", + "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@testing-library/react/node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/user-event": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", + "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "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.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.0.tgz", + "integrity": "sha512-yZQa2zm87aRVcqDyH5+4Hv9KYgSdgwX1rFnGvpbzMaC7YAljmhBET93TPiTd3ObwTL+gSpIzPKg5BqVxdCvxKg==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "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==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "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==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-jest/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/babel-loader": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.4", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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==", + "license": "BSD-3-Clause", + "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": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "license": "MIT" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "license": "MIT", + "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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "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.13.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==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001721", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz", + "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/coa/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz", + "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.43.0.tgz", + "integrity": "sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" + }, + "node_modules/cssdb": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/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==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/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==", + "license": "CC0-1.0" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT", + "peer": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT" + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "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" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.166", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz", + "integrity": "sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==", + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "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==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "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-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "license": "MIT", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "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==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "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==", + "license": "BSD-2-Clause", + "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==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "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.8" + }, + "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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "license": "MIT", + "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/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "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==", + "license": "MIT", + "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.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "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==", + "license": "BSD-3-Clause", + "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.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-haste-map/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.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": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "license": "MIT", + "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": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.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": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "license": "MIT", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "license": "CC0-1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.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==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "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==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "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/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-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==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "license": "CC0-1.0", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/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==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/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==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/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==", + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8.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==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-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" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "license": "MIT", + "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/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "license": "MIT", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-scripts/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/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==", + "license": "MIT" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.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==", + "license": "MIT" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "license": "CC0-1.0" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "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": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/svgo/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", + "engines": { + "node": ">=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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "license": "MIT", + "dependencies": { + "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/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "license": "(MIT OR CC0-1.0)", + "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==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz", + "integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/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==", + "license": "ISC", + "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==", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "license": "MIT" + }, + "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==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "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==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/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==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.99.9", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", + "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "license": "MIT", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz", + "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/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==", + "license": "MIT", + "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/workbox-build/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-build/node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "license": "MIT", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7de2f0d --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "healthsync-mobile", + "version": "0.1.0", + "private": true, + "proxy": "http://team1tier.20.214.196.128.nip.io/api", + "dependencies": { + "@react-oauth/google": "^0.12.2", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.3.0", + "@testing-library/user-event": "^13.5.0", + "jwt-decode": "^4.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.3.0", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/public.zip b/public.zip new file mode 100644 index 0000000000000000000000000000000000000000..b4875cfe100a3bf304928ccf039665a4faede3fe GIT binary patch literal 193713 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%0D*ium9@-q+Q9@gmk& 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

uGi48DzCK24XTM)ZFpH8V!NUBjpnMR zIVTiiY@xFpBk9^M=eB z86%`K2 z*feu>psY%C^_ZF!NMD8PsD(OeoM&mA=!}bf>u`MdMQJ zaQk>GGinv@VYabz-elB^AgmOnVCMO;16dwpR6-5{Y7s!inmj5W4vfVhKIcS!!bYeD zNnJ5RCl;wKL1nz89EakV*8m@bNaIrL&DwKPz{TWD%yq2tR6)l_{BH_$OTM6Sx9YyvzF`Z_|~WK1tO%wWx4>kX~$j~HZLtK|)SszX=B77_LO*dr39HBo73Bz0%rw z5Sn&Q-5BD2Qnb1#?Qor89#`z>% zuQ&7r^c;IPH}LU0%1|l$7LrQsQW()aS;PzIgwZ3b_Mnp@&@pz*k6*CegRUsqd(OL~;CX%F=yXk}y@y)x zpr=*nhXFb}l!4#B4PsEI%j>yZ`0nO;YE3rQl_TQrQDE zIe#0t`PvSB7I}Zre0!o22juMuMF8LJ+N~;7bwKLn(BSoW!_EF^?V(qa>qNs#cpa7m z<4B&D0imMYw0P77cnPta)-)kmHez2j;f!kNw%D}eO7P=jrOKG)eAq1&dPWJsms=0b zW)e^#k@(Rjag~-u(N$IsXr9g0F}aXsoWN;w<-eUXzQLQ-HgNXe>ouY$;;gIXjopkO zGbY38lX>qYAb$*<{Fu(KB&!8VvtxuW1aXEG!4^kpLf+p#V(Czn{^~6pL3~z0vwF%F zS@ml&Az2oVL>7MZ{$+ofB@L6qnHVBd0&; zAE;ttnTn2-)TfKE<82qEY$K|GtP{1uKe`cU}c}@%Fm64NMD}n%#vK3)sK9I%c1bs){YP0zR>h9Mvwovll}@HSY)!918w|H zJD#mLa2pNJs|<1VA(MI7|GbEN_gIKga_nm{E55pMT);dm}p@`*7Jzw`h~{wb_fo`&qmFja-_`orWWlN z?dmK6%d^&pDV=`5Sl_cEhC*!K?|0N7n8g?DVh zR+l)BlS(^hFzqHHD*F1R(Qe5g%^blZaPV6Dazr1%-hKkV{~KbZ zb?1W+QNSTOnA#cA>05z}OpWQxY=0H!3vhf&G{48G6#Np!hXEPjSl6h*M}6F@nAP|7 z2^!llHmRJRELroM*QfNO_+0};9_sw@66`jay;Y$E?#Y7JOPbt zsEgSjkOAo5l?1Z`q!(t71hk|v_E}XzWH>`FPHB|+uF~a$3p8muS79{}IPU_o2!2m) z4-O{zw}2oZv7oTPzX1T$t`Aj%13dZd?{|k={=1{Ky`F`sKK)-Jg8@L?sV6J(Uzo7{ z&-u9z6Z$XA)DmcHX!}cMS&PVjn17a4GNp5_7$g8N4Fv$8-*d3s>*GBp$iUEv&cx2r z;#aQT72BV#-eK?JzLd=6`wj+>K>z^Q53uZDLx03=V-K=3wKSwP1UdXl-=DH@hrX*4 zx61^$1F**vFaQAR1GGB00scV$Rywv0#=r9Su4w-B7wqC+bb`JIz2*N32LRaG{Qn~T znNSb0>s5_M06+mZ0DyFlRPMF;2Z`U>noi&Luk{R$_gATOq}eIo2ge%*4*(!O048An z?%Eyj7ya=!`GY0OIE(K5tOpU}<39k}7y|X}=>DP1KM&FSwR6kg`22UWzLll5 z703|uH}3u{&>i%1&a02QV1XdP1&RN_T~yM)Kn1Mq?5r%Mfqz%=zcO$RPo2mJR!j|S z3AQi_eiJ^hQbP3?D^jMmwx(7fL7^ z;dH+fErF&WaMb^({eE6z?$3u?es}uciPnF+BHUkP{v2SpGKUj-;8CTF{`2T=eZUhm z0ouue$^THHyL1klLdz#10RT7*007>DbOy2Bcl9;U) + + + + + + + + + + HealthSync - AI 건강 코치 + + + + + + + +

+ + diff --git a/public/index.html.backup b/public/index.html.backup new file mode 100644 index 0000000..f868fd9 --- /dev/null +++ b/public/index.html.backup @@ -0,0 +1,28 @@ + + + + + + + + + HealthSync - AI 건강 코치 + + + + +
+ + + \ No newline at end of file diff --git a/public/runtime-env.js b/public/runtime-env.js new file mode 100644 index 0000000..f5ae927 --- /dev/null +++ b/public/runtime-env.js @@ -0,0 +1,8 @@ +window.__runtime_config__ = { + AUTH_URL: 'http://localhost:8081', // 인증 서비스 (/api/auth/login) + USER_URL: 'http://localhost:8081/api/user', // 사용자 서비스 (/api/users/register, /api/users/profile) + HEALTH_URL: 'http://localhost:8082/api/health', // 건강 서비스 (/api/health/checkup/sync, /api/health/checkup/history) + GOAL_URL: 'http://localhost:8084/api/goals', // 목표 서비스 (/api/goals/missions/active, /api/goals/missions/select) + INTELLIGENCE_URL: 'http://team1tier.20.214.196.128.nip.io/api/intelligence', // AI 서비스 (/api/intelligence/health/diagnosis, /api/intelligence/missions/recommend) + CHAT_URL: 'http://team1tier.20.214.196.128.nip.io/api/chat' // 채팅 서비스 (/api/chat/consultation) +} \ No newline at end of file diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..438cca5 --- /dev/null +++ b/src/App.css @@ -0,0 +1,818 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + background: #f8f9fa; + color: #333; + min-height: 100vh; + overflow-x: hidden; +} + +.App { + width: 100%; + min-height: 100vh; + display: flex; + justify-content: center; + align-items: flex-start; +} + +/* 모바일 우선 - 전체 화면 사용 */ +.phone-container { + width: 100vw; + min-height: 100vh; + background: #fff; + position: relative; + overflow: hidden; + box-shadow: none; +} + +/* 태블릿 세로 모드 - 전체 화면 꽉 채우기 */ +@media (min-width: 768px) and (max-width: 1023px) and (orientation: portrait) { + body { + padding: 0; + display: block; + } + + .phone-container { + width: 100vw; + height: 100vh; + border-radius: 0; + box-shadow: none; + margin: 0; + } +} + +/* 태블릿 가로 모드 - 전체 화면 꽉 채우기! */ +@media (min-width: 768px) and (orientation: landscape) { + body { + padding: 0; + display: block; + } + + .phone-container { + width: 100vw; + height: 100vh; + border-radius: 0; + box-shadow: none; + margin: 0; + } +} + +/* 데스크톱 */ +@media (min-width: 1024px) and (orientation: portrait) { + body { + display: flex; + justify-content: center; + align-items: center; + padding: 20px; + } + + .phone-container { + width: 390px; + height: 844px; + max-height: 90vh; + border-radius: 25px; + box-shadow: 0 0 30px rgba(0,0,0,0.1); + margin: 0 auto; + } +} + +/* 큰 데스크톱 화면 */ +@media (min-width: 1440px) { + .phone-container { + width: 420px; + height: 900px; + } +} + +.header { + padding: max(env(safe-area-inset-top), 20px) 20px 20px; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; + position: relative; + min-height: 90px; +} + +.header-simple { + position: absolute; + top: 0; + left: 0; + right: 0; + padding: max(env(safe-area-inset-top), 20px) 20px 20px; + background: #fff; + color: #333; + border-bottom: 1px solid #e9ecef; + display: flex; + align-items: center; + min-height: 90px; + z-index: 100; +} + +.back-btn { + position: absolute; + left: 20px; + background: none; + border: none; + font-size: clamp(20px, 5vw, 24px); + cursor: pointer; + color: inherit; + padding: 5px; + min-width: 44px; + min-height: 44px; + display: flex; + align-items: center; + justify-content: center; +} + +.back-btn:hover { + opacity: 0.7; +} + +.title { + font-size: clamp(18px, 5vw, 24px); + font-weight: 700; + text-align: center; + flex: 1; +} + +.subtitle { + font-size: clamp(14px, 4vw, 16px); + opacity: 0.9; + margin-top: 8px; + text-align: center; +} + +/* 콘텐츠 영역 - 스크롤 문제 완전 해결 */ +.content { + position: absolute; + top: 90px; + bottom: 70px; + left: 0; + right: 0; + padding: 10px 20px; /* 패딩 더 줄임 */ + overflow-y: auto; + scrollbar-width: none; + -ms-overflow-style: none; + height: calc(100% - 160px); + display: flex; + flex-direction: column; + justify-content: flex-start; /* 위쪽 정렬 */ +} + +.content::-webkit-scrollbar { + display: none; +} + +/* 태블릿과 데스크톱에서 더 나은 스크롤 경험 */ +@media (min-width: 768px) { + .content { + padding: 20px 40px; + } +} + +.logo { + text-align: center; + margin-bottom: 10px; /* 더 줄임 */ +} + +.logo-container { + width: clamp(70px, 12vw, 90px); /* 더 작게 */ + height: clamp(70px, 12vw, 90px); + margin: 10px auto 15px; /* 마진 더 줄임 */ + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3); +} + +.logo-icon { + font-size: clamp(30px, 8vw, 40px); /* 크기 줄임 */ + color: white; + font-weight: 600; +} + +.btn { + width: 100%; + padding: clamp(12px, 4vw, 16px); + border: none; + border-radius: 12px; + font-size: clamp(14px, 4vw, 16px); + font-weight: 600; + cursor: pointer; + transition: all 0.3s; + margin-bottom: 16px; + min-height: 48px; +} + +.btn-primary { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; +} + +.btn-primary:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3); +} + +.btn-google { + background: #fff; + color: #333; + border: 2px solid #e9ecef; + display: flex; + align-items: center; + justify-content: center; + gap: 10px; +} + +.btn-google:hover { + border-color: #667eea; +} + +.form-group { + margin-bottom: 20px; +} + +.form-label { + display: block; + margin-bottom: 8px; + font-weight: 600; + color: #555; + font-size: clamp(14px, 3.5vw, 16px); +} + +.form-input { + width: 100%; + padding: clamp(12px, 3.5vw, 14px); + border: 2px solid #e9ecef; + border-radius: 8px; + font-size: clamp(14px, 4vw, 16px); + transition: border-color 0.3s; + min-height: 48px; +} + +.form-input:focus { + outline: none; + border-color: #667eea; +} + +.form-select { + width: 100%; + padding: clamp(12px, 3.5vw, 14px); + border: 2px solid #e9ecef; + border-radius: 8px; + font-size: clamp(14px, 4vw, 16px); + background: white; + min-height: 48px; +} + +.loading-container { + text-align: center; + padding: 20px; /* 패딩 줄임 */ +} + +.spinner { + width: clamp(50px, 12vw, 60px); + height: clamp(50px, 12vw, 60px); + border: 4px solid #e9ecef; + border-top: 4px solid #667eea; + border-radius: 50%; + animation: spin 1s linear infinite; + margin: 0 auto 30px; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.mission-card { + background: white; + border-radius: 12px; + padding: clamp(16px, 4vw, 20px); + margin-bottom: 16px; + box-shadow: 0 2px 10px rgba(0,0,0,0.05); + border: 2px solid transparent; + cursor: pointer; + transition: all 0.3s; + position: relative; +} + +.mission-card.selected { + border-color: #667eea; + background: #f8f9ff; +} + +.mission-card h3 { + font-size: clamp(16px, 4.5vw, 18px); + margin-bottom: 8px; + color: #333; + padding-right: 50px; +} + +.mission-card p { + color: #666; + font-size: clamp(12px, 3.5vw, 14px); + line-height: 1.5; +} + +.checkbox { + position: absolute; + top: 20px; + right: 20px; + width: clamp(18px, 4vw, 20px); + height: clamp(18px, 4vw, 20px); +} + +.chat-container { + position: absolute; + top: 90px; + bottom: 70px; + left: 0; + right: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.chat-messages { + flex: 1; + padding: clamp(16px, 4vw, 20px); + overflow-y: auto; + scrollbar-width: none; + -ms-overflow-style: none; + /* 스크롤 영역 명확히 설정 */ + height: 100%; + min-height: 0; +} + +.chat-messages::-webkit-scrollbar { + display: none; +} + +.message { + margin-bottom: 16px; + padding: clamp(10px, 3vw, 12px) clamp(12px, 4vw, 16px); + border-radius: 18px; + max-width: 85%; + word-wrap: break-word; + font-size: clamp(14px, 3.5vw, 16px); + line-height: 1.4; +} + +.message.user { + background: #667eea; + color: white; + margin-left: auto; + border-bottom-right-radius: 6px; +} + +.message.ai { + background: #f1f3f4; + color: #333; + border-bottom-left-radius: 6px; +} + +.message.celebration { + background: #e8f5e8; + border-left: 4px solid #4caf50; + color: #333; +} + +.chat-input { + padding: clamp(16px, 4vw, 20px); + border-top: 1px solid #e9ecef; + background: white; + flex-shrink: 0; + /* 하단 네비게이션 때문에 margin-bottom 제거 */ +} + +.input-container { + display: flex; + gap: 10px; + align-items: center; +} + +.chat-text-input { + flex: 1; + padding: clamp(10px, 3vw, 12px) clamp(12px, 4vw, 16px); + border: 2px solid #e9ecef; + border-radius: 20px; + outline: none; + font-size: clamp(14px, 4vw, 16px); + min-height: 44px; +} + +.send-btn { + width: clamp(36px, 9vw, 40px); + height: clamp(36px, 9vw, 40px); + background: #667eea; + border: none; + border-radius: 50%; + color: white; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-size: clamp(14px, 4vw, 16px); + flex-shrink: 0; +} + +/* 하단 네비게이션 - 반응형으로 완전히 재작성 */ +.bottom-nav { + position: fixed; + bottom: 0; + left: 50%; + transform: translateX(-50%); + width: 100vw; + max-width: 100vw; + background: white; + border-top: 1px solid #e9ecef; + display: flex; + padding: 12px 0; + padding-bottom: max(12px, env(safe-area-inset-bottom)); + z-index: 100; +} + +/* 태블릿 세로 모드 */ +@media (min-width: 768px) and (max-width: 1023px) and (orientation: portrait) { + .bottom-nav { + width: 100vw; + max-width: 100vw; + position: fixed; + left: 0; + transform: none; + border-radius: 0; + } +} + +/* 태블릿 가로 모드 */ +@media (min-width: 768px) and (orientation: landscape) { + .bottom-nav { + width: 100vw; + max-width: 100vw; + position: fixed; + left: 0; + transform: none; + border-radius: 0; + } +} + +/* 데스크톱 */ +@media (min-width: 1024px) and (orientation: portrait) { + .bottom-nav { + width: 390px; + max-width: 390px; + position: absolute; + left: 0; + transform: none; + border-radius: 0 0 25px 25px; + } +} + +/* 큰 데스크톱 */ +@media (min-width: 1440px) { + .bottom-nav { + width: 420px; + max-width: 420px; + } +} + +.nav-item { + flex: 1; + text-align: center; + padding: 8px; + cursor: pointer; + color: #999; + font-size: clamp(10px, 3vw, 12px); + transition: color 0.3s; + min-height: 44px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.nav-item.active { + color: #667eea; +} + +.nav-item .icon { + font-size: clamp(16px, 5vw, 20px); + margin-bottom: 4px; + display: block; +} + +.dashboard-card { + background: white; + border-radius: 12px; + padding: clamp(16px, 4vw, 20px); + margin-bottom: 16px; + box-shadow: 0 2px 10px rgba(0,0,0,0.05); +} + +.metric { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; + padding-bottom: 8px; + border-bottom: 1px solid #f0f0f0; + font-size: clamp(14px, 3.5vw, 16px); +} + +.metric:last-child { + border-bottom: none; + margin-bottom: 0; +} + +.todo-item { + display: flex; + align-items: center; + padding: clamp(12px, 4vw, 16px); + background: white; + border-radius: 12px; + margin-bottom: 12px; + box-shadow: 0 2px 10px rgba(0,0,0,0.05); +} + +.todo-text { + flex: 1; + font-size: clamp(14px, 4vw, 16px); +} + +.progress-bar { + width: 100%; + height: 8px; + background: #e9ecef; + border-radius: 4px; + overflow: hidden; + margin: 8px 0; +} + +.progress-fill { + height: 100%; + background: linear-gradient(90deg, #667eea, #764ba2); + transition: width 0.3s; +} + +.chart-tabs { + display: flex; + gap: 4px; + margin-bottom: 16px; + background: #f8f9fa; + padding: 4px; + border-radius: 8px; +} + +.chart-tab { + flex: 1; + padding: clamp(4px, 2vw, 6px) clamp(6px, 2vw, 8px); + border: none; + border-radius: 6px; + background: transparent; + color: #666; + font-size: clamp(9px, 2.5vw, 11px); + cursor: pointer; + transition: all 0.3s; + min-height: 32px; +} + +.chart-tab.active { + background: #667eea; + color: white; +} + +.chart-container { + height: clamp(160px, 40vw, 200px); + background: #fafafa; + border-radius: 8px; + padding: clamp(12px, 4vw, 16px); + position: relative; + overflow: hidden; +} + +.goal-counter { + display: flex; + align-items: center; + gap: 12px; +} + +.goal-count { + font-size: clamp(12px, 3.5vw, 14px); + color: #666; +} + +.goal-btn { + width: clamp(28px, 7vw, 32px); + height: clamp(28px, 7vw, 32px); + border: 2px solid #667eea; + border-radius: 50%; + background: white; + color: #667eea; + cursor: pointer; + font-size: clamp(14px, 4vw, 18px); + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; + flex-shrink: 0; +} + +.goal-btn.completed { + background: #667eea; + color: white; +} + +.achievement-banner { + background: linear-gradient(135deg, #667eea, #764ba2); + color: white; + padding: clamp(16px, 5vw, 20px); + border-radius: 12px; + margin-top: 20px; + text-align: center; +} + +.achievement-banner h3 { + margin-bottom: 8px; + font-size: clamp(16px, 4.5vw, 18px); +} + +.achievement-banner p { + opacity: 0.9; + font-size: clamp(12px, 3.5vw, 14px); +} + +.period-buttons { + display: flex; + gap: 8px; + margin-bottom: 16px; +} + +.period-btn { + flex: 1; + padding: clamp(6px, 2vw, 8px); + border: 1px solid #667eea; + border-radius: 6px; + background: white; + color: #667eea; + font-size: clamp(10px, 3vw, 12px); + cursor: pointer; + transition: all 0.3s; + min-height: 36px; +} + +.period-btn.active { + background: #667eea; + color: white; +} + +.overall-rate { + font-size: clamp(32px, 10vw, 48px); + font-weight: bold; + color: #667eea; + margin-bottom: 8px; + text-align: center; +} + +.daily-grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: clamp(4px, 2vw, 8px); + margin-bottom: 16px; +} + +.day-header { + text-align: center; + font-size: clamp(10px, 3vw, 12px); + color: #666; +} + +.day-item { + width: clamp(24px, 6vw, 32px); + height: clamp(24px, 6vw, 32px); + border-radius: 6px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: clamp(9px, 3vw, 12px); +} + +.day-item.completed { + background: #667eea; +} + +.day-item.incomplete { + background: #e9ecef; + color: #666; +} + +.info-box { + background: #f8f9ff; + padding: clamp(12px, 4vw, 16px); + border-radius: 12px; + margin-top: 10px; /* 마진 더 줄임 */ +} + +.info-box p { + color: #667eea; + font-weight: 600; + margin-bottom: 6px; /* 마진 줄임 */ + text-align: center; + font-size: clamp(13px, 3.5vw, 15px); /* 폰트 크기 줄임 */ +} + +.info-box .subtitle { + color: #666; + font-size: clamp(11px, 3vw, 13px); /* 폰트 크기 줄임 */ + opacity: 1; +} + +.btn-secondary { + background: #f8f9fa; + color: #666; +} + +.dashboard-header-btn { + position: absolute; + right: 20px; + background: none; + border: none; + font-size: clamp(18px, 5vw, 20px); + cursor: pointer; + min-width: 44px; + min-height: 44px; + display: flex; + align-items: center; + justify-content: center; +} + +.dashboard-content { + padding-bottom: clamp(100px, 25vw, 120px) !important; +} + +.history-btn { + background: none; + border: 1px solid #667eea; + color: #667eea; + padding: clamp(4px, 2vw, 6px) clamp(8px, 3vw, 12px); + border-radius: 6px; + font-size: clamp(10px, 3vw, 12px); + cursor: pointer; + min-height: 32px; +} + +.section-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; +} + +/* 접근성 개선 */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +/* 터치 디바이스 최적화 */ +@media (hover: none) and (pointer: coarse) { + .btn:hover, + .btn-primary:hover, + .btn-google:hover, + .back-btn:hover { + transform: none; + box-shadow: none; + } + + .btn:active, + .btn-primary:active { + transform: translateY(1px); + } +} + +/* 매우 작은 화면 최적화 */ +@media (max-width: 320px) { + .content { + padding: 12px 10px; + } + + .mission-card { + padding: 12px; + } + + .chat-messages, + .chat-input { + padding: 12px; + } +} \ No newline at end of file diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..8bcbe55 --- /dev/null +++ b/src/App.js @@ -0,0 +1,160 @@ +//* src/App.js +import React, { useState } from 'react'; +import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; +import LoginPage from './pages/LoginPage'; +import RegisterPage from './pages/RegisterPage'; +import LoadingPage from './pages/LoadingPage'; +import MissionPage from './pages/MissionPage'; +import ChatPage from './pages/ChatPage'; +import DashboardPage from './pages/DashboardPage'; +import GoalsPage from './pages/GoalsPage'; +import HistoryPage from './pages/HistoryPage'; +import OAuthCallbackPage from './pages/OAuthCallbackPage'; + +function App() { + const [user, setUser] = useState(null); + const [selectedMissions, setSelectedMissions] = useState([]); + const [healthData, setHealthData] = useState(null); // 건강검진 데이터 + const [healthDiagnosis, setHealthDiagnosis] = useState([]); // 건강진단 3줄 요약 + const [aiMissions, setAiMissions] = useState([]); // AI 추천 미션들 + const [goalData, setGoalData] = useState({ + water: { current: 3, target: 8 }, + walk: { current: 10, target: 10 }, + stretch: { current: 5, target: 5 }, + snack: { current: 0, target: 1 }, + sleep: { current: 0, target: 1 } + }); + + // 🔍 상태 변경 감지 함수들 + const setHealthDataWithLog = (data) => { + console.log('=== App.js setHealthData 호출 ==='); + console.log('받은 healthData:', data); + console.log('데이터 타입:', typeof data); + if (data) { + console.log('데이터 키들:', Object.keys(data)); + } + setHealthData(data); + }; + + const setHealthDiagnosisWithLog = (diagnosis) => { + console.log('=== App.js setHealthDiagnosis 호출 ==='); + console.log('받은 healthDiagnosis:', diagnosis); + console.log('진단 타입:', typeof diagnosis); + console.log('진단 배열 여부:', Array.isArray(diagnosis)); + console.log('진단 길이:', diagnosis?.length); + setHealthDiagnosis(diagnosis); + }; + + const setAiMissionsWithLog = (missions) => { + console.log('=== App.js setAiMissions 호출 ==='); + console.log('받은 aiMissions:', missions); + console.log('미션 타입:', typeof missions); + console.log('미션 배열 여부:', Array.isArray(missions)); + console.log('미션 개수:', missions?.length); + setAiMissions(missions); + }; + + const setGoalDataWithLog = (goals) => { + console.log('=== App.js setGoalData 호출 ==='); + console.log('이전 goalData:', goalData); + console.log('받은 goalData:', goals); + + // ✅ goalData 변경 상세 로깅 + if (goals && Object.keys(goals).length > 0) { + console.log('목표 개수:', Object.keys(goals).length); + Object.keys(goals).forEach(goalType => { + const goal = goals[goalType]; + console.log(`${goalType}:`, { + current: goal?.current, + target: goal?.target, + goalName: goal?.goalName, + missionId: goal?.missionId, + completedToday: goal?.completedToday + }); + }); + } + + setGoalData(goals); + }; + + // 🔍 현재 상태 로깅 (렌더링 시마다) + console.log('=== App.js 현재 상태 ==='); + console.log('App healthData:', healthData); + console.log('App healthDiagnosis:', healthDiagnosis); + console.log('App aiMissions:', aiMissions); + console.log('App goalData:', goalData); + console.log('App user:', user); + + return ( +
+ +
+ + } /> + } /> + } /> + + } + /> + } /> + + } + /> + } /> + + + } + /> + + } + /> + {/* ✅ HistoryPage에 goalData props 추가 */} + + } + /> + +
+
+
+ ); +} + +export default App; \ No newline at end of file diff --git a/src/App.js.backup b/src/App.js.backup new file mode 100644 index 0000000..d2958b3 --- /dev/null +++ b/src/App.js.backup @@ -0,0 +1,60 @@ +//* src/App.js +import React, { useState } from 'react'; +import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; +import LoginPage from './pages/LoginPage'; +import RegisterPage from './pages/RegisterPage'; +import LoadingPage from './pages/LoadingPage'; +import MissionPage from './pages/MissionPage'; +import ChatPage from './pages/ChatPage'; +import DashboardPage from './pages/DashboardPage'; +import GoalsPage from './pages/GoalsPage'; +import HistoryPage from './pages/HistoryPage'; +import { GoogleOAuthProvider } from '@react-oauth/google'; + +function App() { + const googleClientId = window.__runtime_config__?.GOOGLE_CLIENT_ID; + const [user, setUser] = useState(null); + const [healthData, setHealthData] = useState(null); + const [selectedMissions, setSelectedMissions] = useState([]); + const [goalData, setGoalData] = useState({ + water: { current: 3, target: 8 }, + walk: { current: 10, target: 10 }, + stretch: { current: 5, target: 5 }, + snack: { current: 0, target: 1 }, + sleep: { current: 0, target: 1 } + }); + + return ( + +
+ +
+ + {/* Navigate 컴포넌트는 props를 받지 않습니다 */} + } /> + } /> + } /> + + } + /> + } /> + } /> + } /> + } /> + } /> + +
+
+
+
+ ); +} + +export default App; \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..f67355a --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+

Vite + React

+
+ +

+ Edit src/App.jsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/BottomNav.js b/src/components/BottomNav.js new file mode 100644 index 0000000..3f5491c --- /dev/null +++ b/src/components/BottomNav.js @@ -0,0 +1,48 @@ +import React from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; + +function BottomNav() { + const navigate = useNavigate(); + const location = useLocation(); + + const navItems = [ + { path: '/chat', icon: '💬', label: '채팅' }, + { path: '/dashboard', icon: '📊', label: '대시보드' }, + { path: '/goals', icon: '🎯', label: '목표' } + ]; + + return ( +
+ {navItems.map(item => ( +
navigate(item.path)} + > +
{item.icon}
+
{item.label}
+
+ ))} +
+ ); +} + +export default BottomNav; \ No newline at end of file diff --git a/src/components/Header.js b/src/components/Header.js new file mode 100644 index 0000000..2a4d231 --- /dev/null +++ b/src/components/Header.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; + +function Header({ title, showBack = false, backPath = null, children }) { + const navigate = useNavigate(); + + const handleBack = () => { + if (backPath) { + navigate(backPath); + } else { + navigate(-1); + } + }; + + return ( +
+ {showBack && ( + + )} +
{title}
+ {children} +
+ ); +} + +export default Header; \ No newline at end of file diff --git a/src/components/LoadingSpinner.js b/src/components/LoadingSpinner.js new file mode 100644 index 0000000..854b2ee --- /dev/null +++ b/src/components/LoadingSpinner.js @@ -0,0 +1,12 @@ +import React from 'react'; + +function LoadingSpinner({ message = "로딩 중..." }) { + return ( +
+
+

{message}

+
+ ); +} + +export default LoadingSpinner; \ No newline at end of file diff --git a/src/components/MissionCard.js b/src/components/MissionCard.js new file mode 100644 index 0000000..d4cc263 --- /dev/null +++ b/src/components/MissionCard.js @@ -0,0 +1,21 @@ +import React from 'react'; + +function MissionCard({ mission, isSelected, onToggle }) { + return ( +
+ {}} + /> +

{mission.title}

+

{mission.description}

+
+ ); +} + +export default MissionCard; \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..dbb893e --- /dev/null +++ b/src/index.js @@ -0,0 +1,11 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './App.css'; +import App from './App'; + +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( + + + +); \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 0000000..b9a1a6d --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/src/pages/ChatPage.js b/src/pages/ChatPage.js new file mode 100644 index 0000000..86c27d1 --- /dev/null +++ b/src/pages/ChatPage.js @@ -0,0 +1,386 @@ +//* src/pages/ChatPage.js +import React, { useState, useEffect, useRef } from 'react'; +import BottomNav from '../components/BottomNav'; + +function ChatPage({ user }) { + const messagesEndRef = useRef(null); + const [messages, setMessages] = useState([]); + const [inputText, setInputText] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [isFirstLoad, setIsFirstLoad] = useState(true); + + // 컴포넌트 마운트 시 환영 메시지 표시 + useEffect(() => { + initializeChat(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); // initializeChat은 마운트 시에만 실행되어야 함 + + // 새 메시지가 추가될 때마다 스크롤을 맨 아래로 + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, [messages]); + + // 채팅 초기화 함수 수정 + const initializeChat = async () => { + try { + // 기본 환영 메시지 (항상 맨 위에 표시) + const welcomeMessage = { + id: 'welcome', + type: 'ai', + text: '안녕하세요! 저는 회원님의 AI 건강 코치입니다. 건강검진 결과에 대해 궁금한 점이 있으시면 언제든 물어보세요! 🏥', + timestamp: new Date().toISOString() + }; + + // 기존 대화 히스토리 로드 시도 + const loadedMessages = await loadChatHistory(); + + if (!loadedMessages || loadedMessages.length === 0) { + // 히스토리가 없으면 환영 메시지만 표시 + setMessages([welcomeMessage]); + console.log('첫 방문 - 환영 메시지만 표시합니다.'); + } else { + // 히스토리가 있으면 환영 메시지 + 히스토리 메시지들 표시 + setMessages([welcomeMessage, ...loadedMessages]); + console.log(`환영 메시지와 ${loadedMessages.length}개의 히스토리 메시지를 불러왔습니다.`); + } + } catch (error) { + console.error('채팅 초기화 중 예상치 못한 오류:', error); + // 초기화 실패 시 기본 환영 메시지만 표시 + setMessages([{ + id: 'welcome', + type: 'ai', + text: '안녕하세요! 저는 회원님의 AI 건강 코치입니다. 건강에 대해 궁금한 점이 있으시면 언제든 물어보세요! 🏥', + timestamp: new Date().toISOString() + }]); + } finally { + setIsFirstLoad(false); + } + }; + + // 대화 히스토리 로드 함수 수정 (메시지 배열을 반환하도록) + const loadChatHistory = async () => { + try { + const token = localStorage.getItem('authToken'); + const storedUserId = localStorage.getItem('userId'); + const userId = storedUserId ? parseInt(storedUserId) : 1; + + console.log(`사용자 ${userId}의 대화 히스토리를 불러오는 중...`); + + const response = await fetch(`${window.__runtime_config__?.INTELLIGENCE_URL}/chat/history?user_id=${userId}`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + if (response.status === 404 || response.status === 422) { + console.log('대화 기록이 없습니다. 새로운 대화를 시작합니다.'); + return []; // 빈 배열 반환 + } + throw new Error(`히스토리 API 오류: ${response.status}`); + } + + const result = await response.json(); + const chatHistory = result.chat_history || []; + + if (Array.isArray(chatHistory) && chatHistory.length > 0) { + // 메시지를 시간순으로 정렬하고 사용자/AI 메시지 분리 + const allMessages = []; + + chatHistory + .sort((a, b) => new Date(a.created_at) - new Date(b.created_at)) // 시간순 정렬 (오래된 것부터) + .forEach((record) => { + // AI 응답이 오류 메시지인지 먼저 확인 + const hasErrorResponse = record.response_content && ( + record.response_content.includes('💭 응답을 생성하고 있습니다') || + record.response_content.includes('❌ 죄송합니다. 응답 생성 중 오류가 발생했습니다') || + record.response_content.includes('죄송합니다. 일시적인 오류가 발생했습니다') || + record.response_content.includes('건강 상담 처리 실패') || + record.response_content.includes('건강검진 데이터를 찾을 수 없습니다') || + record.response_content.includes('AI 채팅 API 오류') + ); + + // 오류 응답이 있는 경우 사용자 질문과 AI 응답 모두 제외 + if (hasErrorResponse) { + return; // 이 record 전체를 건너뛰기 + } + + // 사용자 메시지 (message_content가 있는 경우) + if (record.message_content && record.message_content.trim() !== '') { + allMessages.push({ + id: `user_${record.message_id}`, + type: 'user', + text: record.message_content, + timestamp: record.created_at + }); + } + + // AI 응답 (정상적인 응답인 경우만) + if (record.response_content && record.response_content.trim() !== '') { + allMessages.push({ + id: `ai_${record.message_id}`, + type: 'ai', + text: record.response_content, + timestamp: record.created_at + }); + } + }); + + console.log(`${allMessages.length}개의 메시지를 불러왔습니다.`); + return allMessages; // 메시지 배열 반환 + } else { + console.log('대화 기록이 비어있습니다.'); + return []; // 빈 배열 반환 + } + + } catch (error) { + console.error('대화 히스토리 로드 중 오류:', error); + return []; // 오류 시 빈 배열 반환 + } + }; + + // AI 채팅 API 호출 함수 + const sendMessageToAI = async (message) => { + try { + const token = localStorage.getItem('authToken'); + const storedUserId = localStorage.getItem('userId'); + const userId = storedUserId ? parseInt(storedUserId) : 1; // 로컬스토리지에서 가져오되 없으면 1 + + console.log('💬 채팅 API 요청:', { + url: `${window.__runtime_config__?.INTELLIGENCE_URL}/chat/consultation`, + userId, + message: message.substring(0, 50) + '...' + }); + + // ✅ INTELLIGENCE_URL 사용으로 수정 + const response = await fetch(`${window.__runtime_config__?.INTELLIGENCE_URL}/chat/consultation`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + message: message, + user_id: userId // integer 타입으로 전송 + }) + }); + + console.log('📡 채팅 API 응답 상태:', response.status, response.statusText); + + if (!response.ok) { + const errorText = await response.text(); + console.error('❌ 채팅 API 오류:', response.status, errorText); + throw new Error(`AI 채팅 API 오류: ${response.status}`); + } + + const result = await response.json(); + console.log('✅ 채팅 API 성공:', result); + + return result.response || result.message || '죄송합니다. 응답을 생성할 수 없습니다.'; + + } catch (error) { + console.error('AI 채팅 API 호출 오류:', error); + return '죄송합니다. 일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요.'; + } + }; + + // 메시지 전송 핸들러 + + // 메시지 전송 핸들러 + const handleSend = async () => { + if (inputText.trim() && !isLoading) { + const userMessage = { + id: messages.length + 1, + type: 'user', + text: inputText.trim(), + timestamp: new Date().toISOString() + }; + + // 사용자 메시지 즉시 추가 + setMessages(prev => [...prev, userMessage]); + setInputText(''); + setIsLoading(true); + + try { + // AI 응답 요청 + const aiResponseText = await sendMessageToAI(userMessage.text); + + // AI 응답 메시지 추가 + const aiMessage = { + id: messages.length + 2, + type: 'ai', + text: aiResponseText, + timestamp: new Date().toISOString() + }; + + setMessages(prev => [...prev, aiMessage]); + + } catch (error) { + console.error('메시지 전송 오류:', error); + + // 오류 시 기본 응답 추가 + const errorMessage = { + id: messages.length + 2, + type: 'ai', + text: '죄송합니다. 일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', + timestamp: new Date().toISOString() + }; + + setMessages(prev => [...prev, errorMessage]); + } finally { + setIsLoading(false); + } + } + }; + + const handleKeyPress = (e) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + handleSend(); + } + }; + + if (isFirstLoad) { + return ( +
+
+
AI 건강 코치
+
+
+
+

AI 건강 코치를 준비하는 중...

+
+ +
+ ); + } + + return ( +
+ {/* 헤더 */} +
+
AI 건강 코치
+
+ + {/* 채팅 컨테이너 */} +
+ {/* 메시지 영역 */} +
+ {messages.map(message => ( +
+ {message.text} + {message.timestamp && ( +
+ {new Date(message.timestamp).toLocaleTimeString('ko-KR', { + hour: '2-digit', + minute: '2-digit' + })} +
+ )} +
+ ))} + + {/* AI 응답 로딩 표시 */} + {isLoading && ( +
+
+ + + +
+ AI가 답변을 생성하고 있습니다... +
+ )} + + {/* 스크롤 위치 참조용 div */} +
+
+ + {/* 입력 영역 */} +
+
+ setInputText(e.target.value)} + onKeyPress={handleKeyPress} + placeholder="건강에 대해 궁금한 점을 물어보세요..." + className="chat-text-input" + disabled={isLoading} + /> + +
+
+
+ + + + {/* 추가 스타일 */} + +
+ ); +} + +export default ChatPage; \ No newline at end of file diff --git a/src/pages/DashboardPage.js b/src/pages/DashboardPage.js new file mode 100644 index 0000000..e725408 --- /dev/null +++ b/src/pages/DashboardPage.js @@ -0,0 +1,521 @@ +// DashboardPage.js - API 데이터 매핑 함수 추가 (기존 코드 수정 최소화) + +import React, { useState } from 'react'; +import Header from '../components/Header'; +import BottomNav from '../components/BottomNav'; + +function DashboardPage({ healthData, healthDiagnosis, goalData }) { + const [activeChart, setActiveChart] = useState('bloodPressure'); + + // 🔍 받은 props 디버깅 + console.log('=== DashboardPage Props 디버깅 ==='); + console.log('1. healthData:', healthData); + console.log('2. healthData 타입:', typeof healthData); + console.log('3. healthData null 여부:', healthData === null); + console.log('4. healthData undefined 여부:', healthData === undefined); + console.log('5. healthDiagnosis:', healthDiagnosis); + console.log('6. healthDiagnosis 타입:', typeof healthDiagnosis); + console.log('7. healthDiagnosis 배열 여부:', Array.isArray(healthDiagnosis)); + console.log('8. healthDiagnosis 길이:', healthDiagnosis?.length); + + + // DashboardPage.js 맨 위에 추가 +console.log('=== DashboardPage에서 받은 실제 healthData ==='); +console.log('healthData 전체:', healthData); +console.log('healthData JSON:', JSON.stringify(healthData, null, 2)); + +if (healthData) { + console.log('최상위 키들:', Object.keys(healthData)); + + // 가능한 모든 하위 구조 확인 + Object.keys(healthData).forEach(key => { + console.log(`${key}:`, healthData[key]); + if (typeof healthData[key] === 'object' && healthData[key] !== null) { + console.log(`${key}의 키들:`, Object.keys(healthData[key])); + } + }); +} + + // ✅ API 데이터를 기존 구조에 맞게 매핑하는 함수 + const mapApiToExpectedStructure = (apiData) => { + if (!apiData) return null; + + // API 구조: userInfo, recentHealthProfile, healthProfiles + // 기존 코드 구조: basicInfo, latestRecord, trends + + const userInfo = apiData.userInfo || {}; + const recentProfile = apiData.recentHealthProfile || {}; + const profiles = apiData.healthProfiles || []; + + // trends 데이터 생성 (healthProfiles 배열에서) + const generateTrends = (profiles) => { + if (profiles.length === 0) { + // 기본 trends 반환 + return { + bloodPressure: [ + { year: "2021", value: "120/80", y: 100 }, + { year: "2022", value: "125/82", y: 110 }, + { year: "2023", value: "130/85", y: 120 }, + { year: "2024", value: "125/83", y: 115 }, + { year: "2025", value: "123/81", y: 105 } + ], + cholesterol: [ + { year: "2021", value: "200", y: 100 }, + { year: "2022", value: "210", y: 110 }, + { year: "2023", value: "220", y: 120 }, + { year: "2024", value: "225", y: 125 }, + { year: "2025", value: "232", y: 130 } + ], + weight: [ + { year: "2021", value: "65kg", y: 120 }, + { year: "2022", value: "63kg", y: 115 }, + { year: "2023", value: "61kg", y: 110 }, + { year: "2024", value: "60kg", y: 105 }, + { year: "2025", value: "59kg", y: 100 } + ] + }; + } + + // 실제 프로필 데이터에서 trends 생성 + const sortedProfiles = profiles.sort((a, b) => a.referenceYear - b.referenceYear).slice(-5); + + return { + bloodPressure: sortedProfiles.map((profile, index) => ({ + year: profile.referenceYear?.toString() || "2024", + value: `${profile.systolicBp || 120}/${profile.diastolicBp || 80}`, + y: 100 + (index * 10) + })), + cholesterol: sortedProfiles.map((profile, index) => ({ + year: profile.referenceYear?.toString() || "2024", + value: (profile.totalCholesterol || 200).toString(), + y: 100 + (index * 10) + })), + weight: sortedProfiles.map((profile, index) => ({ + year: profile.referenceYear?.toString() || "2024", + value: `${profile.weight || 70}kg`, + y: 100 + (index * 10) + })) + }; + }; + + return { + basicInfo: { + age: userInfo.age, + gender_code: userInfo.genderCode || (userInfo.gender === "남성" ? 1 : 2), + occupation: userInfo.occupation + }, + latestRecord: { + reference_year: recentProfile.referenceYear, + height: recentProfile.height, + weight: recentProfile.weight, + waist_circumference: recentProfile.waistCircumference, + visual_acuity_left: recentProfile.visualAcuityLeft, + visual_acuity_right: recentProfile.visualAcuityRight, + hearing_left: recentProfile.hearingLeft, + hearing_right: recentProfile.hearingRight, + systolic_bp: recentProfile.systolicBp, + diastolic_bp: recentProfile.diastolicBp, + fasting_glucose: recentProfile.fastingGlucose, + total_cholesterol: recentProfile.totalCholesterol, + triglyceride: recentProfile.triglyceride, + hdl_cholesterol: recentProfile.hdlCholesterol, + ldl_cholesterol: recentProfile.ldlCholesterol, + hemoglobin: recentProfile.hemoglobin, + urine_protein: recentProfile.urineProtein, + serum_creatinine: recentProfile.serumCreatinine, + ast: recentProfile.ast, + alt: recentProfile.alt, + gamma_gtp: recentProfile.gammaGtp, + smoking_status: recentProfile.smokingStatus, + drinking_status: recentProfile.drinkingStatus + }, + trends: generateTrends(profiles) + }; + }; + + // healthData 세부 구조 확인 + if (healthData) { + console.log('9. healthData 키들:', Object.keys(healthData)); + console.log('10. healthData.basicInfo:', healthData.basicInfo); + console.log('11. healthData.latestRecord:', healthData.latestRecord); + console.log('12. healthData.trends:', healthData.trends); + } else { + console.log('9. healthData가 null/undefined이므로 기본값 사용됨'); + } + + // healthDiagnosis 내용 확인 + if (healthDiagnosis && healthDiagnosis.length > 0) { + console.log('13. healthDiagnosis 내용:', healthDiagnosis); + } else { + console.log('13. healthDiagnosis가 비어있으므로 기본값 사용됨'); + } + + // healthData가 없으면 기본값 사용(테스트용) + const defaultHealthData = { + basicInfo: { age: 32, gender_code: 1, occupation: "IT개발" }, + latestRecord: { + reference_year: 2024, + height: 175, + weight: 70, + waist_circumference: 85, + visual_acuity_left: 1.0, + visual_acuity_right: 1.0, + hearing_left: 25, + hearing_right: 25, + systolic_bp: 140, + diastolic_bp: 90, + fasting_glucose: 95, + total_cholesterol: 220, + triglyceride: 150, + hdl_cholesterol: 50, + ldl_cholesterol: 130, + hemoglobin: 14.5, + urine_protein: 0, + serum_creatinine: 1.0, + ast: 25, + alt: 30, + gamma_gtp: 25, + smoking_status: 0, + drinking_status: 0 + }, + trends: { + bloodPressure: [ + { year: "2020", value: "145/88", y: 120 }, + { year: "2021", value: "142/85", y: 100 }, + { year: "2022", value: "144/87", y: 110 }, + { year: "2023", value: "141/89", y: 95 }, + { year: "2024", value: "140/90", y: 105 } + ], + cholesterol: [ + { year: "2020", value: "240", y: 100 }, + { year: "2021", value: "235", y: 90 }, + { year: "2022", value: "230", y: 85 }, + { year: "2023", value: "225", y: 75 }, + { year: "2024", value: "220", y: 80 } + ], + weight: [ + { year: "2020", value: "75kg", y: 110 }, + { year: "2021", value: "73kg", y: 105 }, + { year: "2022", value: "71kg", y: 100 }, + { year: "2023", value: "70kg", y: 98 }, + { year: "2024", value: "68kg", y: 95 } + ] + } + }; + + // 기본 건강진단 3줄 요약 (LoadingPage와 동일) + const defaultHealthDiagnosis = [ + "혈압과 콜레스테롤 수치가 주의 범위에 있어 적극적인 관리가 필요해요!", + "IT 직업 특성상 장시간 앉아있는 생활 패턴으로 인한 건강 리스크가 보여요!", + "하지만 지금 시작하면 충분히 개선 가능하니 함께 건강해져요!" + ]; + + // 🔍 실제 사용할 데이터 결정 과정 디버깅 + // ✅ API 데이터가 있으면 매핑해서 사용, 없으면 기본값 사용 + const data = healthData ? mapApiToExpectedStructure(healthData) : defaultHealthData; + const diagnosis = healthDiagnosis || defaultHealthDiagnosis; + + console.log('14. 최종 사용할 data:', data); + console.log('15. 최종 사용할 diagnosis:', diagnosis); + console.log('16. 기본값 사용 여부 - healthData:', !healthData); + console.log('17. 기본값 사용 여부 - healthDiagnosis:', !healthDiagnosis || healthDiagnosis.length === 0); + console.log('=== DashboardPage 디버깅 끝 ==='); + + // BMI 계산 함수 + const calculateBMI = (height, weight) => { + if (!height || !weight) return 24.2; + const heightInM = height / 100; + const bmi = weight / (heightInM * heightInM); + return Math.round(bmi * 10) / 10; + }; + + // BMI 상태 판정 + const getBMIStatus = (bmi) => { + if (bmi < 18.5) return { text: "저체중", color: "#3498db" }; + if (bmi < 23) return { text: "정상", color: "#27ae60" }; + if (bmi < 25) return { text: "과체중", color: "#f39c12" }; + return { text: "비만", color: "#e74c3c" }; + }; + + // 혈압 상태 판정 + const getBloodPressureStatus = (systolic, diastolic) => { + if (systolic >= 140 || diastolic >= 90) { + return { color: "#e74c3c" }; // 고혈압 + } else if (systolic >= 130 || diastolic >= 80) { + return { color: "#f39c12" }; // 주의 + } + return { color: "#27ae60" }; // 정상 + }; + + // 콜레스테롤 상태 판정 + const getCholesterolStatus = (cholesterol) => { + if (cholesterol >= 240) return { color: "#e74c3c" }; + if (cholesterol >= 200) return { color: "#f39c12" }; + return { color: "#27ae60" }; + }; + + // 혈당 상태 판정 + const getGlucoseStatus = (glucose) => { + if (glucose >= 126) return { color: "#e74c3c" }; + if (glucose >= 100) return { color: "#f39c12" }; + return { color: "#27ae60" }; + }; + + const chartData = { + bloodPressure: { + label: '혈압', + color: '#667eea', + data: data.trends?.bloodPressure || defaultHealthData.trends.bloodPressure + }, + cholesterol: { + label: '콜레스테롤', + color: '#f39c12', + data: data.trends?.cholesterol || defaultHealthData.trends.cholesterol + }, + weight: { + label: '체중', + color: '#e74c3c', + data: data.trends?.weight || defaultHealthData.trends.weight + } + }; + + const handleChartChange = (chartType) => { + setActiveChart(chartType); + }; + + const renderChart = () => { + const chartInfo = chartData[activeChart]; + const points = chartInfo.data.map((item, index) => `${20 + index * 60},${item.y}`).join(' '); + + return ( +
+ + {/* 격자 라인 */} + + + + + + + + {/* 라인 차트 */} + + + {/* 데이터 포인트 */} + {chartInfo.data.map((item, index) => ( + + + + {item.year} + + + {item.value} + + + ))} + +
+ ); + }; + + // 실제 데이터 계산 + const bmi = calculateBMI(data.latestRecord?.height, data.latestRecord?.weight); + const bmiStatus = getBMIStatus(bmi); + const bloodPressureStatus = getBloodPressureStatus(data.latestRecord?.systolic_bp, data.latestRecord?.diastolic_bp); + const cholesterolStatus = getCholesterolStatus(data.latestRecord?.total_cholesterol); + const glucoseStatus = getGlucoseStatus(data.latestRecord?.fasting_glucose); + + return ( +
+
+ +
+
+

기본 정보

+
+ 나이/성별 + + {data.basicInfo?.age || 32}세 / {data.basicInfo?.gender_code === 1 ? "남성" : data.basicInfo?.gender_code === 2 ? "여성" : "남성"} + +
+
+ 직업군 + {data.basicInfo?.occupation || "IT개발"} +
+
+ BMI + {bmi} ({bmiStatus.text}) +
+
+ +
+

+ 최근 검진 결과 + + ({data.latestRecord?.reference_year || 2024}년) + +

+ +
+ 혈압 + + {data.latestRecord?.systolic_bp || 140}/{data.latestRecord?.diastolic_bp || 90} mmHg + +
+ +
+ 신장/체중 + + {data.latestRecord?.height || 175}cm / {data.latestRecord?.weight || 70}kg + +
+ +
+ 허리둘레 + {data.latestRecord?.waist_circumference || 85}cm +
+ +
+ 시력 (좌/우) + + {(data.latestRecord?.visual_acuity_left || 1.0).toFixed(1)} / {(data.latestRecord?.visual_acuity_right || 1.0).toFixed(1)} + +
+ +
+ 청력 (좌/우) + + {data.latestRecord?.hearing_left || 25}dB / {data.latestRecord?.hearing_right || 25}dB + +
+ +
+ 공복혈당 + + {data.latestRecord?.fasting_glucose || 95} mg/dL + +
+ +
+ 총콜레스테롤 + + {data.latestRecord?.total_cholesterol || 220} mg/dL + +
+ +
+ 트리글리세라이드 + {data.latestRecord?.triglyceride || 150} mg/dL +
+ +
+ HDL콜레스테롤 + {data.latestRecord?.hdl_cholesterol || 50} mg/dL +
+ +
+ LDL콜레스테롤 + {data.latestRecord?.ldl_cholesterol || 130} mg/dL +
+ +
+ 혈색소 + {(data.latestRecord?.hemoglobin || 14.5).toFixed(1)} g/dL +
+ +
+ 요단백 + {data.latestRecord?.urine_protein === 1 ? "양성" : "음성"} +
+ +
+ 혈청크레아티닌 + {(data.latestRecord?.serum_creatinine || 1.0).toFixed(1)} mg/dL +
+ +
+ AST/GOT + {data.latestRecord?.ast || 25} IU/L +
+ +
+ ALT/GPT + {data.latestRecord?.alt || 30} IU/L +
+ +
+ 감마지티피 + {data.latestRecord?.gamma_gtp || 25} IU/L +
+ +
+ 흡연상태 + {data.latestRecord?.smoking_status === 1 ? "흡연" : "비흡연"} +
+ +
+ 음주여부 + {data.latestRecord?.drinking_status === 1 ? "음주" : "금주"} +
+
+ +
+

5년간 추이

+ +
+ + + +
+ + {renderChart()} + + {/* 추가 여백 */} +
+
+
+ + +
+ ); +} + +export default DashboardPage; \ No newline at end of file diff --git a/src/pages/GoalsPage.js b/src/pages/GoalsPage.js new file mode 100644 index 0000000..96b1d5c --- /dev/null +++ b/src/pages/GoalsPage.js @@ -0,0 +1,556 @@ +import React, { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Header from '../components/Header'; +import BottomNav from '../components/BottomNav'; + +function GoalsPage({ goalData, setGoalData }) { + const navigate = useNavigate(); + const [updating, setUpdating] = useState({}); + const [missionData, setMissionData] = useState(null); + const [loading, setLoading] = useState(true); + + // 안전한 goalData 접근 + const safeGoalData = goalData || {}; + + // goalType을 missionId로 변환하는 함수 + const getMissionId = (goalType) => { + const missionIdMap = { + 'water': '1101', + 'walk': '1750062662886002', + 'stretch': '1750062662866001', + 'snack': 'mission_snack_001', + 'sleep': 'mission_sleep_001' + }; + return missionIdMap[goalType] || goalType; + }; + + // API 미션 데이터를 goalData 형식으로 변환 (API 문서 기준) + const convertMissionDataToGoalData = (dailyMissions) => { + const converted = {}; + const usedGoalTypes = new Set(); // 이미 사용된 goalType 추적 + + dailyMissions.forEach((mission, index) => { + let goalType = 'unknown'; + const title = mission.title.toLowerCase(); + + if (title.includes('물') || title.includes('water')) { + goalType = 'water'; + } else if (title.includes('걷기') || title.includes('산책') || title.includes('walk')) { + goalType = 'walk'; + } else if (title.includes('스트레칭') || title.includes('stretch')) { + goalType = 'stretch'; + } else if (title.includes('간식') || title.includes('snack')) { + goalType = 'snack'; + } else if (title.includes('수면') || title.includes('sleep')) { + goalType = 'sleep'; + } else { + goalType = 'default'; + } + + // 중복 체크: 이미 사용된 goalType이면 고유한 키 생성 + if (usedGoalTypes.has(goalType)) { + goalType = `${goalType}_${mission.missionId}`; + console.log(`### 중복 발견! 새로운 goalType: ${goalType}`); + } + + usedGoalTypes.add(goalType); + console.log(`### 최종 goalType: ${goalType} for mission: ${mission.title}`); + + // API 문서 형식에 맞춘 필드 매핑 + converted[goalType] = { + missionId: mission.missionId, + current: mission.completedCount || 0, + target: mission.targetCount || 1, + goalName: mission.title, + description: mission.description, + status: mission.status, + completedToday: mission.completedToday, + streakDays: mission.streakDays, + completionRate: mission.completionRate, + targetAchieved: mission.targetAchieved, + nextReminderTime: mission.nextReminderTime + }; + }); + + return converted; + }; + + + // localStorage에 일일 성과 저장 (모든 미션 포함, 정확한 달성률) + const saveDailyProgressToLocal = (currentGoalData = null) => { + try { + const dataToSave = currentGoalData || goalData; + if (!dataToSave || Object.keys(dataToSave).length === 0) { + console.log('⚠️ goalData가 없어서 로컬 저장 건너뛰기'); + return; + } + + const today = new Date().toISOString().split('T')[0]; + const goals = Object.values(dataToSave); + const total = goals.length; + const completed = goals.filter(goal => goal && goal.current >= goal.target).length; + const rate = Math.round((completed / total) * 100); + + const dailyData = { + date: today, + progress: { rate, completed, total }, + goals: Object.keys(dataToSave).map(goalType => { + const goal = dataToSave[goalType]; + const current = goal.current || 0; + const target = goal.target || 1; + const isCompleted = current >= target; + + // 정확한 달성률 계산: 완료했으면 100%, 아니면 current/target 비율 + const accurateRate = isCompleted ? 100 : Math.round((current / target) * 100); + + console.log(`📊 ${goal.goalName} 달성률 계산:`, { + 현재: current, + 목표: target, + 완료여부: isCompleted, + 달성률: accurateRate + '%' + }); + + return { + type: goalType, + name: goal.goalName || goalType, + missionId: goal.missionId, + current: current, + target: target, + completed: isCompleted, + rate: accurateRate, // 정확한 달성률 (0%, 50%, 100% 등) + needsSync: goal.needsSync || false + }; + }), + timestamp: new Date().toISOString(), + allMissionsIncluded: true // 중요: 모든 미션이 포함되었음을 표시 + }; + + const existingData = JSON.parse(localStorage.getItem('dailyMissionHistory') || '[]'); + const updatedData = existingData.filter(item => + new Date(item.date) >= new Date(Date.now() - 30 * 24 * 60 * 60 * 1000) + ); + + const todayIndex = updatedData.findIndex(item => item.date === today); + if (todayIndex >= 0) { + updatedData[todayIndex] = dailyData; + } else { + updatedData.push(dailyData); + } + + localStorage.setItem('dailyMissionHistory', JSON.stringify(updatedData)); + console.log('💾 일일 진행률 로컬 저장 완료 (정확한 달성률 포함):', dailyData); + + } catch (error) { + console.warn('⚠️ 로컬 저장 실패:', error); + } + }; + + // 미션 진행 API 호출 (수정된 데이터 형식) + const recordMissionProgress = async (goalType, currentValue) => { + try { + const token = localStorage.getItem('authToken'); + const memberSerialNumber = localStorage.getItem('memberSerialNumber') || + localStorage.getItem('userId') || '1'; + + const goalInfo = safeGoalData[goalType]; + const missionId = goalInfo?.missionId || getMissionId(goalType); + const isCompleted = currentValue >= (goalInfo?.target || 1); + + // API 문서에 맞는 정확한 데이터 구조 + const requestData = { + memberSerialNumber: parseInt(memberSerialNumber), + completed: isCompleted, + completedAt: new Date().toISOString(), + notes: `${goalInfo?.goalName || goalType} 목표 진행`, + incrementCount: 1, + completionType: "INCREMENT", + incrementMode: true, + fullCompleteMode: isCompleted + // updateHistory, currentProgress, targetProgress, achievementRate 제거 + // - API 문서에 없는 필드들 + }; + + console.log(`🚀 ${goalType} 미션 완료 API 요청:`, requestData); + + const response = await fetch(`${window.__runtime_config__?.GOAL_URL}/missions/${missionId}/complete`, { + method: 'PUT', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + body: JSON.stringify(requestData) + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error(`❌ ${goalType} 미션 완료 API 오류 (${response.status}):`, errorText); + + // 상세 에러 로그 + if (response.status === 400) { + console.error('🔍 Bad Request - 요청 데이터:', requestData); + } else if (response.status === 404) { + console.error('🔍 Not Found - 미션 ID가 존재하지 않음:', missionId); + } else if (response.status === 500) { + console.error('🔍 Internal Server Error - 서버 내부 오류'); + } + + throw new Error(`미션 완료 기록 실패 (${response.status}): ${errorText}`); + } + + const result = await response.json(); + console.log(`✅ ${goalType} 미션 완료 API 성공:`, result); + return result; + + } catch (error) { + console.error(`💥 ${goalType} 미션 완료 API 호출 실패:`, error); + throw error; + } + }; + + // 완료 메시지 표시 + const showCompletionMessage = (goalType, apiResponse = null) => { + const goalInfo = safeGoalData[goalType]; + const goalName = goalInfo?.goalName || goalType; + + let message = ''; + if (apiResponse && apiResponse.data && apiResponse.data.achievementMessage) { + message = apiResponse.data.achievementMessage; + } + if (!message) { + message = `🎉 ${goalName} 목표 달성! 잘하셨어요!`; + } + + const notification = document.createElement('div'); + notification.style.cssText = ` + position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); + background: #27ae60; color: white; padding: 16px 24px; border-radius: 8px; + z-index: 1000; font-weight: bold; text-align: center; + box-shadow: 0 4px 12px rgba(0,0,0,0.3); max-width: 300px; word-wrap: break-word; + `; + notification.textContent = message; + document.body.appendChild(notification); + + setTimeout(() => { + if (document.body.contains(notification)) { + document.body.removeChild(notification); + } + }, 3000); + }; + + // 목표 업데이트 (간소화된 에러 처리) + const updateGoal = async (goalType, increment = 1) => { + const currentGoal = safeGoalData[goalType] || { current: 0, target: 1 }; + + if (updating[goalType] || currentGoal.current >= currentGoal.target) { + return; + } + + const newCurrent = Math.min(currentGoal.current + increment, currentGoal.target); + setUpdating(prev => ({ ...prev, [goalType]: true })); + + // 먼저 로컬 상태 업데이트 (즉각적인 UI 반응) + const updatedGoalData = { + ...goalData, + [goalType]: { + ...goalData[goalType], + current: newCurrent, + completedToday: newCurrent >= currentGoal.target + } + }; + + setGoalData(updatedGoalData); + + if (newCurrent >= currentGoal.target) { + showCompletionMessage(goalType); + } + + try { + // 서버 API 호출 시도 + const apiResponse = await recordMissionProgress(goalType, newCurrent); + console.log(`✅ ${goalType} 서버 동기화 성공:`, apiResponse); + + // 성공 시 완료 메시지 업데이트 + if (newCurrent >= currentGoal.target && apiResponse.data?.achievementMessage) { + showCompletionMessage(goalType, apiResponse); + } + + } catch (error) { + console.warn(`⚠️ ${goalType} 서버 동기화 실패 (로컬은 정상 업데이트됨):`, error.message); + + // 동기화 필요 표시 + const failedSyncGoalData = { + ...updatedGoalData, + [goalType]: { + ...updatedGoalData[goalType], + needsSync: true + } + }; + setGoalData(failedSyncGoalData); + } + + // 항상 로컬 저장 수행 + setTimeout(() => { + saveDailyProgressToLocal(updatedGoalData); + }, 300); + + setUpdating(prev => ({ ...prev, [goalType]: false })); + }; + + // 컴포넌트 마운트 시 한 번만 실행 (의도적으로 의존성 제외) + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(() => { + const loadActiveMissions = async () => { + try { + setLoading(true); + const token = localStorage.getItem('authToken'); + const memberSerialNumber = localStorage.getItem('memberSerialNumber') || + localStorage.getItem('userId') || '1'; + + const params = new URLSearchParams({ + memberSerialNumber: memberSerialNumber + }); + + const response = await fetch(`${window.__runtime_config__?.GOAL_URL}/missions/active?${params}`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + console.log('활성 미션 조회 성공:', result); + + if (result.success && result.data) { + setMissionData(result.data); + + const convertedGoalData = convertMissionDataToGoalData(result.data.dailyMissions); + setGoalData(convertedGoalData); + + // 초기 데이터 처리 (간소화) + setTimeout(() => { + if (convertedGoalData && Object.keys(convertedGoalData).length > 0) { + console.log('📱 초기 데이터 로컬 저장'); + // 로컬 저장만 수행 (서버 동기화는 사용자 액션 시에만) + saveDailyProgressToLocal(convertedGoalData); + } + }, 1000); + } + + } catch (error) { + console.error('활성 미션 조회 오류:', error); + } finally { + setLoading(false); + } + }; + + loadActiveMissions(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); // 빈 배열로 한 번만 실행 + + const calculateProgress = () => { + if (!goalData || Object.keys(goalData).length === 0) return 0; + const totalGoals = Object.keys(goalData).length; + const completedGoals = Object.values(goalData).filter( + goal => goal && goal.current >= goal.target + ).length; + return Math.round((completedGoals / totalGoals) * 100); + }; + + const getCompletedCount = () => { + if (!goalData || Object.keys(goalData).length === 0) return 0; + return Object.values(goalData).filter( + goal => goal && goal.current >= goal.target + ).length; + }; + + const generateGoalsFromData = () => { + const defaultGoals = [ + { id: 'water', icon: '💧', title: '하루 8잔 물마시기', unit: '잔' }, + { id: 'walk', icon: '🚶‍♂️', title: '점심시간 10분 산책', unit: '회' }, + { id: 'stretch', icon: '🧘‍♀️', title: '5분 목&어깨 스트레칭', unit: '회' }, + { id: 'snack', icon: '🥗', title: '하루 1회 건강간식', unit: '회' }, + { id: 'sleep', icon: '😴', title: '규칙적인 수면시간', unit: '회' } + ]; + + if (Object.keys(safeGoalData).length > 0) { + return Object.keys(safeGoalData).map(goalType => { + const goalInfo = safeGoalData[goalType]; + + // 기본 타입과 확장 타입 구분 + const baseType = goalType.split('_')[0]; // 'stretch_1234' → 'stretch' + const defaultGoal = defaultGoals.find(g => g.id === baseType); + + return { + id: goalType, + icon: defaultGoal?.icon || '🎯', + title: goalInfo.goalName || defaultGoal?.title || goalType, + unit: defaultGoal?.unit || '회' + }; + }); + } + + return defaultGoals; + }; + + const goals = generateGoalsFromData(); + const progress = calculateProgress(); + const completedCount = getCompletedCount(); + const totalGoals = goals.length; + + if (loading) { + return ( +
+
+
+
+

목표를 불러오는 중...

+
+
+ +
+ ); + } + + return ( +
+
+ +
+
+
+

오늘의 미션

+ +
+ +
+
+
+

+ {completedCount}/{totalGoals} 완료 ({progress}%) +

+ + {missionData?.motivationalMessage && ( +
+

+ {missionData.motivationalMessage} +

+
+ )} + + {missionData?.currentStreak > 0 && ( +
+ 🔥 연속 {missionData.currentStreak}일 달성 중! + {missionData.bestStreak && ( + + (최고 기록: {missionData.bestStreak}일) + + )} +
+ )} +
+ + {goals.map(goal => { + const data = safeGoalData[goal.id] || { current: 0, target: 1 }; + const isCompleted = data.current >= data.target; + const isUpdating = updating[goal.id]; + + return ( +
+
+
+ {goal.icon} +
+
{goal.title}
+ {data.description && ( +
+ {data.description.length > 50 ? + `${data.description.substring(0, 50)}...` : + data.description + } +
+ )} + {data.streakDays > 0 && ( +
+ 🔥 {data.streakDays}일 연속 +
+ )} + {data.needsSync && ( +
+ 📡 동기화 대기 중 +
+ )} +
+
+
+
+ + {data.current}/{data.target}{goal.unit} + + +
+
+ ); + })} + + {completedCount === totalGoals && totalGoals > 0 && ( +
+

🎉 오늘의 모든 미션 완료!

+

정말 대단해요! 건강한 하루를 보내셨네요!

+ {missionData?.completionRate === 100 && ( +

+ 달성률 100%! 완벽한 하루였습니다! 👏 +

+ )} +
+ )} + + {goals.length === 0 && ( +
+
+

설정된 미션이 없습니다.

+ +
+
+ )} +
+ + +
+ ); +} + +export default GoalsPage; \ No newline at end of file diff --git a/src/pages/HistoryPage.js b/src/pages/HistoryPage.js new file mode 100644 index 0000000..2607009 --- /dev/null +++ b/src/pages/HistoryPage.js @@ -0,0 +1,630 @@ +import React, { useState, useEffect, useCallback } from 'react'; +import Header from '../components/Header'; + +function HistoryPage({ goalData }) { // ✅ goalData props 추가 + const [selectedPeriod, setSelectedPeriod] = useState('week'); + const [historyData, setHistoryData] = useState(null); + const [loading, setLoading] = useState(false); + + // 미션 아이콘 헬퍼 함수 + const getMissionIcon = useCallback((title) => { + if (!title) return '📝'; + + const titleLower = title.toLowerCase(); + if (titleLower.includes('물') || titleLower.includes('water')) return '💧'; + if (titleLower.includes('걷기') || titleLower.includes('산책') || titleLower.includes('walk')) return '🚶‍♂️'; + if (titleLower.includes('스트레칭') || titleLower.includes('stretch')) return '🧘‍♀️'; + if (titleLower.includes('간식') || titleLower.includes('snack') || titleLower.includes('식사')) return '🥗'; + if (titleLower.includes('수면') || titleLower.includes('sleep')) return '😴'; + if (titleLower.includes('운동') || titleLower.includes('exercise')) return '💪'; + if (titleLower.includes('명상') || titleLower.includes('meditation')) return '🧘'; + + return '📝'; + }, []); + + // 진행률 색상 헬퍼 함수 + const getProgressColor = useCallback((rate) => { + if (rate >= 80) return '#27ae60'; + if (rate >= 60) return '#f39c12'; + return '#e74c3c'; + }, []); + + // 상태 메시지 헬퍼 함수 + const getStatusMessage = useCallback((rate) => { + if (rate >= 80) return '우수'; + if (rate >= 60) return '보통'; + return '개선필요'; + }, []); + + // ✅ 현재 GoalsPage 데이터를 기반으로 즉시 달성률 계산 + const getCurrentAchievementData = useCallback(() => { + console.log('🎯 현재 목표 데이터 기반 달성률 계산:', goalData); + + if (!goalData || Object.keys(goalData).length === 0) { + console.log('⚠️ goalData 없음'); + return null; + } + + const goals = Object.keys(goalData); + const totalGoals = goals.length; + const completedGoals = goals.filter(goalType => { + const goal = goalData[goalType]; + return goal && goal.current >= goal.target; + }).length; + + const overallRate = Math.round((completedGoals / totalGoals) * 100); + + // goalStats 생성 + const goalStats = goals.map(goalType => { + const goal = goalData[goalType]; + const current = goal?.current || 0; + const target = goal?.target || 1; + const rate = Math.round((current / target) * 100); + + return { + goalName: goal?.goalName || goalType, + icon: getMissionIcon(goal?.goalName || goalType), + rate: Math.min(rate, 100), // 100% 초과 방지 + completed: current >= target ? 1 : 0, + total: 1, + current, + target + }; + }); + + console.log('📊 계산된 즉시 달성률:', { + overallRate, + completedGoals, + totalGoals, + goalStats + }); + + return { + overallRate, + goalStats, + totalMissions: totalGoals, + averageCompletionRate: overallRate, + bestPerformingMission: goalStats.length > 0 ? + [...goalStats].sort((a, b) => b.rate - a.rate)[0].goalName : null, + improvementNeeded: goalStats.find(g => g.rate < 60)?.goalName || null, + bestStreak: 0, + insights: [], + chartData: null + }; + }, [goalData, getMissionIcon]); + + // 기간에 따른 날짜 범위 계산 + const getDateRange = useCallback((period) => { + const endDate = new Date(); + const startDate = new Date(); + + if (period === 'week') { + startDate.setDate(endDate.getDate() - 7); + } else { + startDate.setDate(endDate.getDate() - 30); + } + + return { + startDate: startDate.toISOString().split('T')[0], + endDate: endDate.toISOString().split('T')[0] + }; + }, []); + + // 서버 데이터를 UI 형태로 변환 + const transformServerData = useCallback((serverData) => { + console.log('🔄 서버 데이터 변환:', serverData); + + const goalStats = serverData.missionStats?.map(mission => ({ + goalName: mission.title, + icon: getMissionIcon(mission.title), + rate: Math.round(mission.achievementRate || 0), + completed: mission.completedDays || 0, + total: mission.totalDays || 0 + })) || []; + + // 최고 성과와 개선 필요 항목 찾기 + let bestPerformingMission = null; + let improvementNeeded = null; + + if (goalStats.length > 0) { + const sortedByRate = [...goalStats].sort((a, b) => b.rate - a.rate); + bestPerformingMission = sortedByRate[0].goalName; + + const worstMission = sortedByRate[sortedByRate.length - 1]; + if (worstMission.rate < 60) { + improvementNeeded = worstMission.goalName; + } + } + + return { + overallRate: Math.round(serverData.totalAchievementRate || 0), + period: selectedPeriod === 'week' ? '지난 일주일' : '지난 한달', + goalStats, + totalMissions: goalStats.length, + averageCompletionRate: Math.round(serverData.periodAchievementRate || 0), + bestPerformingMission, + improvementNeeded, + bestStreak: serverData.bestStreak || 0, + insights: serverData.insights || [], + chartData: serverData.chartData + }; + }, [selectedPeriod, getMissionIcon]); + + // 기본 빈 데이터 구조 (개선됨) + const getDefaultHistoryData = useCallback(() => { + console.log('📋 기본 데이터 생성 시도'); + + // ✅ goalData가 있으면 현재 상태 기반으로 생성 + const currentData = getCurrentAchievementData(); + if (currentData) { + console.log('✅ 현재 목표 데이터로 기본값 생성'); + return { + ...currentData, + period: selectedPeriod === 'week' ? '지난 일주일 (현재 상태)' : '지난 한달 (현재 상태)' + }; + } + + // goalData도 없으면 완전 빈 상태 + return { + overallRate: 0, + period: selectedPeriod === 'week' ? '지난 일주일' : '지난 한달', + goalStats: [], + totalMissions: 0, + averageCompletionRate: 0, + bestPerformingMission: null, + improvementNeeded: null, + bestStreak: 0, + insights: [], + chartData: null + }; + }, [selectedPeriod, getCurrentAchievementData]); + + // 로컬 데이터에서 이력 정보 가져오기 (개선됨) + const getLocalHistoryData = useCallback(() => { + try { + const localData = JSON.parse(localStorage.getItem('dailyMissionHistory') || '[]'); + console.log('📱 로컬 저장된 이력 데이터:', localData); + + if (!localData.length) { + console.log('📊 로컬 데이터 없음 - 현재 목표 데이터 사용 시도'); + return getCurrentAchievementData(); // ✅ 현재 데이터로 대체 + } + + // 선택된 기간에 따라 데이터 필터링 + const endDate = new Date(); + const startDate = new Date(); + if (selectedPeriod === 'week') { + startDate.setDate(endDate.getDate() - 7); + } else { + startDate.setDate(endDate.getDate() - 30); + } + + const filteredData = localData.filter(item => { + const itemDate = new Date(item.date); + return itemDate >= startDate && itemDate <= endDate; + }); + + console.log(`📅 ${selectedPeriod} 기간 필터링 결과:`, { + 전체데이터: localData.length, + 필터링후: filteredData.length + }); + + if (!filteredData.length) { + console.log('📊 필터링된 데이터 없음 - 현재 목표 데이터 사용'); + return getCurrentAchievementData(); // ✅ 현재 데이터로 대체 + } + + // 미션별 통계 계산 + const missionStats = {}; + filteredData.forEach(day => { + day.goals.forEach(goal => { + if (!missionStats[goal.type]) { + missionStats[goal.type] = { + name: goal.name, + totalDays: 0, + completedDays: 0, + missionId: goal.missionId, + icon: getMissionIcon(goal.name) + }; + } + missionStats[goal.type].totalDays++; + if (goal.completed) { + missionStats[goal.type].completedDays++; + } + }); + }); + + // 전체 달성률 계산 + const totalPossibleMissions = filteredData.reduce((sum, day) => sum + day.goals.length, 0); + const totalCompletedMissions = filteredData.reduce((sum, day) => + sum + day.goals.filter(goal => goal.completed).length, 0 + ); + const overallRate = totalPossibleMissions > 0 ? + Math.round((totalCompletedMissions / totalPossibleMissions) * 100) : 0; + + // goalStats 형식으로 변환 + const goalStats = Object.values(missionStats).map(stat => ({ + goalName: stat.name, + icon: stat.icon, + rate: stat.totalDays > 0 ? Math.round((stat.completedDays / stat.totalDays) * 100) : 0, + completed: stat.completedDays, + total: stat.totalDays + })); + + return { + overallRate, + goalStats, + totalMissions: goalStats.length, + averageCompletionRate: overallRate + }; + + } catch (error) { + console.error('로컬 데이터 처리 오류:', error); + return getCurrentAchievementData(); // ✅ 오류 시에도 현재 데이터 사용 + } + }, [selectedPeriod, getMissionIcon, getCurrentAchievementData]); + + // 메인 데이터 로딩 함수 (개선됨) + const loadHistoryData = useCallback(async () => { + setLoading(true); + + try { + console.log('🔄 이력 데이터 로딩 시작'); + + // ✅ 먼저 로컬 데이터 확인 (현재 목표 데이터 포함) + const localData = getLocalHistoryData(); + + if (localData && (localData.goalStats.length > 0 || localData.overallRate > 0)) { + console.log('✅ 로컬/현재 데이터 사용:', localData); + const transformedLocalData = { + ...localData, + period: selectedPeriod === 'week' ? '지난 일주일' : '지난 한달', + bestPerformingMission: localData.goalStats.length > 0 ? + [...localData.goalStats].sort((a, b) => b.rate - a.rate)[0].goalName : null, + improvementNeeded: localData.goalStats.find(g => g.rate < 60)?.goalName || null, + bestStreak: 0, + insights: [], + chartData: null + }; + setHistoryData(transformedLocalData); + setLoading(false); + return; // 데이터가 있으면 서버 호출하지 않음 + } + + // 로컬/현재 데이터도 없으면 서버에서 조회 + console.log('🌐 서버 데이터 조회'); + const token = localStorage.getItem('authToken'); + const memberSerialNumber = localStorage.getItem('memberSerialNumber') || + localStorage.getItem('userId') || '1'; + + const { startDate, endDate } = getDateRange(selectedPeriod); + + const params = new URLSearchParams({ + memberSerialNumber: memberSerialNumber, + startDate: startDate, + endDate: endDate + }); + + const response = await fetch(`${window.__runtime_config__?.GOAL_URL}/missions/history?${params}`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + console.log('📡 이력 API 응답 상태:', response.status, response.statusText); + + if (!response.ok) { + if (response.status === 404) { + console.log('서버에 이력 데이터 없음 - 기본 데이터 표시'); + setHistoryData(getDefaultHistoryData()); + return; + } + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + console.log('✅ 서버 이력 데이터 로드 성공:', result); + + if (result.success && result.data) { + const transformedData = transformServerData(result.data); + setHistoryData(transformedData); + } else { + console.log('서버 응답에 데이터 없음 - 기본 데이터 표시'); + setHistoryData(getDefaultHistoryData()); + } + + } catch (error) { + console.error('❌ 목표 이력 로딩 오류:', error); + setHistoryData(getDefaultHistoryData()); + } finally { + setLoading(false); + } + }, [selectedPeriod, getDateRange, transformServerData, getDefaultHistoryData, getLocalHistoryData]); + + // 기간 변경 핸들러 + const handlePeriodChange = useCallback((period) => { + console.log(`🔄 기간 변경: ${selectedPeriod} → ${period}`); + setSelectedPeriod(period); + }, [selectedPeriod]); + + // ✅ goalData 변경 감지 및 즉시 반영 + useEffect(() => { + console.log('🔄 goalData 변경 감지:', goalData); + if (goalData && Object.keys(goalData).length > 0) { + // 현재 데이터를 기반으로 즉시 업데이트 + const currentData = getCurrentAchievementData(); + if (currentData) { + console.log('⚡ goalData 기반 즉시 업데이트'); + setHistoryData({ + ...currentData, + period: selectedPeriod === 'week' ? '지난 일주일 (현재 상태)' : '지난 한달 (현재 상태)' + }); + } + } + }, [goalData, getCurrentAchievementData, selectedPeriod]); + + // useEffect + useEffect(() => { + loadHistoryData(); + }, [loadHistoryData]); + + // 로딩 중 렌더링 + if (loading) { + return ( +
+
+
+
+
📊
+

이력을 불러오는 중...

+
+
+
+ ); + } + + // 메인 렌더링 + return ( +
+
+ +
+ {/* 기간 선택 */} +
+

기간 선택

+
+ + +
+
+ + {historyData && ( + <> + {/* 전체 달성률 */} +
+

전체 달성률

+
+
+ {historyData.overallRate}% +
+

+ {historyData.period} 평균 +

+
+ {getStatusMessage(historyData.overallRate)} +
+ {historyData.bestStreak > 0 && ( +

+ 🔥 최고 연속: {historyData.bestStreak}일 +

+ )} +
+
+ + {/* 항목별 달성률 */} +
+

항목별 달성률

+ + {historyData.goalStats && historyData.goalStats.length > 0 ? ( + historyData.goalStats.map((goal, index) => ( +
+
+
+ {goal.icon} + {goal.goalName} + {goal.current !== undefined && goal.target !== undefined && ( + + ({goal.current}/{goal.target}) + + )} +
+
+ + {goal.rate}% + +
+ {getStatusMessage(goal.rate)} +
+
+
+
+
+
+

+ {goal.completed}/{goal.total}일 달성 +

+
+ )) + ) : ( +
+

아직 달성 이력 데이터가 없습니다.

+

+ 미션을 수행하면 여기에서 달성률을 확인할 수 있어요! +

+
+ )} +
+ + {/* 달성 통계 요약 */} +
+

달성 요약

+
+
+
+ {historyData.goalStats ? historyData.goalStats.filter(goal => goal.rate >= 80).length : 0} +
+

우수 달성

+
+
+
+ {historyData.goalStats ? historyData.goalStats.filter(goal => goal.rate >= 60 && goal.rate < 80).length : 0} +
+

보통 달성

+
+
+
+ {historyData.goalStats ? historyData.goalStats.filter(goal => goal.rate < 60).length : 0} +
+

개선 필요

+
+
+
+ + {/* AI 인사이트 */} + {historyData.insights && historyData.insights.length > 0 && ( +
+

🤖 AI 인사이트

+ {historyData.insights.map((insight, index) => ( +
+

+ {insight} +

+
+ ))} +
+ )} + + {/* 개선 제안 */} + {historyData.improvementNeeded && ( +
+

💡 개선 제안

+
+

+ {historyData.improvementNeeded} 항목의 달성률이 낮습니다.
+ 조금 더 신경써서 실천해보세요! 💪 +

+
+
+ )} + + {/* 최고 성과 */} + {historyData.bestPerformingMission && ( +
+

🏆 최고 성과

+
+

+ {historyData.bestPerformingMission} 항목에서 가장 좋은 성과를 보였습니다!
+ 이 패턴을 다른 목표에도 적용해보세요! 🎉 +

+
+
+ )} + + )} + + {/* 데이터가 없는 경우 */} + {!historyData && !loading && ( +
+
+
📊
+

+ 아직 달성 이력이 없습니다. +

+

+ 목표를 설정하고 실천하면
+ 이곳에서 달성 현황을 확인할 수 있어요! +

+
+
+ )} +
+
+ ); +} + +export default HistoryPage; \ No newline at end of file diff --git a/src/pages/LoadingPage.js b/src/pages/LoadingPage.js new file mode 100644 index 0000000..0ec4d1b --- /dev/null +++ b/src/pages/LoadingPage.js @@ -0,0 +1,418 @@ +//* src/pages/LoadingPage.js +import React, { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Header from '../components/Header'; +import LoadingSpinner from '../components/LoadingSpinner'; + +function LoadingPage({ setHealthData, setGoalData, setAiMissions, setHealthDiagnosis, user }) { + const navigate = useNavigate(); + const [loadingMessage, setLoadingMessage] = useState('건강검진 기록을 확인하고 있습니다'); + + const isNewUser = localStorage.getItem('isNewUser') === 'true'; + + useEffect(() => { + loadHealthData(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + // 가라 진단 데이터 반환 함수 + const getDefaultDiagnosis = () => { + return [ + "혈압과 콜레스테롤 수치가 주의 범위에 있어 적극적인 관리가 필요해요!", + "IT 직업 특성상 장시간 앉아있는 생활 패턴으로 인한 건강 리스크가 보여요!", + "하지만 지금 시작하면 충분히 개선 가능하니 함께 건강해져요!" + ]; + }; + + // 가라 미션 데이터 반환 함수 + const getDefaultMissions = () => { + return [ + { + missionId: "mission_001", + title: "매일 물 8잔 마시기", + description: "하루 8잔(약 2L)의 물을 나누어 마셔 수분 균형을 유지하세요.", + category: "nutrition", + difficulty: "easy", + healthBenefit: "신진대사 개선 및 독소 배출", + occupationRelevance: "장시간 앉아 있는 직업군에게 필수적인 수분 공급", + estimatedTimeMinutes: 5 + }, + { + missionId: "mission_002", + title: "하루 1만보 걷기", + description: "매일 1만보를 목표로 걷기 운동을 실시하세요.", + category: "exercise", + difficulty: "medium", + healthBenefit: "심혈관 건강 개선 및 체중 관리", + occupationRelevance: "사무직 근무자의 운동 부족 해소", + estimatedTimeMinutes: 60 + }, + { + missionId: "mission_003", + title: "목과 어깨 스트레칭", + description: "1시간마다 5분씩 목과 어깨 스트레칭을 실시하세요.", + category: "exercise", + difficulty: "easy", + healthBenefit: "목과 어깨 근육 긴장 완화", + occupationRelevance: "컴퓨터 업무로 인한 거북목 예방", + estimatedTimeMinutes: 5 + }, + { + missionId: "mission_004", + title: "규칙적인 수면 패턴", + description: "매일 같은 시간에 잠들고 7-8시간 수면을 유지하세요.", + category: "sleep", + difficulty: "medium", + healthBenefit: "면역력 강화 및 스트레스 감소", + occupationRelevance: "야근이 잦은 직업군의 수면 리듬 정상화", + estimatedTimeMinutes: 480 + }, + { + missionId: "mission_005", + title: "명상 및 깊은 호흡", + description: "하루 10분간 명상이나 깊은 호흡 운동을 실시하세요.", + category: "mental_health", + difficulty: "easy", + healthBenefit: "스트레스 감소 및 집중력 향상", + occupationRelevance: "업무 스트레스가 높은 환경에서 멘탈 케어", + estimatedTimeMinutes: 10 + } + ]; + }; + + const loadHealthData = async () => { + try { + // 1단계: 건강검진 기록 확인 + setLoadingMessage('건강검진 기록을 확인하고 있습니다'); + await new Promise(resolve => setTimeout(resolve, 1500)); + + // 2단계: 건강검진 데이터 동기화 API 호출 + const healthData = await syncHealthCheckupData(); + + // 건강 데이터를 App.js에 저장 + setHealthData(healthData); + + // 3단계: 건강진단 3줄 요약 생성 + setLoadingMessage('AI가 건강 데이터를 분석하고 있습니다'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const healthDiagnosis = await generateHealthDiagnosis(healthData, user); + setHealthDiagnosis(healthDiagnosis); // 건강진단 결과를 App.js에 저장 + + if (!isNewUser) { + // 4-A. 기존 회원: 목표 데이터 로드 + setLoadingMessage('설정된 목표를 불러오고 있습니다'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const goalData = await loadActiveGoals(); + setGoalData(goalData); + + navigate('/dashboard'); + } else { + // 4-B. 신규 회원: AI 미션 추천 생성 + setLoadingMessage('AI가 맞춤형 건강 미션을 생성하고 있습니다'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const aiMissions = await generateAiMissions(healthData, user); + setAiMissions(aiMissions); // AI 추천 미션을 App.js에 저장 + + navigate('/mission'); + } + + } catch (error) { + console.error('건강 데이터 로딩 오류:', error); + alert('건강 데이터를 불러오는 중 오류가 발생했습니다.'); + } + }; + + const syncHealthCheckupData = async () => { + try { + const token = localStorage.getItem('authToken'); + + const response = await fetch(`${window.__runtime_config__?.HEALTH_URL}/checkup/history`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + console.log('🔍 API 원본 응답:', result); + + // ✅ API 응답이 정상이면 원본 데이터만 최소한 정리해서 전달 + if (result.data && result.data.userInfo && result.data.recentHealthProfile) { + console.log('✅ API 데이터 정상 - 원본 구조로 전달'); + return result.data; // API 원본 구조 그대로 전달 + } + + // API 응답이 예상과 다르면 null 반환 (Dashboard에서 기본값 사용) + console.warn('⚠️ API 응답 구조가 예상과 다름 - null 반환하여 Dashboard 기본값 사용'); + return null; + + } catch (error) { + console.error('❌ 건강검진 동기화 API 오류:', error); + return null; // 에러 시 null 반환 (Dashboard에서 기본값 사용) + } + } +// LoadingPage.js에서 generateHealthDiagnosis 함수를 이것으로 교체하세요 + +const generateHealthDiagnosis = async (healthData, user) => { + try { + const token = localStorage.getItem('authToken'); + const user_id = localStorage.getItem('userId') || 'temp-user-id'; + + const params = new URLSearchParams({ + user_id: user_id + }); + + const response = await fetch(`${window.__runtime_config__?.INTELLIGENCE_URL}/health/diagnosis?${params}`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + console.warn(`건강진단 API 에러: ${response.status} - 가라데이터 사용`); + return getDefaultDiagnosis(); + } + + const result = await response.json(); + console.log('=== 건강진단 API 응답 디버깅 ==='); + console.log('전체 응답:', result); + + let diagnosis = null; + + // ✅ Case 1: 이미 배열로 온 경우 (올바른 백엔드 구현) + if (result.threeSentenceSummary && Array.isArray(result.threeSentenceSummary)) { + console.log('✅ 배열 형태로 수신:', result.threeSentenceSummary); + diagnosis = result.threeSentenceSummary; // 있는 그대로만 사용 + } + // ✅ Case 2: 문자열로 온 경우 (현재 백엔드 구현) - 응답 그대로만 분리 + else if (result.threeSentenceSummary && typeof result.threeSentenceSummary === 'string') { + console.log('⚠️ 문자열 형태로 수신 - 배열로 변환:', result.threeSentenceSummary); + + const originalText = result.threeSentenceSummary.trim(); + let sentences = []; + + // 🔧 방법 1: 마침표 + 공백으로 분리 + sentences = originalText.split(/\.\s+/); + console.log('방법1 결과:', sentences); + + // 🔧 방법 2: 마침표만으로 분리 (공백 없는 경우) + if (sentences.length <= 1) { + sentences = originalText.split(/\./); + console.log('방법2 결과:', sentences); + } + + // 🔧 방법 3: 느낌표, 물음표도 포함 + if (sentences.length <= 1) { + sentences = originalText.split(/[.!?]\s*/); + console.log('방법3 결과:', sentences); + } + + // 🔧 방법 4: 줄바꿈으로 분리 시도 + if (sentences.length <= 1) { + sentences = originalText.split(/\n+/); + console.log('방법4 결과:', sentences); + } + + // 문장 정리 + sentences = sentences + .map(s => s.trim()) + .filter(s => s.length > 5) // 너무 짧은 문장 제거 + .map(s => { + // 문장 끝에 마침표가 없으면 추가 + if (s && !s.match(/[.!?]$/)) { + return s + '.'; + } + return s; + }); + + console.log('최종 정리된 문장들:', sentences); + + // ✅ API 응답 그대로만 사용 (부족해도 추가 안함) + if (sentences.length > 0) { + diagnosis = sentences; // 있는 것만 그대로 사용 + console.log('✅ 문장 분리 성공 (응답 그대로):', diagnosis); + } else { + // 완전히 분리 실패한 경우만 원문 사용 + console.log('⚠️ 문장 분리 실패, 원문 그대로 사용'); + diagnosis = [originalText]; + } + } + + // ✅ 백업: 다른 키에서도 확인 + if (!diagnosis) { + console.log('⚠️ threeSentenceSummary 없음, 다른 키 확인'); + + if (result.diagnosis && Array.isArray(result.diagnosis)) { + diagnosis = result.diagnosis; + } else if (result.data?.diagnosis && Array.isArray(result.data.diagnosis)) { + diagnosis = result.data.diagnosis; + } else if (result.data && Array.isArray(result.data)) { + diagnosis = result.data; + } else if (Array.isArray(result)) { + diagnosis = result; + } + } + + console.log('🎯 최종 diagnosis 결과 (API 응답 그대로):', diagnosis); + + // ✅ 최종 검증 + if (diagnosis && Array.isArray(diagnosis) && diagnosis.length > 0) { + console.log(`✅ AI 건강진단 로드 성공! (${diagnosis.length}문장)`, diagnosis); + return diagnosis; // API 응답 그대로 반환 + } else { + console.log('❌ 최종 파싱 실패 - 가라데이터 사용'); + return getDefaultDiagnosis(); + } + + } catch (error) { + console.warn('건강진단 API 연결 실패 - 가라데이터 사용:', error.message); + return getDefaultDiagnosis(); + } +}; + + // AI 미션 추천 API 호출 (신규회원 전용, POST 요청) + const generateAiMissions = async (healthData, user) => { + try { + // 신규회원이 아닌 경우 API 호출하지 않고 빈 배열 반환 + if (!isNewUser) { + console.log('기존 회원 - AI 미션 추천 건너뛰기'); + return []; + } + + setLoadingMessage('AI가 건강 데이터를 분석하고 있습니다'); + await new Promise(resolve => setTimeout(resolve, 800)); + + const token = localStorage.getItem('authToken'); + const userId = localStorage.getItem('userId') || 'temp-user-id'; + + // POST 요청으로 userId만 body에 전송 + const response = await fetch(`${window.__runtime_config__?.INTELLIGENCE_URL}/missions/recommend`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + user_id: parseInt(userId) // API 문서에 맞춰 user_id로 전송, integer 타입 + }) + }); + + if (!response.ok) { + if (response.status === 422) { + console.log('AI 미션 데이터 없음 (422) - 가라데이터 사용'); + return getDefaultMissions(); + } else if (response.status === 404) { + console.log('AI 미션 API 없음 (404) - 가라데이터 사용'); + return getDefaultMissions(); + } else { + console.warn(`AI 미션 추천 API 에러: ${response.status} - 가라데이터 사용`); + return getDefaultMissions(); + } + } + + const result = await response.json(); + const missions = result.missions || result.data?.missions; + + if (!missions || !Array.isArray(missions) || missions.length === 0) { + console.log('AI 미션 데이터 없음 - 가라데이터 사용'); + return getDefaultMissions(); + } + + setLoadingMessage('개인 맞춤 미션이 완성되었습니다!'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + console.log('AI 미션 추천 데이터 로드 성공'); + return missions; + + } catch (error) { + console.warn('AI 미션 추천 API 연결 실패 - 가라데이터 사용:', error.message); + setLoadingMessage('기본 추천 미션을 준비하고 있습니다'); + return getDefaultMissions(); + } + }; + + // ✅ 수정된 목표 데이터 로딩 함수 - memberSerialNumber 파라미터 추가 + const loadActiveGoals = async () => { + try { + const token = localStorage.getItem('authToken'); + const memberSerialNumber = localStorage.getItem('memberSerialNumber') || localStorage.getItem('userId') || '1'; + + // ✅ memberSerialNumber 쿼리 파라미터 추가 + const params = new URLSearchParams({ + memberSerialNumber: memberSerialNumber + }); + + const response = await fetch(`${window.__runtime_config__?.GOAL_URL}/missions/active?${params}`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + return result.data || result; + + } catch (error) { + console.error('목표 데이터 로딩 API 오류:', error); + + // API 오류 시 기본 더미 데이터 반환(테스트용) + return { + water: { current: 3, target: 8, goalName: "물 마시기", description: "하루 8잔의 물 마시기" }, + walk: { current: 5000, target: 10000, goalName: "걷기", description: "하루 1만보 걷기" }, + stretch: { current: 2, target: 5, goalName: "스트레칭", description: "하루 5회 스트레칭" }, + meditation: { current: 0, target: 1, goalName: "명상", description: "하루 10분 명상" }, + sleep: { current: 0, target: 1, goalName: "충분한 수면", description: "하루 7시간 이상 수면" } + }; + } + }; + + return ( +
+
+
+ +

+ {isNewUser ? + 'AI가 회원님의 건강 데이터를 분석하여 맞춤형 미션을 생성하는 중...' : + '건강보험공단과 연동하여 검진 이력을 불러오는 중...' + } +

+ +
+

잠시만 기다려주세요!

+

+ {isNewUser ? ( + <> + AI가 회원님의 건강 상태를 분석하여
+ 맞춤형 건강 미션을 생성하고 있습니다. + + ) : ( + <> + 기존 설정된 건강 미션과
+ 최신 건강 데이터를 불러오고 있습니다. + + )} +

+
+ +
+
+ ); +} + +export default LoadingPage; \ No newline at end of file diff --git a/src/pages/LoginPage.js b/src/pages/LoginPage.js new file mode 100644 index 0000000..6be2984 --- /dev/null +++ b/src/pages/LoginPage.js @@ -0,0 +1,140 @@ +//* src/pages/LoginPage.js +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; + +function LoginPage({ setUser }) { + const navigate = useNavigate(); + + // 백엔드 /api/auth/login으로 리다이렉트 + const handleGoogleLogin = () => { + console.log('구글 로그인 요청 시작 - 백엔드로 리다이렉트'); + + // 백엔드의 /api/auth/login 엔드포인트로 리다이렉트 + window.location.href = `${window.__runtime_config__?.AUTH_URL || 'http://localhost:8081'}/oauth2/authorization/google`; + }; + + // 구글 OAuth 완료 후 백엔드에서 돌아온 결과 처리 + useEffect(() => { + const urlParams = new URLSearchParams(window.location.search); + + // 새로운 파라미터명으로 변경 + const success = urlParams.get('success'); + const accessToken = urlParams.get('accessToken'); + const refreshToken = urlParams.get('refreshToken'); + const isNewUser = urlParams.get('isNewUser'); + const userId = urlParams.get('userId'); + const error = urlParams.get('error'); + + console.log('OAuth 파라미터:', { + success, + accessToken: accessToken ? accessToken.substring(0, 20) + '...' : null, + refreshToken: refreshToken ? refreshToken.substring(0, 20) + '...' : null, + isNewUser, + userId, + error + }); + + if (error) { + console.error('OAuth 에러:', error); + alert('로그인 중 오류가 발생했습니다: ' + decodeURIComponent(error)); + // URL에서 에러 파라미터 제거 + window.history.replaceState({}, document.title, window.location.pathname); + return; + } + + // success가 'true'이고 accessToken이 있는 경우 로그인 성공 + if (success === 'true' && accessToken) { + console.log('OAuth 로그인 성공'); + + // JWT 토큰들을 로컬 스토리지에 저장 + localStorage.setItem('authToken', accessToken); + localStorage.setItem('refreshToken', refreshToken); + localStorage.setItem('isNewUser', isNewUser || 'false'); + localStorage.setItem('userId', userId); + + // 사용자 정보 설정 (일단 기본 정보만) + const userInfo = { + id: userId, + isNewUser: isNewUser === 'true' + }; + setUser(userInfo); + console.log('사용자 정보 설정 완료:', userInfo); + + // URL에서 파라미터들 제거 (보안상 좋음) + window.history.replaceState({}, document.title, window.location.pathname); + + // 신규 회원인지 기존 회원인지에 따라 라우팅 + if (isNewUser === 'true') { + console.log('신규 회원 - 회원가입 페이지로 이동'); + navigate('/register'); + } else { + console.log('기존 회원 - 로딩 페이지로 이동'); + navigate('/loading'); + } + } + }, [navigate, setUser]); + + return ( +
+
+
HealthSync
+
+
+
+
+ +
+

+ AI 건강 코치와 함께 +

+

+ 개인 맞춤형 건강관리를
시작해보세요 +

+
+ +
+ +
+ +

+ 간편하게 로그인하고 건강한 습관을 만들어보세요 +

+
+
+ ); +} + +export default LoginPage; \ No newline at end of file diff --git a/src/pages/LoginPage.js.backup b/src/pages/LoginPage.js.backup new file mode 100644 index 0000000..24dfcc9 --- /dev/null +++ b/src/pages/LoginPage.js.backup @@ -0,0 +1,177 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useGoogleLogin } from '@react-oauth/google'; + +function LoginPage({ setUser }) { + const navigate = useNavigate(); + + // useGoogleLogin 훅을 사용한 Authorization Code Flow + const googleLogin = useGoogleLogin({ + flow: 'auth-code', // Authorization Code Flow 사용 + onSuccess: async (codeResponse) => { + try { + console.log('구글 로그인 성공:', codeResponse); + + // Authorization Code 추출 + const code = codeResponse.code; + + if (!code) { + console.error('Authorization code를 받지 못했습니다.'); + console.log('받은 응답:', codeResponse); + alert('구글 로그인 중 오류가 발생했습니다. 다시 시도해주세요.'); + return; + } + + console.log('구글 Authorization Code:', code); + + // 백엔드 API에 code 값만 전송 + const loginResult = await loginWithGoogleCode(code); + + // isNewUser 정보를 localStorage에 저장 + localStorage.setItem('isNewUser', loginResult.isNewUser.toString()); + + // 사용자 정보 설정 + setUser(loginResult.user); + + if (loginResult.isNewUser) { + // 신규 회원이면 회원가입 페이지로 + console.log('신규 회원 가입'); + navigate('/register'); + } else { + // 기존 회원이면 바로 로딩 화면으로 + console.log('기존 회원 로그인'); + navigate('/loading'); + } + + } catch (error) { + console.error('구글 로그인 처리 중 오류:', error); + alert('로그인 중 오류가 발생했습니다. 다시 시도해주세요.'); + } + }, + onError: () => { + console.error('구글 로그인 실패'); + alert('구글 로그인에 실패했습니다. 다시 시도해주세요.'); + } + }); + + // 백엔드 API에 구글 Authorization Code만 전송 + const loginWithGoogleCode = async (code) => { + try { + const response = await fetch(`${window.__runtime_config__?.AUTH_URL}/api/auth/login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + code: code // 구글에서 받은 code 값만 전송 + }) + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + + // 백엔드에서 처리할 작업: + // 1. code를 구글 OAuth 서버에 보내서 Access Token 받기 + // 2. Access Token으로 구글에서 사용자 정보 조회 + // 3. 사용자 정보로 회원 가입/로그인 처리 + // 4. 우리 앱용 JWT 토큰 생성해서 응답 + + // API 응답 예시: + // { + // isNewUser: true/false, + // user: { + // id: "123", + // googleId: "구글ID", + // name: "홍길동", + // email: "hong@gmail.com", + // picture: "profile_image_url" + // }, + // token: "eyJhbGciOiJIUzI1NiIs...", // 우리 앱의 JWT 토큰 + // message: "로그인 성공" + // } + + // 우리 앱의 JWT 토큰을 로컬 스토리지에 저장 + if (result.token) { + localStorage.setItem('authToken', result.token); + console.log('JWT 토큰 저장 완료'); + } + + return { + isNewUser: result.isNewUser, + user: result.user, + token: result.token + }; + + } catch (error) { + console.error('로그인 API 오류:', error); + throw error; + } + }; + + return ( +
+
+
HealthSync
+
+
+
+
+ +
+

+ AI 건강 코치와 함께 +

+

+ 개인 맞춤형 건강관리를
시작해보세요 +

+
+ +
+ +
+ +

+ 간편하게 로그인하고 건강한 습관을 만들어보세요 +

+
+
+ ); +} + +export default LoginPage; \ No newline at end of file diff --git a/src/pages/MissionPage.js b/src/pages/MissionPage.js new file mode 100644 index 0000000..001bb60 --- /dev/null +++ b/src/pages/MissionPage.js @@ -0,0 +1,329 @@ +//* src/pages/MissionPage.js +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Header from '../components/Header'; +import MissionCard from '../components/MissionCard'; + +function MissionPage({ selectedMissions, setSelectedMissions, setGoalData, aiMissions, healthData, healthDiagnosis }) { + const navigate = useNavigate(); + const [isSubmitting, setIsSubmitting] = useState(false); + + // 🔧 AI 추천 미션을 MissionCard 형식으로 변환 (UI 표시용만) + const convertAiMissionsToCards = (aiMissions) => { + if (!aiMissions || !Array.isArray(aiMissions) || aiMissions.length === 0) { + console.log('AI 미션이 없어서 기본 미션 사용'); + return getDefaultMissions(); + } + + console.log('=== AI 미션 변환 (UI용만) ==='); + console.log('원본 AI 미션들:', aiMissions); + + return aiMissions.map((mission, index) => { + // missionId 생성 (없으면 인덱스 기반으로) + const missionId = mission.missionId || `ai_mission_${index + 1}`; + + // 카테고리에 따른 이모지 매핑 + const getCategoryEmoji = (category) => { + switch (category?.toLowerCase()) { + case 'nutrition': return '💧'; + case 'exercise': return '🚶‍♂️'; + case 'sleep': return '😴'; + case 'mental_health': return '🧘‍♀️'; + default: return '🎯'; + } + }; + + const convertedMission = { + id: missionId, + title: `${getCategoryEmoji(mission.category)} ${mission.title}`, + description: mission.reason || '건강한 생활습관을 위한 미션입니다.', + dailyTarget: mission.dailyTargetCount || mission.estimatedTimeMinutes || 1, + reason: mission.healthBenefit || mission.occupationRelevance || '건강 개선을 위한 추천 미션', + category: mission.category, + difficulty: mission.difficulty, + estimatedTimeMinutes: mission.estimatedTimeMinutes, + originalData: mission // ✅ 원본 AI 미션 데이터 보존 + }; + + console.log(`변환된 미션 ${index + 1}:`, convertedMission); + return convertedMission; + }); + }; + + // 기본 미션 (AI 추천이 없을 때 사용) + const getDefaultMissions = () => { + return [ + { + id: 'water', + title: '💧 하루 8잔 물마시기', + description: '충분한 수분 섭취로 신진대사를 활발하게 하고 피부 건강을 개선합니다.', + dailyTarget: 8, + reason: '장시간 앉아 있는 직업군에게 필수적인 수분 공급으로 신진대사 개선', + originalData: { + title: '하루 8잔 물마시기', + dailyTargetCount: 8, + healthBenefit: '장시간 앉아 있는 직업군에게 필수적인 수분 공급으로 신진대사 개선', + category: 'nutrition', + difficulty: 'easy' + } + }, + { + id: 'walk', + title: '🚶‍♂️ 점심시간 10분 산책', + description: '장시간 앉아있는 직업 특성을 고려한 혈액순환 개선 운동입니다.', + dailyTarget: 1, + reason: '혈압과 혈당 관리, 체중 감량을 위한 유산소 운동', + originalData: { + title: '점심시간 10분 산책', + dailyTargetCount: 1, + healthBenefit: '혈압과 혈당 관리, 체중 감량을 위한 유산소 운동', + category: 'exercise', + difficulty: 'easy' + } + }, + { + id: 'stretch', + title: '🧘‍♀️ 5분 목&어깨 스트레칭', + description: '컴퓨터 작업으로 인한 목과 어깨 긴장을 완화하는 스트레칭입니다.', + dailyTarget: 3, + reason: '장시간 모니터 사용으로 인한 목 긴장 완화 및 거북목 예방', + originalData: { + title: '5분 목&어깨 스트레칭', + dailyTargetCount: 3, + healthBenefit: '장시간 모니터 사용으로 인한 목 긴장 완화 및 거북목 예방', + category: 'exercise', + difficulty: 'easy' + } + }, + { + id: 'snack', + title: '🥗 하루 1회 건강간식', + description: '과일이나 견과류로 건강한 간식 습관을 만들어보세요.', + dailyTarget: 1, + reason: '혈당 조절과 영양 균형을 위한 건강한 간식 섭취', + originalData: { + title: '하루 1회 건강간식', + dailyTargetCount: 1, + healthBenefit: '혈당 조절과 영양 균형을 위한 건강한 간식 섭취', + category: 'nutrition', + difficulty: 'easy' + } + }, + { + id: 'sleep', + title: '😴 규칙적인 수면시간', + description: '매일 같은 시간에 잠자리에 들어 생체리듬을 조절합니다.', + dailyTarget: 1, + reason: '스트레스 관리와 면역력 강화를 위한 규칙적인 수면 패턴', + originalData: { + title: '규칙적인 수면시간', + dailyTargetCount: 1, + healthBenefit: '스트레스 관리와 면역력 강화를 위한 규칙적인 수면 패턴', + category: 'sleep', + difficulty: 'normal' + } + } + ]; + }; + + // 🔧 실제 사용할 미션들 결정 + const missions = convertAiMissionsToCards(aiMissions); + + console.log('=== MissionPage 미션 데이터 ==='); + console.log('받은 aiMissions:', aiMissions); + console.log('최종 사용할 missions:', missions); + console.log('AI 미션 사용 여부:', aiMissions && aiMissions.length > 0); + + const handleMissionToggle = (missionId) => { + setSelectedMissions(prev => { + if (prev.includes(missionId)) { + return prev.filter(id => id !== missionId); + } else { + return [...prev, missionId]; + } + }); + }; + + const handleStart = async () => { + if (selectedMissions.length === 0) { + alert('최소 1개의 미션을 선택해주세요.'); + return; + } + + setIsSubmitting(true); + + try { + // ✅ 선택된 미션들의 원본 데이터를 그대로 사용 + const selectedMissionData = selectedMissions.map(missionId => { + const mission = missions.find(m => m.id === missionId); + // ✅ originalData가 있으면 그대로 사용, 없으면 기본 형식으로 변환 + if (mission.originalData) { + return mission.originalData; + } else { + // 기본 미션의 경우 기본 형식으로 변환 + return { + title: mission.title.replace(/^.+\s/, ''), // 이모지 제거 + dailyTargetCount: mission.dailyTarget, + healthBenefit: mission.reason, + category: mission.category, + difficulty: mission.difficulty + }; + } + }); + + console.log('✅ 원본 AI 미션 데이터 그대로 전송:', selectedMissionData); + + // 미션 선택 API 호출 + await submitSelectedMissions(selectedMissionData); + + // 선택된 미션을 기반으로 초기 목표 데이터 설정 + const initialGoalData = {}; + selectedMissions.forEach(missionId => { + const mission = missions.find(m => m.id === missionId); + initialGoalData[missionId] = { + current: 0, + target: mission.dailyTarget, + goalName: mission.title.replace(/^.+\s/, ''), // 이모지 제거 + description: mission.description + }; + }); + + console.log('생성된 목표 데이터:', initialGoalData); + + // App.js의 goalData 상태 업데이트 + setGoalData(initialGoalData); + + // 신규 사용자 플래그 제거 (이제 기존 사용자가 됨) + localStorage.setItem('isNewUser', 'false'); + + // 대시보드로 이동 + navigate('/dashboard'); + + } catch (error) { + console.error('미션 설정 오류:', error); + alert('미션 설정 중 오류가 발생했습니다. 다시 시도해주세요.'); + } finally { + setIsSubmitting(false); + } + }; + + const submitSelectedMissions = async (selectedMissionData) => { + try { + const token = localStorage.getItem('authToken'); + const memberSerialNumber = localStorage.getItem('memberSerialNumber') || + localStorage.getItem('userId') || '1'; + + // ✅ AI 추천 미션 원본 데이터를 그대로 전송 + const requestData = { + memberSerialNumber: parseInt(memberSerialNumber), + selectedMissionIds: selectedMissionData // ✅ 원본 데이터 그대로 사용 + }; + + console.log('=== 미션 선택 API 요청 (원본 데이터) ==='); + console.log('📋 요청 데이터:', JSON.stringify(requestData, null, 2)); + console.log('📊 선택된 미션 개수:', requestData.selectedMissionIds.length); + + const response = await fetch(`${window.__runtime_config__?.GOAL_URL}/missions/select`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(requestData) + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error('❌ 미션 선택 API 오류:', response.status, errorText); + throw new Error(`미션 선택 API 오류: ${response.status}`); + } + + const result = await response.json(); + console.log('✅ 미션 선택 API 성공:', result); + + return result; + + } catch (error) { + console.error('💥 미션 선택 API 호출 실패:', error); + throw error; + } + }; + + return ( +
+
+
+ {/* 🔥 건강진단 요약 표시 */} + {healthDiagnosis && healthDiagnosis.length > 0 && ( +
+
+ 🤖 +

AI 건강 분석 결과

+
+
+ {healthDiagnosis.map((line, index) => ( +

{line}

+ ))} +
+
+ )} + +

+ {aiMissions && aiMissions.length > 0 ? ( + <> + 회원님의 건강검진 결과와 직업 특성을 분석하여
+ AI가 맞춤 추천한 건강 미션입니다. + + ) : ( + <> + 회원님의 건강을 위한
+ 추천 건강 미션을 선택해주세요. + + )} +

+ + {missions.map(mission => ( + handleMissionToggle(mission.id)} + /> + ))} + +

+ ✓ 최소 1개의 미션을 선택해주세요 (다중 선택 가능) + {aiMissions && aiMissions.length > 0 && ( + <> +
+ + ✨ 위 미션들은 AI가 회원님의 건강 상태를 분석하여 개인 맞춤 추천한 미션입니다 + + + )} +

+ + +
+
+ ); +} + +export default MissionPage; \ No newline at end of file diff --git a/src/pages/OAuthCallbackPage.js b/src/pages/OAuthCallbackPage.js new file mode 100644 index 0000000..898de8f --- /dev/null +++ b/src/pages/OAuthCallbackPage.js @@ -0,0 +1,113 @@ +//* src/pages/OAuthCallbackPage.js +import { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; + +function OAuthCallbackPage({ setUser }) { + const navigate = useNavigate(); + + useEffect(() => { + // 페이지 로드 즉시 화면 숨김 + document.body.style.display = 'none'; + document.documentElement.style.display = 'none'; + + console.log('OAuth 콜백 페이지 로드됨'); + + // JSON 응답 처리 + const handleOAuthResponse = () => { + try { + const bodyText = document.body.textContent || document.body.innerText || ''; + console.log('페이지 내용:', bodyText.substring(0, 200)); + + // JSON 응답인지 확인 + if (bodyText.includes('"accessToken"') || bodyText.includes('"success"') || + (bodyText.trim().startsWith('{') && bodyText.includes('memberSerialNumber'))) { + console.log('JSON 응답 감지!'); + + try { + // JSON 파싱 + const response = JSON.parse(bodyText.trim()); + console.log('파싱된 응답:', response); + + const data = response.data || response; + console.log('데이터:', data); + + if (data.accessToken) { + console.log('로그인 성공! 토큰 처리 시작'); + + // 토큰 localStorage에 저장 + localStorage.setItem('authToken', data.accessToken); + + if (data.refreshToken) { + localStorage.setItem('refreshToken', data.refreshToken); + } + + // 사용자 정보 설정 및 저장 + if (data.user) { + localStorage.setItem('userInfo', JSON.stringify(data.user)); + setUser(data.user); + + // userId 별도 저장 (API 호출용) + if (data.user.memberSerialNumber) { + localStorage.setItem('userId', data.user.memberSerialNumber.toString()); + } + } + + // newUser 값으로 분기 처리 + const isNewUser = data.newUser; + console.log('신규 사용자 여부:', isNewUser); + + if (isNewUser === true) { + console.log('신규 회원 → 회원가입 페이지로 이동'); + navigate('/register'); + } else { + console.log('기존 회원 → 로딩 페이지로 이동'); + navigate('/loading'); + } + } else { + console.error('accessToken이 없습니다:', data); + alert('로그인 처리 중 오류가 발생했습니다.'); + navigate('/'); + } + } catch (parseError) { + console.error('JSON 파싱 오류:', parseError); + alert('로그인 응답 처리 중 오류가 발생했습니다.'); + navigate('/'); + } + } else { + console.log('JSON 응답이 아직 로드되지 않음'); + } + } catch (error) { + console.error('OAuth 처리 중 오류:', error); + alert('로그인 처리 중 오류가 발생했습니다.'); + navigate('/'); + } + }; + + // 즉시 실행 및 재시도 + handleOAuthResponse(); + + const intervals = [10, 50, 100, 200, 500, 1000]; + const timeouts = intervals.map(delay => + setTimeout(handleOAuthResponse, delay) + ); + + // MutationObserver로 DOM 변경 감지 + const observer = new MutationObserver(handleOAuthResponse); + observer.observe(document.body, { + childList: true, + subtree: true, + characterData: true + }); + + // cleanup + return () => { + timeouts.forEach(clearTimeout); + observer.disconnect(); + }; + }, [navigate, setUser]); + + // 화면에는 아무것도 렌더링하지 않음 (이미 숨김 처리됨) + return null; +} + +export default OAuthCallbackPage; \ No newline at end of file diff --git a/src/pages/RegisterPage.js b/src/pages/RegisterPage.js new file mode 100644 index 0000000..9c6273e --- /dev/null +++ b/src/pages/RegisterPage.js @@ -0,0 +1,162 @@ +//* src/pages/RegisterPage.js +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Header from '../components/Header'; + +function RegisterPage({ setUser }) { + const navigate = useNavigate(); + const [formData, setFormData] = useState({ + name: '', + birthDate: '', + occupation: '' + }); + const [isLoading, setIsLoading] = useState(false); + + const handleInputChange = (e) => { + setFormData({ + ...formData, + [e.target.name]: e.target.value + }); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + setIsLoading(true); + + try { + // 회원가입 API 호출 + await registerUser(formData); + + // 회원정보 저장 + setUser(prev => ({ ...prev, ...formData })); + + console.log('회원가입 성공'); + navigate('/loading'); + + } catch (error) { + console.error('회원가입 오류:', error); + alert('회원가입 중 오류가 발생했습니다. 다시 시도해주세요.'); + } finally { + setIsLoading(false); + } + }; + + const registerUser = async (userData) => { + try { + // 저장된 JWT 토큰 가져오기 + const token = localStorage.getItem('authToken'); + + // 토큰 확인 로그 + console.log('저장된 토큰:', token ? token.substring(0, 50) + '...' : 'null'); + + console.log('회원가입 API 호출:', { + url: `${window.__runtime_config__?.USER_URL || 'http://localhost:8081'}/register`, + userData, + hasToken: !!token + }); + + const response = await fetch(`${window.__runtime_config__?.USER_URL || 'http://localhost:8081'}/register`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}` + }, + body: JSON.stringify({ + name: userData.name, + birthDate: userData.birthDate, + occupation: userData.occupation + }) + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error('회원가입 API 에러:', response.status, errorText); + throw new Error(`HTTP error! status: ${response.status} - ${errorText}`); + } + + const result = await response.json(); + console.log('회원가입 API 성공:', result); + return result; + + } catch (error) { + console.error('회원가입 API 오류:', error); + throw error; + } + }; + + const handleCancel = () => { + navigate('/'); + }; + + return ( +
+
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ + + + +
+
+
+ ); +} + +export default RegisterPage; \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +})