diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index a22ded5..1cefa1a 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -19,9 +19,7 @@
"version": "2.39.1"
},
"ghcr.io/devcontainers-contrib/features/typescript:2": {},
- "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": {
- "version": "1.1.8"
- },
+ "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": {},
"docker-in-docker": {
"version": "latest",
"moby": true,
diff --git a/.github/workflows/azure-dev.yaml b/.github/workflows/azure-dev.yaml
index fdbb0fc..d3bc196 100644
--- a/.github/workflows/azure-dev.yaml
+++ b/.github/workflows/azure-dev.yaml
@@ -1,162 +1,162 @@
-name: Container Apps CI/CD pipeline
-
-on:
- push:
- branches:
- - main
- paths:
- - "app/**"
- tags:
- - v*.*.*
- workflow_dispatch:
-
-jobs:
- changes-detection:
- runs-on: ubuntu-latest
- outputs:
- env-name: ${{steps.set-deploy-env.outputs.DEPLOY_ENVIRONMENT}}
- build-copilot: ${{ steps.changes.outputs.copilot }}
- build-frontend: ${{ steps.changes.outputs.frontend }}
- build-account-api: ${{ steps.changes.outputs.account-api }}
- build-payment-api: ${{ steps.changes.outputs.payment-api }}
- build-transaction-api: ${{ steps.changes.outputs.transaction-api }}
- steps:
- - uses: actions/checkout@v2
- - name: Filter Changes
- uses: dorny/paths-filter@v2
- id: changes
- with:
- filters: |
- copilot:
- - 'app/copilot/**'
- frontend:
- - 'app/frontend/**'
- account-api:
- - 'app/business-api/account/**'
- payment-api:
- - 'app/business-api/payment/**'
- transaction-api:
- - 'app/business-api/transactions-history/**'
-
- - name: Set environment for branch
- id: set-deploy-env
- run: |
- echo "checking branch name [${{github.ref_name}}]"
- if [[ ${{github.ref_name}} == 'main' ]]; then
- echo "main branch detected. Set Development environment"
- echo "DEPLOY_ENVIRONMENT=Development" >> "$GITHUB_OUTPUT"
- elif [[ ${{github.ref_name}} == *'release'* ]]; then
- echo "release branch detected. Set Test environment"
- echo "DEPLOY_ENVIRONMENT=Test" >> "$GITHUB_OUTPUT"
- elif [[ ${{github.ref_name}} == *'v'* ]]; then
- echo "tag detected. Set Production environment"
- echo "DEPLOY_ENVIRONMENT=Production" >> "$GITHUB_OUTPUT"
- else
- echo "branch not detected. Set Development environment as default"
- echo "DEPLOY_ENVIRONMENT=Development" >> "$GITHUB_OUTPUT"
- fi
-
- build-account-app:
- needs: changes-detection
- if : ${{ needs.changes-detection.outputs.build-account-api == 'true' }}
- uses: ./.github/workflows/acr-build-push.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/account-api
- app-folder-path: ./app/business-api/account
- secrets: inherit
-
- deploy-account-app:
- needs: [changes-detection,build-account-app]
- if: ${{ needs.changes-detection.outputs.build-account-api == 'true' }}
- uses: ./.github/workflows/aca-deploy.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/account-api
- container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
- container-app-name: ${{ vars.ACCOUNTS_ACA_DEV_APP_NAME }}
- secrets: inherit
-
- build-transaction-app:
- needs: changes-detection
- if : ${{ needs.changes-detection.outputs.build-transaction-api == 'true' }}
- uses: ./.github/workflows/acr-build-push.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/transactions-history-api
- app-folder-path: ./app/business-api/transactions-history
- secrets: inherit
-
- deploy-transaction-app:
- needs: [changes-detection,build-transaction-app]
- if: ${{ needs.changes-detection.outputs.build-transaction-api == 'true' }}
- uses: ./.github/workflows/aca-deploy.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/transactions-history-api
- container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
- container-app-name: ${{ vars.TRANSACTIONS_ACA_DEV_APP_NAME }}
- secrets: inherit
- build-payment-app:
- needs: changes-detection
- if : ${{ needs.changes-detection.outputs.build-payment-api == 'true' }}
- uses: ./.github/workflows/acr-build-push.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/payment-api
- app-folder-path: ./app/business-api/payment
- secrets: inherit
-
- deploy-payment-app:
- needs: [changes-detection,build-payment-app]
- if: ${{ needs.changes-detection.outputs.build-payment-api == 'true' }}
- uses: ./.github/workflows/aca-deploy.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/payment-api
- container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
- container-app-name: ${{ vars.PAYMENTS_ACA_DEV_APP_NAME }}
- secrets: inherit
-
- build-frontend-app:
- needs: changes-detection
- if : ${{ needs.changes-detection.outputs.build-frontend == 'true' }}
- uses: ./.github/workflows/acr-build-push.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/web
- app-folder-path: ./app/frontend
- secrets: inherit
-
- deploy-frontend-app:
- needs: [changes-detection,build-frontend-app]
- if: ${{ needs.changes-detection.outputs.build-frontend == 'true' }}
- uses: ./.github/workflows/aca-deploy.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/web
- container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
- container-app-name: ${{ vars.WEB_ACA_DEV_APP_NAME }}
- secrets: inherit
-
- build-copilot-app:
- needs: changes-detection
- if : ${{ needs.changes-detection.outputs.build-copilot == 'true' }}
- uses: ./.github/workflows/acr-build-push.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/copilot
- app-folder-path: ./app/copilot
- secrets: inherit
-
- deploy-copilot-app:
- needs: [changes-detection,build-copilot-app]
- if: ${{ needs.changes-detection.outputs.build-copilot == 'true' }}
- uses: ./.github/workflows/aca-deploy.yaml
- with:
- env-name: ${{ needs.changes-detection.outputs.env-name}}
- image-name: personal-finance-assistance-java/copilot
- container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
- container-app-name: ${{ vars.COPILOT_ACA_DEV_APP_NAME }}
- secrets: inherit
+name: Container Apps CI/CD pipeline
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - "app/**"
+ tags:
+ - v*.*.*
+ workflow_dispatch:
+
+jobs:
+ changes-detection:
+ runs-on: ubuntu-latest
+ outputs:
+ env-name: ${{steps.set-deploy-env.outputs.DEPLOY_ENVIRONMENT}}
+ build-copilot: ${{ steps.changes.outputs.copilot }}
+ build-frontend: ${{ steps.changes.outputs.frontend }}
+ build-account-api: ${{ steps.changes.outputs.account-api }}
+ build-payment-api: ${{ steps.changes.outputs.payment-api }}
+ build-transaction-api: ${{ steps.changes.outputs.transaction-api }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: Filter Changes
+ uses: dorny/paths-filter@v2
+ id: changes
+ with:
+ filters: |
+ copilot:
+ - 'app/copilot/**'
+ frontend:
+ - 'app/frontend/**'
+ account-api:
+ - 'app/business-api/account/**'
+ payment-api:
+ - 'app/business-api/payment/**'
+ transaction-api:
+ - 'app/business-api/transactions-history/**'
+
+ - name: Set environment for branch
+ id: set-deploy-env
+ run: |
+ echo "checking branch name [${{github.ref_name}}]"
+ if [[ ${{github.ref_name}} == 'main' ]]; then
+ echo "main branch detected. Set Development environment"
+ echo "DEPLOY_ENVIRONMENT=Development" >> "$GITHUB_OUTPUT"
+ elif [[ ${{github.ref_name}} == *'release'* ]]; then
+ echo "release branch detected. Set Test environment"
+ echo "DEPLOY_ENVIRONMENT=Test" >> "$GITHUB_OUTPUT"
+ elif [[ ${{github.ref_name}} == *'v'* ]]; then
+ echo "tag detected. Set Production environment"
+ echo "DEPLOY_ENVIRONMENT=Production" >> "$GITHUB_OUTPUT"
+ else
+ echo "branch not detected. Set Development environment as default"
+ echo "DEPLOY_ENVIRONMENT=Development" >> "$GITHUB_OUTPUT"
+ fi
+
+ build-account-app:
+ needs: changes-detection
+ if : ${{ needs.changes-detection.outputs.build-account-api == 'true' }}
+ uses: ./.github/workflows/acr-build-push.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/account-api
+ app-folder-path: ./app/business-api/account
+ secrets: inherit
+
+ deploy-account-app:
+ needs: [changes-detection,build-account-app]
+ if: ${{ needs.changes-detection.outputs.build-account-api == 'true' }}
+ uses: ./.github/workflows/aca-deploy.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/account-api
+ container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
+ container-app-name: ${{ vars.ACCOUNTS_ACA_DEV_APP_NAME }}
+ secrets: inherit
+
+ build-transaction-app:
+ needs: changes-detection
+ if : ${{ needs.changes-detection.outputs.build-transaction-api == 'true' }}
+ uses: ./.github/workflows/acr-build-push.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/transactions-history-api
+ app-folder-path: ./app/business-api/transactions-history
+ secrets: inherit
+
+ deploy-transaction-app:
+ needs: [changes-detection,build-transaction-app]
+ if: ${{ needs.changes-detection.outputs.build-transaction-api == 'true' }}
+ uses: ./.github/workflows/aca-deploy.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/transactions-history-api
+ container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
+ container-app-name: ${{ vars.TRANSACTIONS_ACA_DEV_APP_NAME }}
+ secrets: inherit
+ build-payment-app:
+ needs: changes-detection
+ if : ${{ needs.changes-detection.outputs.build-payment-api == 'true' }}
+ uses: ./.github/workflows/acr-build-push.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/payment-api
+ app-folder-path: ./app/business-api/payment
+ secrets: inherit
+
+ deploy-payment-app:
+ needs: [changes-detection,build-payment-app]
+ if: ${{ needs.changes-detection.outputs.build-payment-api == 'true' }}
+ uses: ./.github/workflows/aca-deploy.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/payment-api
+ container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
+ container-app-name: ${{ vars.PAYMENTS_ACA_DEV_APP_NAME }}
+ secrets: inherit
+
+ build-frontend-app:
+ needs: changes-detection
+ if : ${{ needs.changes-detection.outputs.build-frontend == 'true' }}
+ uses: ./.github/workflows/acr-build-push.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/web
+ app-folder-path: ./app/frontend
+ secrets: inherit
+
+ deploy-frontend-app:
+ needs: [changes-detection,build-frontend-app]
+ if: ${{ needs.changes-detection.outputs.build-frontend == 'true' }}
+ uses: ./.github/workflows/aca-deploy.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/web
+ container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
+ container-app-name: ${{ vars.WEB_ACA_DEV_APP_NAME }}
+ secrets: inherit
+
+ build-copilot-app:
+ needs: changes-detection
+ if : ${{ needs.changes-detection.outputs.build-copilot == 'true' }}
+ uses: ./.github/workflows/acr-build-push.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/copilot
+ app-folder-path: ./app/copilot
+ secrets: inherit
+
+ deploy-copilot-app:
+ needs: [changes-detection,build-copilot-app]
+ if: ${{ needs.changes-detection.outputs.build-copilot == 'true' }}
+ uses: ./.github/workflows/aca-deploy.yaml
+ with:
+ env-name: ${{ needs.changes-detection.outputs.env-name}}
+ image-name: personal-finance-assistance-java/copilot
+ container-app-env-name: ${{ vars.ACA_DEV_ENV_NAME}}
+ container-app-name: ${{ vars.COPILOT_ACA_DEV_APP_NAME }}
+ secrets: inherit
\ No newline at end of file
diff --git a/app/compose.yaml b/app/compose.yaml
new file mode 100644
index 0000000..b852207
--- /dev/null
+++ b/app/compose.yaml
@@ -0,0 +1,40 @@
+services:
+ frontend:
+ image: personal-finance-assistant-java/frontend
+ build: ../../app/frontend
+ environment:
+ REACT_APP_API_BASE_URL: "http://copilot:8080"
+ ports:
+ - "80:80"
+ copilot:
+ image: personal-finance-assistant-java/copilot-backend
+ build: ../../app/copilot
+ environment:
+ - AZURE_STORAGE_ACCOUNT=${AZURE_STORAGE_ACCOUNT}
+ - AZURE_STORAGE_CONTAINER=${AZURE_STORAGE_CONTAINER}
+ - AZURE_OPENAI_CHATGPT_MODEL=${AZURE_OPENAI_CHATGPT_MODEL}
+ - AZURE_OPENAI_SERVICE=${AZURE_OPENAI_SERVICE}
+ - AZURE_OPENAI_CHATGPT_DEPLOYMENT=${AZURE_OPENAI_CHATGPT_DEPLOYMENT}
+ - spring_profiles_active=docker
+ - ACCOUNTS_API_SERVER_URL=http://account:8080
+ - PAYMENTS_API_SERVER_URL=http://payment:8080
+ - TRANSACTIONS_API_SERVER_URL=http://transaction:8080
+ - AZURE_CLIENT_ID=${servicePrincipal}
+ - AZURE_CLIENT_SECRET=${servicePrincipalPassword}
+ - AZURE_TENANT_ID=${servicePrincipalTenant}
+ account:
+ image: personal-finance-assistant-java/business-account
+ build:
+ context: ../../app/business-api/account
+ payment:
+ image: personal-finance-assistant-java/business-payment
+ build:
+ context: ../../app/business-api/payment
+ environment:
+ - TRANSACTIONS_API_SERVER_URL=http://transaction:8080
+ transaction:
+ image: personal-finance-assistant-java/business-transaction-history
+ build:
+ context: ../../app/business-api/transactions-history
+
+
diff --git a/app/copilot/copilot-backend/pom.xml b/app/copilot/copilot-backend/pom.xml
index 4e95a2c..90131d8 100644
--- a/app/copilot/copilot-backend/pom.xml
+++ b/app/copilot/copilot-backend/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.7.13
+ 3.3.2
com.microsoft.openai.samples.assistant
@@ -17,9 +17,8 @@
17
- 4.9.0
- 11.6.0-beta.8
- 1.1.5
+ 5.14.0
+ 1.2.2
4.5.1
3.11.0
@@ -92,12 +91,6 @@
com.azure
azure-identity
- 1.11.2
-
-
- com.azure
- azure-core
- 1.45.1
@@ -111,19 +104,6 @@
20240303
-
-
- com.azure
- azure-search-documents
- ${azure-search.version}
-
-
- com.azure
- azure-core-serializer-json-jackson
-
-
-
-
com.azure
azure-storage-blob
diff --git a/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/AgentRouter.java b/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/AgentRouter.java
index daba39e..86c64cd 100644
--- a/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/AgentRouter.java
+++ b/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/AgentRouter.java
@@ -61,7 +61,7 @@ private void routeToAgent(IntentResponse intentResponse, ChatHistory chatHistory
chatHistory.addAssistantMessage(agentContext.getResult());
break;
case None:
- chatHistory.addAssistantMessage(agentContext.getResult());
+ chatHistory.addAssistantMessage(intentResponse.getMessage()!= null ? intentResponse.getMessage() : "Sorry. Can't help with that.");
break;
default:
break;
diff --git a/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/IntentAgent.java b/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/IntentAgent.java
index 0997c9f..4a7e8e3 100644
--- a/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/IntentAgent.java
+++ b/app/copilot/copilot-backend/src/main/java/com/microsoft/openai/samples/assistant/agent/IntentAgent.java
@@ -3,6 +3,7 @@
import com.azure.ai.openai.OpenAIAsyncClient;
import com.azure.ai.openai.OpenAIClientBuilder;
+import com.azure.ai.openai.models.ChatRequestUserMessage;
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
@@ -11,9 +12,13 @@
import com.microsoft.semantickernel.orchestration.*;
import com.microsoft.semantickernel.services.chatcompletion.ChatCompletionService;
import com.microsoft.semantickernel.services.chatcompletion.ChatHistory;
+import com.microsoft.semantickernel.services.chatcompletion.ChatMessageContent;
import org.json.JSONException;
import org.json.JSONObject;
+import java.util.ArrayList;
+import java.util.List;
+
public class IntentAgent {
private OpenAIAsyncClient client;
@@ -37,7 +42,7 @@ public class IntentAgent {
}
If you don't understand or if an intent is not identified be polite with the user, ask clarifying question also using the list of the available intents.
-Don't add any comments in the output or other characters, just the use a json format.
+Don't add any comments in the output or other characters, just use json format.
""";
@@ -71,6 +76,7 @@ public IntentAgent(String azureClientKey, String clientEndpoint, String modelId)
public IntentResponse run(ChatHistory userChatHistory,AgentContext agentContext){
var agentChatHistory = new ChatHistory(INTENT_SYSTEM_MESSAGE);
+ agentChatHistory.addAll(fewShotExamples());
agentChatHistory.addAll(userChatHistory);
var messages = chat.getChatMessageContentsAsync(
@@ -110,6 +116,14 @@ public IntentResponse run(ChatHistory userChatHistory,AgentContext agentContext)
return new IntentResponse(intentType, clarifySentence != null ? clarifySentence.toString() : "");
}
+ ChatHistory fewShotExamples(){
+ return new ChatHistory()
+ .addUserMessage("can you buy stocks for me?")
+ .addAssistantMessage("{\"intent\": \"None\", \"clarify_sentence\":\"I'm sorry can't help with that.I can review your account details, transactions and help you with your payments\"")
+ .addUserMessage("can you pay this bill for me?")
+ .addAssistantMessage("{\"intent\": \"BillPayment\" }");
+ }
+
}
diff --git a/app/frontend/package-lock.json b/app/frontend/package-lock.json
index f7a19b7..4675a99 100644
--- a/app/frontend/package-lock.json
+++ b/app/frontend/package-lock.json
@@ -15,6 +15,7 @@
"@fluentui/react-icons": "^2.0.221",
"@react-spring/web": "^9.7.3",
"dompurify": "^3.0.6",
+ "frontend": "file:",
"ndjson-readablestream": "^1.0.7",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -2742,6 +2743,10 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
+ "node_modules/frontend": {
+ "resolved": "",
+ "link": true
+ },
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -5230,6 +5235,2307 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
+ "frontend": {
+ "version": "file:",
+ "requires": {
+ "@azure/msal-browser": "^3.1.0",
+ "@azure/msal-react": "^2.0.4",
+ "@fluentui/react": "^8.112.5",
+ "@fluentui/react-components": "^9.37.3",
+ "@fluentui/react-icons": "^2.0.221",
+ "@react-spring/web": "^9.7.3",
+ "@types/dompurify": "^3.0.3",
+ "@types/react": "^18.2.34",
+ "@types/react-dom": "^18.2.14",
+ "@vitejs/plugin-react": "^4.1.1",
+ "dompurify": "^3.0.6",
+ "frontend": "file:",
+ "ndjson-readablestream": "^1.0.7",
+ "prettier": "^3.0.3",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.18.0",
+ "scheduler": "^0.20.2",
+ "typescript": "^5.2.2",
+ "vite": "^4.5.3"
+ },
+ "dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@azure/msal-browser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.2.0.tgz",
+ "integrity": "sha512-le2qutddMiq0i3ErQaLKuwP1DpNgdd9iXPs3fSCsLuBrdGg9B4/j4ArCAHCwgxA82Ydj9BcqtMIL5BSWwU+P5A==",
+ "requires": {
+ "@azure/msal-common": "14.1.0"
+ }
+ },
+ "@azure/msal-common": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.1.0.tgz",
+ "integrity": "sha512-xphmhcfl5VL+uq5//VKMwQn+wfEZLMKNpFCcMi8Ur8ej5UT166g6chBsxgMzc9xo9Y24R9FB3m/tjDiV03xMIA=="
+ },
+ "@azure/msal-react": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-2.0.4.tgz",
+ "integrity": "sha512-BujRm5FBDWYXyr3pnmubS4dIqZMlurYVtV2AyztoeAFUd+nh3XQZD9knHBqTyu53IDjhCCvUPUke/jSkv5WGlg==",
+ "requires": {
+ "@rollup/plugin-typescript": "^11.1.0",
+ "rollup": "^3.20.2"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
+ "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.7",
+ "@babel/parser": "^7.23.6",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true
+ },
+ "@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "dev": true
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "dev": true
+ },
+ "@babel/helpers": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
+ "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+ "dev": true
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz",
+ "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz",
+ "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz",
+ "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==",
+ "requires": {
+ "regenerator-runtime": "^0.14.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
+ "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.6",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
+ "@esbuild/android-arm": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz",
+ "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz",
+ "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz",
+ "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz",
+ "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz",
+ "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz",
+ "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz",
+ "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz",
+ "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz",
+ "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz",
+ "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz",
+ "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz",
+ "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz",
+ "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz",
+ "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz",
+ "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz",
+ "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz",
+ "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz",
+ "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz",
+ "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz",
+ "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz",
+ "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz",
+ "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==",
+ "dev": true,
+ "optional": true
+ },
+ "@floating-ui/core": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
+ "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
+ "requires": {
+ "@floating-ui/utils": "^0.2.0"
+ }
+ },
+ "@floating-ui/devtools": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz",
+ "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==",
+ "requires": {}
+ },
+ "@floating-ui/dom": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
+ "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
+ "requires": {
+ "@floating-ui/core": "^1.5.3",
+ "@floating-ui/utils": "^0.2.0"
+ }
+ },
+ "@floating-ui/utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
+ },
+ "@fluentui/date-time-utilities": {
+ "version": "8.5.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.5.16.tgz",
+ "integrity": "sha512-l+mLfJ2VhdHjBpELLLPDaWgT7GMLynm2aqR7SttbEb6Jh7hc/7ck1MWm93RTb3gYVHYai8SENqimNcvIxHt/zg==",
+ "requires": {
+ "@fluentui/set-version": "^8.2.14",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/dom-utilities": {
+ "version": "2.2.14",
+ "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.2.14.tgz",
+ "integrity": "sha512-+4DVm5sNfJh+l8fM+7ylpOkGNZkNr4X1z1uKQPzRJ1PRhlnvc6vLpWNNicGwpjTbgufSrVtGKXwP5sf++r81lg==",
+ "requires": {
+ "@fluentui/set-version": "^8.2.14",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/font-icons-mdl2": {
+ "version": "8.5.31",
+ "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.31.tgz",
+ "integrity": "sha512-jioHZ9XUfR9vUT5XnxdCrJ+hoC9TpYim+4YdtlUE/euI8kdW1tDZ5zqlSNk1GLDR34n03R09yWj5gVDCcMJbyQ==",
+ "requires": {
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/style-utilities": "^8.10.2",
+ "@fluentui/utilities": "^8.13.24",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/foundation-legacy": {
+ "version": "8.2.51",
+ "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.2.51.tgz",
+ "integrity": "sha512-z/jrp1imV66/D2MGpN/55LGk/Istymk5tN+XUFHDENDi+9zyb2MgSxFshp774DJIrg3vVlyuS8oo+dBuTM3UbQ==",
+ "requires": {
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/style-utilities": "^8.10.2",
+ "@fluentui/utilities": "^8.13.24",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/keyboard-key": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.14.tgz",
+ "integrity": "sha512-XzZHcyFEM20H23h3i15UpkHi2AhRBriXPGAHq0Jm98TKFppXehedjjEFuUsh+CyU5JKBhDalWp8TAQ1ArpNzow==",
+ "requires": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/keyboard-keys": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.7.tgz",
+ "integrity": "sha512-vaQ+lOveQTdoXJYqDQXWb30udSfTVcIuKk1rV0X0eGAgcHeSDeP1HxMy+OgHOQZH3OiBH4ZYeWxb+tmfiDiygQ==",
+ "requires": {
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/merge-styles": {
+ "version": "8.5.15",
+ "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.5.15.tgz",
+ "integrity": "sha512-4CdKwo4k1Un2QLulpSVIz/KMgLNBMgin4NPyapmKDMVuO1OOxJUqfocubRGNO5x9mKgAMMYwBKGO9i0uxMMpJw==",
+ "requires": {
+ "@fluentui/set-version": "^8.2.14",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/priority-overflow": {
+ "version": "9.1.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.11.tgz",
+ "integrity": "sha512-sdrpavvKX2kepQ1d6IaI3ObLq5SAQBPRHPGx2+wiMWL7cEx9vGGM0fmeicl3soqqmM5uwCmWnZk9QZv9XOY98w==",
+ "requires": {
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react": {
+ "version": "8.114.4",
+ "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.114.4.tgz",
+ "integrity": "sha512-dVpfFSpWUxdyqWlCVSXX5d34S760h4MaQjGR2/TPavtcJRRpJDHbBN2Hn7s4riA6YX5N7bTdN372UvIVbBbzuw==",
+ "requires": {
+ "@fluentui/date-time-utilities": "^8.5.16",
+ "@fluentui/font-icons-mdl2": "^8.5.31",
+ "@fluentui/foundation-legacy": "^8.2.51",
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/react-focus": "^8.8.38",
+ "@fluentui/react-hooks": "^8.6.36",
+ "@fluentui/react-portal-compat-context": "^9.0.11",
+ "@fluentui/react-window-provider": "^2.2.18",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/style-utilities": "^8.10.2",
+ "@fluentui/theme": "^2.6.41",
+ "@fluentui/utilities": "^8.13.24",
+ "@microsoft/load-themed-styles": "^1.10.26",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/react-accordion": {
+ "version": "9.3.38",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.3.38.tgz",
+ "integrity": "sha512-BB8d9+Jr0v4SW58OJTIyvsxhA/iOBbvIkQZlVHKqt4tL8dHOIFPrApw5WqQqaSYJsEwt4HxmlNU4Dv8qRughbg==",
+ "requires": {
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-alert": {
+ "version": "9.0.0-beta.104",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.104.tgz",
+ "integrity": "sha512-Z8BGSyzEKok5wlJF2cUc8GUj2q+c1D+119YF0WtHLiieh7pwOHjBcDJOHqnaVnQNbhetIA3NUht2z0e1wgOK5w==",
+ "requires": {
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-aria": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.7.3.tgz",
+ "integrity": "sha512-YwyPNEcBDCdY6YzhrIrtlSrLs2Le7X1jLq9em8OnqHeiO22dBmg5xlBJoAMwJ8awCpI9xhu1PhU/2VJY4YqNuA==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-avatar": {
+ "version": "9.6.9",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.9.tgz",
+ "integrity": "sha512-3aZeUhGOg+UlHsp2x//G4VKRWKclcsZvX6L9UVnHsA/nQqRw7C5Bfo9iFNsEeJ3R5W5mFA6LyEFWedJ7QdAmdQ==",
+ "requires": {
+ "@fluentui/react-badge": "^9.2.22",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-popover": "^9.8.33",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-tooltip": "^9.4.11",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-badge": {
+ "version": "9.2.22",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.22.tgz",
+ "integrity": "sha512-zzimP5mZiiCOm8expUTzD6yvvKbnKq22PK/L6+oNpifrvQnDwJF/0nwXQVjA3+icNoYTaHe/q0fFivpXV+Js6g==",
+ "requires": {
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-breadcrumb": {
+ "version": "9.0.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.11.tgz",
+ "integrity": "sha512-L+AQqZz1gqkScD8IW1CjZWGNrDaHDc/gSv+PrvgSZeGDPibGj6TnLygJ7BKM+rQ+Hc2SbCogKbERpQZCbrSFvA==",
+ "requires": {
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-link": "^9.2.7",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-button": {
+ "version": "9.3.65",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.65.tgz",
+ "integrity": "sha512-3VOt29AugkfR7VMnkKON449E7Sn/nvc6BBT4kJDGKQY+Nm5d2p9e4HmHp1UaM9zRPt47lagTY2WFJNrKKSe/BA==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-card": {
+ "version": "9.0.64",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.64.tgz",
+ "integrity": "sha512-TB/Zk+tLDUPNyAd2y8BvN0T2nroimtBOpB5GTK72E5sWPk0kaKIHwBEfXxNFGdGXcw0TAmVNqYi4ks37vh0Rgg==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-checkbox": {
+ "version": "9.2.8",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.8.tgz",
+ "integrity": "sha512-L4aWzeZdi98d0ZhgNPtxghfhasQv1qlxIRMaPxtwvk5TN6i9YmRF8vf5Pmf0PESjT+zp3VPcisHcIfcqG26SmQ==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-combobox": {
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.7.0.tgz",
+ "integrity": "sha512-YmTdg04rvsg2+Dkw3ob+YLnS9rm3TLVMMNYTH0T64/FM3qirHntIXGbhMZXP5Cdo14gzQwr/e78NjBRKfYO4Wg==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-positioning": "^9.12.4",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-components": {
+ "version": "9.45.0",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.45.0.tgz",
+ "integrity": "sha512-Y+Laj1dvRcCp/nWT0DExRXoh7oKTX458g6oltrGjhIHikq4D6/kssK5tfhCyknPLwIlVSYi5J+G6L3NfvI8a8w==",
+ "requires": {
+ "@fluentui/react-accordion": "^9.3.38",
+ "@fluentui/react-alert": "9.0.0-beta.104",
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-badge": "^9.2.22",
+ "@fluentui/react-breadcrumb": "^9.0.11",
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-card": "^9.0.64",
+ "@fluentui/react-checkbox": "^9.2.8",
+ "@fluentui/react-combobox": "^9.7.0",
+ "@fluentui/react-dialog": "^9.9.7",
+ "@fluentui/react-divider": "^9.2.58",
+ "@fluentui/react-drawer": "^9.1.1",
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-image": "^9.1.55",
+ "@fluentui/react-infobutton": "9.0.0-beta.88",
+ "@fluentui/react-infolabel": "^9.0.16",
+ "@fluentui/react-input": "^9.4.60",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-link": "^9.2.7",
+ "@fluentui/react-menu": "^9.12.45",
+ "@fluentui/react-message-bar": "^9.0.16",
+ "@fluentui/react-overflow": "^9.1.8",
+ "@fluentui/react-persona": "^9.2.68",
+ "@fluentui/react-popover": "^9.8.33",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-positioning": "^9.12.4",
+ "@fluentui/react-progress": "^9.1.60",
+ "@fluentui/react-provider": "^9.13.8",
+ "@fluentui/react-radio": "^9.2.3",
+ "@fluentui/react-select": "^9.1.60",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-skeleton": "^9.0.48",
+ "@fluentui/react-slider": "^9.1.65",
+ "@fluentui/react-spinbutton": "^9.2.60",
+ "@fluentui/react-spinner": "^9.3.38",
+ "@fluentui/react-switch": "^9.1.65",
+ "@fluentui/react-table": "^9.11.5",
+ "@fluentui/react-tabs": "^9.4.6",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-tags": "^9.0.22",
+ "@fluentui/react-text": "^9.4.7",
+ "@fluentui/react-textarea": "^9.3.60",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-toast": "^9.3.27",
+ "@fluentui/react-toolbar": "^9.1.66",
+ "@fluentui/react-tooltip": "^9.4.11",
+ "@fluentui/react-tree": "^9.4.25",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@fluentui/react-virtualizer": "9.0.0-alpha.66",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-context-selector": {
+ "version": "9.1.49",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.49.tgz",
+ "integrity": "sha512-u4wRNfnyfuZDalVEESBPFQ0Ue4yYu+ozkPQvuEV6kriQGnAQQyyVbIidOCuP7Sja0nBwgM8eAzK0uX/slmmj3Q==",
+ "requires": {
+ "@fluentui/react-utilities": "^9.16.1",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-dialog": {
+ "version": "9.9.7",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.9.7.tgz",
+ "integrity": "sha512-5/6MeaHOYpx8Vt0auMJGLCjn6O1IYtl6IhwdwRNXL6AS1o4F24IKXdWZPtiHWuvzbuZAQd3+5nRDUE5KC9We6A==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1",
+ "react-transition-group": "^4.4.1"
+ }
+ },
+ "@fluentui/react-divider": {
+ "version": "9.2.58",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.58.tgz",
+ "integrity": "sha512-y1ECy1zM4imKhpyOyUGugB+J30tfySO5hhrsIcpaiUQxRjE4IhZf2ZG6EqAQYLinJ+hV06yLZoazekljlvk6yw==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-drawer": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.1.1.tgz",
+ "integrity": "sha512-3zvbbeaLLJZa4MXRpW8Ta4DFZ5457Tq9/4a0CqsIW/+8EuwtJwO+FB5a0DS6j0q6kN4mjkWF19OvzMkJsSTRVw==",
+ "requires": {
+ "@fluentui/react-dialog": "^9.9.7",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-motion-preview": "^0.5.10",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-field": {
+ "version": "9.1.50",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.50.tgz",
+ "integrity": "sha512-2mbx7YReMWvrgi3set9KepLLgMyNJ7StLu/HiHMM3jkcgPt3mGfwoJEsEKt+xd8eUAo4b82F7t+tHI4f9yzJaQ==",
+ "requires": {
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-focus": {
+ "version": "8.8.38",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.8.38.tgz",
+ "integrity": "sha512-vnsaY7hJSPIJBxm5Pj0FrcFDumV6kKgFVpsKsEKJzb1D88rDDLcmvz9jWUx68a3ru6idEbZYmyePGT1IiRsAug==",
+ "requires": {
+ "@fluentui/keyboard-key": "^0.4.14",
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/style-utilities": "^8.10.2",
+ "@fluentui/utilities": "^8.13.24",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/react-hooks": {
+ "version": "8.6.36",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.6.36.tgz",
+ "integrity": "sha512-kI0Z4Q4xHUs4SOmmI5n5OH5fPckqMSCovTRpiuxzCO2TNzLmfC861+nqf4Ygw/ChqNm2gWNZZfUADfnNAEsq+Q==",
+ "requires": {
+ "@fluentui/react-window-provider": "^2.2.18",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/utilities": "^8.13.24",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/react-icons": {
+ "version": "2.0.225",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.225.tgz",
+ "integrity": "sha512-L9phN3bAMlZCa5+/ObGjIO+5GI8M50ym766sraSq92jaJwgAXrCJDLWuDGWZRGrC63DcagtR2culptj3q7gMMg==",
+ "requires": {
+ "@griffel/react": "^1.0.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/react-image": {
+ "version": "9.1.55",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.55.tgz",
+ "integrity": "sha512-hYP61OWLuGSJNPOGJXtphbiDESfLB+/vsODKQsJhrDRJ2CSNMAfNznPHucqGRRN6AWQOI/BynJDS5F22Y//7CQ==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-infobutton": {
+ "version": "9.0.0-beta.88",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.88.tgz",
+ "integrity": "sha512-NVZyfrLtoFNu7cGkp2ORWsxJiCk1JgN4CVBDj03QSIh14EsPMwphYgDwfQ8TZOF2Nub0DGtC7/tF8IUlb/aP6g==",
+ "requires": {
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-popover": "^9.8.33",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-infolabel": {
+ "version": "9.0.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.16.tgz",
+ "integrity": "sha512-UCY+2vB4vOn0LfVhbgkyNG0EiuKIe0PdxEAtLU2PqosHLkaLKnYDKJdiIS/oaFmyNtGHmMxRkigvZpZ7h74f9g==",
+ "requires": {
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-popover": "^9.8.33",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-input": {
+ "version": "9.4.60",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.60.tgz",
+ "integrity": "sha512-kuk24K0X0gckTCssXoiWvZsTFVpZJv+WPl2fkjxeffzmFfBZtJUFQkXeC4/hcAg+aScjZnEtqjHjwDEbjZqkeA==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-jsx-runtime": {
+ "version": "9.0.27",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.27.tgz",
+ "integrity": "sha512-9wxsWxVI7RLXsdK+7lzp7TK0FJKnrrj+Igxn0prqAvXdBRiFcuycoCJaHzC4Ka+Hsiol8NQg6xaIR59a28lmyQ==",
+ "requires": {
+ "@fluentui/react-utilities": "^9.16.1",
+ "@swc/helpers": "^0.5.1",
+ "react-is": "^17.0.2"
+ }
+ },
+ "@fluentui/react-label": {
+ "version": "9.1.58",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.58.tgz",
+ "integrity": "sha512-0ouSMop4vpXJzMvAyfmIr3TgDM/W1k+GFm8ZPD5fDQCopSJ+h3kvUZg5pqaXpBwamvZ16+qRARfTNITp2U7Rjw==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-link": {
+ "version": "9.2.7",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.7.tgz",
+ "integrity": "sha512-z4X9dcUc/7FlqDxbGKbOfWubru+QimtzgMtlVxZ30pkC959hfIbFpbBY6Me76UOuFiOZxUPdfyY/73ekhhhVxw==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-menu": {
+ "version": "9.12.45",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.12.45.tgz",
+ "integrity": "sha512-qhpmuvAB4DUmmC5lNMakVvZjTdj/GZnH6WctNGZp94iCZLhcnIQcM9l0PvRpUpU1v3irXRyE5QV+x+wXC0awTw==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-positioning": "^9.12.4",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-message-bar": {
+ "version": "9.0.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.0.16.tgz",
+ "integrity": "sha512-R1VnqcFwu0pM2Yk8rjkN48Lx/n44UFD13BuY8/JeEuU8XQ8hLnEBVtdHjzRPJk+iM5in2ScMMQj4Z0nWyCRM1Q==",
+ "requires": {
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1",
+ "react-transition-group": "^4.4.1"
+ }
+ },
+ "@fluentui/react-motion-preview": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-motion-preview/-/react-motion-preview-0.5.10.tgz",
+ "integrity": "sha512-6iwF3N4hB6IxCoFVusgA2mp6mrTknwcsVGNYEQw1YF5WgGOMF3M0N1xNpN61/SYziT6HSUaI38NaA7LI3Dp3Sw==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-overflow": {
+ "version": "9.1.8",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.8.tgz",
+ "integrity": "sha512-W8L68+0bUtfGr72LRx+U05EZLO0E8VMfscDiNKiEjDrOqdBnqNAIDN86825wrN77HH2wvILN07EhPOauqzz8YQ==",
+ "requires": {
+ "@fluentui/priority-overflow": "^9.1.11",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-persona": {
+ "version": "9.2.68",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.68.tgz",
+ "integrity": "sha512-CYtDiZ34GGaw7lZ85uHZOuYXzkY21VHN6cUlGY1TJn98+Xz+y7JoVLIG7KZHHp2JzmmjtwjvgnqAdOun5LrWig==",
+ "requires": {
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-badge": "^9.2.22",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-popover": {
+ "version": "9.8.33",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.8.33.tgz",
+ "integrity": "sha512-0yPX6KCdMEGmrvJnQles5iTKN0OZ2vNSPVdkbyEKIUKj5DrNK1cMZEV/7Tgrtn922fx3/74FLMqEpEDTdrvQ/Q==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-positioning": "^9.12.4",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-portal": {
+ "version": "9.4.10",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.10.tgz",
+ "integrity": "sha512-k8fTRv9wTPSPCuNBFE2HxIhXsVYoG6Azb6Ib2xaDK+nczoW2WbsmNmwBJGEGi8UKjIoQzV+95KsYQ9me+uqKPA==",
+ "requires": {
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1",
+ "use-disposable": "^1.0.1"
+ }
+ },
+ "@fluentui/react-portal-compat-context": {
+ "version": "9.0.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.11.tgz",
+ "integrity": "sha512-ubvW/ej0O+Pago9GH3mPaxzUgsNnBoqvghNamWjyKvZIViyaXUG6+sgcAl721R+qGAFac+A20akI5qDJz/xtdg==",
+ "requires": {
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-positioning": {
+ "version": "9.12.4",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.12.4.tgz",
+ "integrity": "sha512-qQAjHF/FJFs2TyK0x08t0iFtDQlGNGH0OFC3jrG1xIFEe3nFPoeYeNT3zxOmj+D7bvlcJTIITcoe++YQTnCf4w==",
+ "requires": {
+ "@floating-ui/devtools": "0.2.1",
+ "@floating-ui/dom": "^1.2.0",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-progress": {
+ "version": "9.1.60",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.60.tgz",
+ "integrity": "sha512-9wC7lWdo3S8rhxKWlIhcYAzsZNw+rL2HvNJTvEvFxXcOG7nJxP/3mGclV/jCCwDoPDnt9BT+40pGK84eD0BNIA==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-provider": {
+ "version": "9.13.8",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.13.8.tgz",
+ "integrity": "sha512-FCvDMjs/BNAcqJuHU+kN/lqLB2RDQ/LQo29ltfLKFlTR1nTUNJvPMOVhjj6eEt+t81628LOYhbbaXOj9rYtfGg==",
+ "requires": {
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/core": "^1.14.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-radio": {
+ "version": "9.2.3",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.3.tgz",
+ "integrity": "sha512-8eKeUL0ZNr792Q6NGWPp7dpOV2IFcjAQ2oWR2/bruQVu8LMzYYKe2o6pQWdCag6UGPZuszkms9Xl7zPdDQBUdA==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-select": {
+ "version": "9.1.60",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.60.tgz",
+ "integrity": "sha512-4HfRRTlGStOgtO00RY6jmOwz6MXnoa9gtjkV7StLmJZ2U5NTjVUrnp2dP1Vjb6hO13xaihWGEYyYKnsQ3R7kIw==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-shared-contexts": {
+ "version": "9.14.0",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.14.0.tgz",
+ "integrity": "sha512-P9yhg31WYfB1W66/gD3+qVCLBsyIEcOzQvKVaIQvd9UhF67lNW4kMXUB6YVOk5PV0Og4hXnkH/vuHl7YMD9RHw==",
+ "requires": {
+ "@fluentui/react-theme": "^9.1.16",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-skeleton": {
+ "version": "9.0.48",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.0.48.tgz",
+ "integrity": "sha512-P0Rw5hIOn5CrZIWg7nVoK3gamxFhZI80KcRVaWap4O3gLo5C8nKHJWOtyBQZ5WKH+S6hoEGZ2USL6CoyXslxeQ==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-slider": {
+ "version": "9.1.65",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.65.tgz",
+ "integrity": "sha512-7kuJMIojxCmNOuiRmQwh9iiXx8zwxkrgvsWmReRIBX0WB6w1VqMcuuikq2Z2ISgNPmepCX8W+qDfx8Ne4F/HtQ==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-spinbutton": {
+ "version": "9.2.60",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.60.tgz",
+ "integrity": "sha512-0IIxEH0CTf4fNMoyvMa37bc63+0ZlznlsNy8lF3hujAT8Z9sUKVMH68e6tGUuXGJIkCUyDKU8HA+9FF2DyPvNA==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-spinner": {
+ "version": "9.3.38",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.3.38.tgz",
+ "integrity": "sha512-dPJr7/rgU2Qe/K2BciJTAEwEd0ytGpCw3VOVyK2T25w7Jw5RAHmgP+mbw+7se44Mr6sd1LH76mh5sfmQ3tODgw==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-switch": {
+ "version": "9.1.65",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.65.tgz",
+ "integrity": "sha512-P0DwogD6hZJ3O005zCFPDoFXuzkrpKMrAeQGh9X0fqFP5JyHXVCgAAZQOLcphbbT9QukoEF5irN2Z4L9gBn57A==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-label": "^9.1.58",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-table": {
+ "version": "9.11.5",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.11.5.tgz",
+ "integrity": "sha512-roQRITOtl1aqXlachS2oTraVE45x3KdDrX0KyQGCdcQRxNprXJW6dIK9QjlbAL6yAsAMDafmFA4y9uRxl408dQ==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-checkbox": "^9.2.8",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-radio": "^9.2.3",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-tabs": {
+ "version": "9.4.6",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.6.tgz",
+ "integrity": "sha512-LQvibLeJFyqKKiOjZUkRvbfLtsVosUhNUdh1SCQUPxQVpEPSK6XgwK0A1+jjoVhKn+PAJakxRINgnvqQD8pQBA==",
+ "requires": {
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-tabster": {
+ "version": "9.17.3",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.17.3.tgz",
+ "integrity": "sha512-cFcUYrkGW15w5yXzCPTTVG/7x5kNXxnhQXuh8SPyCc9JZeG7XI3+hy1T37PsXGxNS4KN9ePHkBHzgDfYO4gzYQ==",
+ "requires": {
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1",
+ "keyborg": "^2.3.0",
+ "tabster": "^5.0.1"
+ }
+ },
+ "@fluentui/react-tags": {
+ "version": "9.0.22",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.0.22.tgz",
+ "integrity": "sha512-gQIOCVu3HIfGjtAmwOnwBEnTsNyRBU8Pvs6EugpUyyqkRjzbm5TnL3LtiUy4f6/+NuaRqcYAvhwpdUhrlciwcA==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-text": {
+ "version": "9.4.7",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.7.tgz",
+ "integrity": "sha512-c6uJ98B35L8sviYxhQj1i+LW+HVNDdco2ImS9VLv/Duo4HiYs1G2y1YhtBDDiGxLe2moIvfg9ajDzMZV29aXFw==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-textarea": {
+ "version": "9.3.60",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.60.tgz",
+ "integrity": "sha512-wH4MBWT4EOgNH9FXTjcgH34oANUaoduhmVjffnxaPl3R767Ak0fZPG7kky7yrLMjTDUSwILsEj/q+hsN6o+7Ag==",
+ "requires": {
+ "@fluentui/react-field": "^9.1.50",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-theme": {
+ "version": "9.1.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.16.tgz",
+ "integrity": "sha512-QK2dGE5aQXN1UGdiEmGKpYGP3tHXIchLvFf8DEEOWnF4XBc9SiEPNFYkvLMJjHxZmDz4D670rsOPe0r5jFDEKQ==",
+ "requires": {
+ "@fluentui/tokens": "1.0.0-alpha.13",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-toast": {
+ "version": "9.3.27",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.27.tgz",
+ "integrity": "sha512-DbRAYyL5Bd/pcFiGHPpK+rQMyc4LBll9YBy496l97dGDO2HmqFuiwP74V1KznxLcr4inCNWwThIJws5VLFsJLg==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1",
+ "react-transition-group": "^4.4.1"
+ }
+ },
+ "@fluentui/react-toolbar": {
+ "version": "9.1.66",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.66.tgz",
+ "integrity": "sha512-ooNTp1R5MBZwiVK8fiJu29gE48vUx4NbXdwB2yHcCprasG3asjuoKQfOYM4+1NfFA0DetVrbK8L46IBeZyeBvA==",
+ "requires": {
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-divider": "^9.2.58",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-radio": "^9.2.3",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-tooltip": {
+ "version": "9.4.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.11.tgz",
+ "integrity": "sha512-HXm8yYuAHJuczeFExco0WQSjO3DzDj5AJxqICHF8qtbtihUKfWpPnKM1qQWR+yJR2zc2jzvOEIzZXEkxSG+fSg==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-portal": "^9.4.10",
+ "@fluentui/react-positioning": "^9.12.4",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-tree": {
+ "version": "9.4.25",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.4.25.tgz",
+ "integrity": "sha512-7IMqnOiNFMRuPujnbxJUYD8AEh0z1OGXkdNkAeLyj3pkwuvQs9+TbaNtv5Z372YN+kwYF4EYalYcPuNsRlx7cQ==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-aria": "^9.7.3",
+ "@fluentui/react-avatar": "^9.6.9",
+ "@fluentui/react-button": "^9.3.65",
+ "@fluentui/react-checkbox": "^9.2.8",
+ "@fluentui/react-context-selector": "^9.1.49",
+ "@fluentui/react-icons": "^2.0.224",
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-radio": "^9.2.3",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-tabster": "^9.17.3",
+ "@fluentui/react-theme": "^9.1.16",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-utilities": {
+ "version": "9.16.1",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.16.1.tgz",
+ "integrity": "sha512-2wdwmgTFcVy14ZLbRNJ8Q6dCCBLekkJ8Znnok68gKRLDcwpPT3UjSraoU+DGjOA5BMfPppZBU8Yb5GqdIfd48g==",
+ "requires": {
+ "@fluentui/keyboard-keys": "^9.0.7",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-virtualizer": {
+ "version": "9.0.0-alpha.66",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.66.tgz",
+ "integrity": "sha512-x/ZOAIAwctt7pvOBIzS4iZGU0ahiPhQFS7iAHksFkF9LimneaV92A/02dW0Cy4v7dv9wZNoosQwhS05Yx3DVDQ==",
+ "requires": {
+ "@fluentui/react-jsx-runtime": "^9.0.27",
+ "@fluentui/react-shared-contexts": "^9.14.0",
+ "@fluentui/react-utilities": "^9.16.1",
+ "@griffel/react": "^1.5.14",
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/react-window-provider": {
+ "version": "2.2.18",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.18.tgz",
+ "integrity": "sha512-nBKqxd0P8NmIR0qzFvka1urE2LVbUm6cse1I1T7TcOVNYa5jDf5BrO06+JRZfwbn00IJqOnIVoP0qONqceypWQ==",
+ "requires": {
+ "@fluentui/set-version": "^8.2.14",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/set-version": {
+ "version": "8.2.14",
+ "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.14.tgz",
+ "integrity": "sha512-f/QWJnSeyfAjGAqq57yjMb6a5ejPlwfzdExPmzFBuEOuupi8hHbV8Yno12XJcTW4I0KXEQGw+PUaM1aOf/j7jw==",
+ "requires": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/style-utilities": {
+ "version": "8.10.2",
+ "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.10.2.tgz",
+ "integrity": "sha512-ocELtMb/85nBa3rSfiAIwYx6TydN+3rQqv1P0H/L7etYNNtxOfS86JSWfn8zAsHMejbwUKJ1ZsIKs47c598XGQ==",
+ "requires": {
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/theme": "^2.6.41",
+ "@fluentui/utilities": "^8.13.24",
+ "@microsoft/load-themed-styles": "^1.10.26",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/theme": {
+ "version": "2.6.41",
+ "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.41.tgz",
+ "integrity": "sha512-h9RguEzqzJ0+59ys5Kkp7JtsjhDUxBLmQunu5rpHp5Mp788OtEjI/n1a9FIcOAL/priPSQwXN7RbuDpeP7+aSw==",
+ "requires": {
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/set-version": "^8.2.14",
+ "@fluentui/utilities": "^8.13.24",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@fluentui/tokens": {
+ "version": "1.0.0-alpha.13",
+ "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.13.tgz",
+ "integrity": "sha512-IzYysTTBkAH7tQZxYKpzhxYnTJkvwXhjhTOpmERgnqTFifHTP8/vaQjJAAm7dI/9zlDx1oN+y/I+KzL9bDLHZQ==",
+ "requires": {
+ "@swc/helpers": "^0.5.1"
+ }
+ },
+ "@fluentui/utilities": {
+ "version": "8.13.24",
+ "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.13.24.tgz",
+ "integrity": "sha512-/jo6hWCzTGCx06l2baAMwsjjBZ/dyMouls53uNaQLUGUUhUwXh/DcDDXMqLRJB3MaH9zvgfvRw61iKmm2s9fIA==",
+ "requires": {
+ "@fluentui/dom-utilities": "^2.2.14",
+ "@fluentui/merge-styles": "^8.5.15",
+ "@fluentui/set-version": "^8.2.14",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/core": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.15.2.tgz",
+ "integrity": "sha512-RlsIXoSS3gaYykUgxFpwKAs/DV9cRUKp3CW1kt3iPAtsDTWn/o+8bT1jvBws/tMM2GBu/Uc0EkaIzUPqD7uA+Q==",
+ "requires": {
+ "@emotion/hash": "^0.9.0",
+ "@griffel/style-types": "^1.0.3",
+ "csstype": "^3.1.3",
+ "rtl-css-js": "^1.16.1",
+ "stylis": "^4.2.0",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/react": {
+ "version": "1.5.20",
+ "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.20.tgz",
+ "integrity": "sha512-1P2yaPctENFSCwyPIYXBmgpNH68c0lc/jwSzPij1QATHDK1AASKuSeq6hW108I67RKjhRyHCcALshdZ3GcQXSg==",
+ "requires": {
+ "@griffel/core": "^1.15.2",
+ "tslib": "^2.1.0"
+ }
+ },
+ "@griffel/style-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.3.tgz",
+ "integrity": "sha512-AzbbYV/EobNIBtfMtyu2edFin895gjVxtu1nsRhTETUAIb0/LCZoue3Jd/kFLuPwe95rv5WRUBiQpVwJsrrFcw==",
+ "requires": {
+ "csstype": "^3.1.3"
+ }
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.21",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz",
+ "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@microsoft/load-themed-styles": {
+ "version": "1.10.295",
+ "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz",
+ "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg=="
+ },
+ "@react-spring/animated": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz",
+ "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==",
+ "requires": {
+ "@react-spring/shared": "~9.7.3",
+ "@react-spring/types": "~9.7.3"
+ }
+ },
+ "@react-spring/core": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz",
+ "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==",
+ "requires": {
+ "@react-spring/animated": "~9.7.3",
+ "@react-spring/shared": "~9.7.3",
+ "@react-spring/types": "~9.7.3"
+ }
+ },
+ "@react-spring/shared": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz",
+ "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==",
+ "requires": {
+ "@react-spring/types": "~9.7.3"
+ }
+ },
+ "@react-spring/types": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz",
+ "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw=="
+ },
+ "@react-spring/web": {
+ "version": "9.7.3",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz",
+ "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==",
+ "requires": {
+ "@react-spring/animated": "~9.7.3",
+ "@react-spring/core": "~9.7.3",
+ "@react-spring/shared": "~9.7.3",
+ "@react-spring/types": "~9.7.3"
+ }
+ },
+ "@remix-run/router": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz",
+ "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg=="
+ },
+ "@rollup/plugin-typescript": {
+ "version": "11.1.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.3.tgz",
+ "integrity": "sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==",
+ "requires": {
+ "@rollup/pluginutils": "^5.0.1",
+ "resolve": "^1.22.1"
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.4.tgz",
+ "integrity": "sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==",
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "@swc/helpers": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
+ "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
+ "requires": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "@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==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@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==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+ "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "@types/dompurify": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.3.tgz",
+ "integrity": "sha512-odiGr/9/qMqjcBOe5UhcNLOFHSYmKFOyr+bJ/Xu3Qp4k1pNPAlNLUVNNLcLfjQI7+W7ObX58EdD3H+3p3voOvA==",
+ "dev": true,
+ "requires": {
+ "@types/trusted-types": "*"
+ }
+ },
+ "@types/estree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
+ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA=="
+ },
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ },
+ "@types/react": {
+ "version": "18.2.48",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
+ "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/react-dom": {
+ "version": "18.2.18",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
+ "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
+ "requires": {
+ "@types/react": "*"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
+ },
+ "@types/trusted-types": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
+ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==",
+ "dev": true
+ },
+ "@vitejs/plugin-react": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz",
+ "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.23.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.23.3",
+ "@babel/plugin-transform-react-jsx-source": "^7.23.3",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "browserslist": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001579",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
+ "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "requires": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "dompurify": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz",
+ "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w=="
+ },
+ "electron-to-chromium": {
+ "version": "1.4.639",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.639.tgz",
+ "integrity": "sha512-CkKf3ZUVZchr+zDpAlNLEEy2NJJ9T64ULWaDgy3THXXlPVPkLu3VOs9Bac44nebVtdwl2geSj6AxTtGDOxoXhg==",
+ "dev": true
+ },
+ "esbuild": {
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz",
+ "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==",
+ "dev": true,
+ "requires": {
+ "@esbuild/android-arm": "0.18.11",
+ "@esbuild/android-arm64": "0.18.11",
+ "@esbuild/android-x64": "0.18.11",
+ "@esbuild/darwin-arm64": "0.18.11",
+ "@esbuild/darwin-x64": "0.18.11",
+ "@esbuild/freebsd-arm64": "0.18.11",
+ "@esbuild/freebsd-x64": "0.18.11",
+ "@esbuild/linux-arm": "0.18.11",
+ "@esbuild/linux-arm64": "0.18.11",
+ "@esbuild/linux-ia32": "0.18.11",
+ "@esbuild/linux-loong64": "0.18.11",
+ "@esbuild/linux-mips64el": "0.18.11",
+ "@esbuild/linux-ppc64": "0.18.11",
+ "@esbuild/linux-riscv64": "0.18.11",
+ "@esbuild/linux-s390x": "0.18.11",
+ "@esbuild/linux-x64": "0.18.11",
+ "@esbuild/netbsd-x64": "0.18.11",
+ "@esbuild/openbsd-x64": "0.18.11",
+ "@esbuild/sunos-x64": "0.18.11",
+ "@esbuild/win32-arm64": "0.18.11",
+ "@esbuild/win32-ia32": "0.18.11",
+ "@esbuild/win32-x64": "0.18.11"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "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==",
+ "dev": true
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "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==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
+ },
+ "keyborg": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.4.1.tgz",
+ "integrity": "sha512-B9EZwDd36WKlIq6JmimaTsTDx5E0aUqZcxtgTfK66ut1FbRXYhBmiB7Al2qKzB7CCX9C49sTBiiyVzsXCA6J4Q=="
+ },
+ "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==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "dev": true
+ },
+ "ndjson-readablestream": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/ndjson-readablestream/-/ndjson-readablestream-1.0.7.tgz",
+ "integrity": "sha512-4DDTwYTV4yRnCoXparQTF3JeahTNkLVy7XlA0RHXzAqQ3uU8vcu97bNW8rXAQOKQVJGs2aZoX+7cbvfs0LENEA=="
+ },
+ "node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "dev": true
+ },
+ "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=="
+ },
+ "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=="
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "dev": true,
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "prettier": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+ "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+ "dev": true
+ },
+ "prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ },
+ "dependencies": {
+ "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=="
+ }
+ }
+ },
+ "react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "dependencies": {
+ "scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ }
+ }
+ },
+ "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=="
+ },
+ "react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "dev": true
+ },
+ "react-router": {
+ "version": "6.21.3",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz",
+ "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==",
+ "requires": {
+ "@remix-run/router": "1.14.2"
+ }
+ },
+ "react-router-dom": {
+ "version": "6.21.3",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz",
+ "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==",
+ "requires": {
+ "@remix-run/router": "1.14.2",
+ "react-router": "6.21.3"
+ }
+ },
+ "react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "requires": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "resolve": {
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "rollup": {
+ "version": "3.29.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "rtl-css-js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
+ "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
+ "requires": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
+ "scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true
+ },
+ "stylis": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
+ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "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=="
+ },
+ "tabster": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/tabster/-/tabster-5.2.0.tgz",
+ "integrity": "sha512-cSi3a0gGeM9Co/gTKHlhTFfiitwVjcA+kP9lJux0U7QaRrZox1yYrfbwZhJXM7N0fux7BgvCYaOxME5k0EQ0tA==",
+ "requires": {
+ "keyborg": "^2.2.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+ },
+ "typescript": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w=="
+ },
+ "update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "use-disposable": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.2.tgz",
+ "integrity": "sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==",
+ "requires": {}
+ },
+ "vite": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz",
+ "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.18.10",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.27",
+ "rollup": "^3.27.1"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
diff --git a/app/frontend/package.json b/app/frontend/package.json
index 5ee802e..3961282 100644
--- a/app/frontend/package.json
+++ b/app/frontend/package.json
@@ -12,17 +12,18 @@
"preview": "vite preview"
},
"dependencies": {
- "@azure/msal-react": "^2.0.4",
"@azure/msal-browser": "^3.1.0",
+ "@azure/msal-react": "^2.0.4",
"@fluentui/react": "^8.112.5",
"@fluentui/react-components": "^9.37.3",
"@fluentui/react-icons": "^2.0.221",
"@react-spring/web": "^9.7.3",
"dompurify": "^3.0.6",
+ "frontend": "file:",
+ "ndjson-readablestream": "^1.0.7",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.18.0",
- "ndjson-readablestream": "^1.0.7",
"scheduler": "^0.20.2"
},
"devDependencies": {
@@ -33,6 +34,5 @@
"prettier": "^3.0.3",
"typescript": "^5.2.2",
"vite": "^4.5.3"
-
}
}
diff --git a/app/start-compose.ps1 b/app/start-compose.ps1
new file mode 100644
index 0000000..69fe8a0
--- /dev/null
+++ b/app/start-compose.ps1
@@ -0,0 +1,51 @@
+$output = azd -C ..\ env get-values
+
+foreach ($line in $output) {
+ $name, $value = $line.Split("=")
+ $value = $value -replace '^\"|\"$'
+ [Environment]::SetEnvironmentVariable($name, $value)
+}
+
+Write-Host "Environment variables set."
+$roles = @(
+ "a97b65f3-24c7-4388-baec-2e87135dc908",
+ "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd",
+ "ba92f5b4-2d11-453d-a403-e96b0029c9fe"
+)
+
+# Check if service principal exists
+$servicePrincipal = $(az ad sp list --display-name "virtual-ai-agent-java-spi" --query [].appId --output tsv)
+
+if ([string]::IsNullOrEmpty($servicePrincipal)) {
+ Write-Host "Service principal not found. Creating service principal"
+ $servicePrincipal = $(az ad sp create-for-rbac --name "virtual-ai-agent-java-spi" --role reader --scopes "/subscriptions/$($env:AZURE_SUBSCRIPTION_ID)/resourceGroups/$($env:AZURE_RESOURCE_GROUP)" --query appId --output tsv)
+ if ($LASTEXITCODE -ne 0) {
+ Write-Host "Failed to create service principal"
+ exit $LASTEXITCODE
+ }
+ $servicePrincipalObjectId = $(az ad sp show --id $servicePrincipal --query id --output tsv)
+ Write-Host "Assigning Roles to service principal virtual-ai-agent-java-spi with principal id: $servicePrincipal and object id[$servicePrincipalObjectId]"
+ foreach ($role in $roles) {
+ Write-Host "Assigning Role[$role] to principal id[$servicePrincipal] for resource[/subscriptions/$($env:AZURE_SUBSCRIPTION_ID)/resourceGroups/$($env:AZURE_RESOURCE_GROUP)]"
+ az role assignment create `
+ --role $role `
+ --assignee-object-id $servicePrincipalObjectId `
+ --scope "/subscriptions/$($env:AZURE_SUBSCRIPTION_ID)/resourceGroups/$($env:AZURE_RESOURCE_GROUP)" `
+ --assignee-principal-type ServicePrincipal
+ }
+}
+
+$servicePrincipalPassword = $(az ad sp credential reset --id $servicePrincipal --query password --output tsv)
+$servicePrincipalTenant = $(az ad sp show --id $servicePrincipal --query appOwnerOrganizationId --output tsv)
+
+# Set environment variables
+[Environment]::SetEnvironmentVariable("servicePrincipal", $servicePrincipal)
+[Environment]::SetEnvironmentVariable("servicePrincipalPassword", $servicePrincipalPassword)
+[Environment]::SetEnvironmentVariable("servicePrincipalTenant", $servicePrincipalTenant)
+
+
+Write-Host ""
+Write-Host "Starting solution locally using docker compose."
+Write-Host ""
+
+docker compose -f ./compose.yaml up
\ No newline at end of file
diff --git a/app/start-compose.sh b/app/start-compose.sh
new file mode 100644
index 0000000..1848062
--- /dev/null
+++ b/app/start-compose.sh
@@ -0,0 +1,60 @@
+echo ""
+echo "Loading azd .env file from current environment"
+echo ""
+
+while IFS='=' read -r key value; do
+ value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
+ export "$key=$value"
+ echo "export $key=$value"
+done <