From 7366c27eb18cd70f03e521467a468abc16149ce9 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Mon, 8 Apr 2024 10:05:55 -0400 Subject: [PATCH 01/24] update agencie stat to 250 from 560. --- training-front-end/src/content/training_fleet_pc/lesson01.mdx | 2 +- training-front-end/src/content/training_purchase/lesson01.mdx | 2 +- .../src/content/training_purchase_pc/lesson01.mdx | 2 +- training-front-end/src/content/training_travel/lesson01.mdx | 2 +- training-front-end/src/content/training_travel_pc/lesson01.mdx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/training-front-end/src/content/training_fleet_pc/lesson01.mdx b/training-front-end/src/content/training_fleet_pc/lesson01.mdx index d2b45636..bcecab4e 100644 --- a/training-front-end/src/content/training_fleet_pc/lesson01.mdx +++ b/training-front-end/src/content/training_fleet_pc/lesson01.mdx @@ -10,7 +10,7 @@ tags: import Image from "../../components/Image.astro" ## What is the GSA SmartPay® program? -Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 560 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: +Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 250 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: - GSA SmartPay Purchase. - GSA SmartPay Travel. - GSA SmartPay Fleet. diff --git a/training-front-end/src/content/training_purchase/lesson01.mdx b/training-front-end/src/content/training_purchase/lesson01.mdx index 0d6870c9..ebf31390 100644 --- a/training-front-end/src/content/training_purchase/lesson01.mdx +++ b/training-front-end/src/content/training_purchase/lesson01.mdx @@ -11,7 +11,7 @@ tags: import Image from "../../components/Image.astro" ## What is the GSA SmartPay® program? -Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 560 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: +Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 250 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: - GSA SmartPay Purchase. - GSA SmartPay Travel. - GSA SmartPay Fleet. diff --git a/training-front-end/src/content/training_purchase_pc/lesson01.mdx b/training-front-end/src/content/training_purchase_pc/lesson01.mdx index 49945977..02f3cc70 100644 --- a/training-front-end/src/content/training_purchase_pc/lesson01.mdx +++ b/training-front-end/src/content/training_purchase_pc/lesson01.mdx @@ -10,7 +10,7 @@ tags: import Image from "../../components/Image.astro" ## What is the GSA SmartPay® program? -Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 560 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: +Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 250 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: - GSA SmartPay Purchase. - GSA SmartPay Travel. - GSA SmartPay Fleet. diff --git a/training-front-end/src/content/training_travel/lesson01.mdx b/training-front-end/src/content/training_travel/lesson01.mdx index 78a491fe..03d157fc 100644 --- a/training-front-end/src/content/training_travel/lesson01.mdx +++ b/training-front-end/src/content/training_travel/lesson01.mdx @@ -12,7 +12,7 @@ import Image from "../../components/Image.astro" ## What is the GSA SmartPay® program? -Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 560 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: +Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 250 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: - GSA SmartPay Purchase. - GSA SmartPay Travel. - GSA SmartPay Fleet. diff --git a/training-front-end/src/content/training_travel_pc/lesson01.mdx b/training-front-end/src/content/training_travel_pc/lesson01.mdx index a36e20f5..31043124 100644 --- a/training-front-end/src/content/training_travel_pc/lesson01.mdx +++ b/training-front-end/src/content/training_travel_pc/lesson01.mdx @@ -11,7 +11,7 @@ import Image from "../../components/Image.astro" ## What is the GSA SmartPay® program? -Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 560 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: +Established in 1998, the GSA SmartPay program is the world’s largest government charge card and commercial payment solutions program, providing services to more than 250 federal agencies/organizations and Native American tribal governments with 6.5 million total accounts. GSA SmartPay payment solutions enable authorized government employees to make purchases on behalf of the federal government in support of their agency’s mission. The GSA SmartPay program includes the following business lines: - GSA SmartPay Purchase. - GSA SmartPay Travel. - GSA SmartPay Fleet. From cd241c5c6eece4df4cfa73cff1c4cda7bcca9972 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Wed, 10 Apr 2024 10:50:29 -0400 Subject: [PATCH 02/24] wip testing optional params in login destination. --- .../src/components/GspcRegistration.vue | 103 ++++++++++++++++++ .../src/components/LoginlessFlow.vue | 7 +- training/api/api_v1/loginless_flow.py | 3 +- training/schemas/temp_user.py | 1 + 4 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 training-front-end/src/components/GspcRegistration.vue diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue new file mode 100644 index 00000000..6e4d9c81 --- /dev/null +++ b/training-front-end/src/components/GspcRegistration.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/training-front-end/src/components/LoginlessFlow.vue b/training-front-end/src/components/LoginlessFlow.vue index fed0a8af..84395f09 100644 --- a/training-front-end/src/components/LoginlessFlow.vue +++ b/training-front-end/src/components/LoginlessFlow.vue @@ -46,6 +46,11 @@ 'linkDestinationText': { type: String, required: true + }, + 'parameters': { + type: String, + required: false, + default: "" } }) @@ -161,7 +166,7 @@ headers: { 'Content-Type': 'application/json'}, body: JSON.stringify({ user: user_data, - dest: {page_id: props.pageId, title: props.title} + dest: {page_id: props.pageId, parameters: props.parameters, title: props.title} }) }) } catch (err) { diff --git a/training/api/api_v1/loginless_flow.py b/training/api/api_v1/loginless_flow.py index 1f00ff65..af03d3d0 100644 --- a/training/api/api_v1/loginless_flow.py +++ b/training/api/api_v1/loginless_flow.py @@ -106,7 +106,8 @@ def send_link( detail="Server Error" ) path = page_id_lookup[dest.page_id]['path'] - url = f"{settings.BASE_URL}{path}?t={token}" + parameters = f"t={token}" if not dest.parameters else f"{dest.parameters}&t={token}" + url = f"{settings.BASE_URL}{path}?{parameters}" try: send_email(to_email=user.email, name=user.name, link=url, training_title=dest.title) logging.info(f"Sent confirmation email to {user.email} for {path}") diff --git a/training/schemas/temp_user.py b/training/schemas/temp_user.py index b46b5dc8..f9117bf7 100644 --- a/training/schemas/temp_user.py +++ b/training/schemas/temp_user.py @@ -40,4 +40,5 @@ class WebDestination(BaseModel): after the loginless flow completes ''' page_id: str + parameters: str title: str From f49f4db8c59085167419950e528898da285033b8 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 12 Apr 2024 15:11:37 -0400 Subject: [PATCH 03/24] Create placeholder gspc registration page and place it behind login. Also allow for params to be passed into the login redirect. --- .vscode/settings.json | 9 ++++ .../src/components/GspcRegistration.vue | 41 +++++-------------- .../src/components/LoginlessFlow.vue | 4 +- .../src/components/QuizIndex.vue | 2 +- .../__tests__/GspcRegistration.spec.js | 29 +++++++++++++ .../src/pages/gspc_registration/index.astro | 17 ++++++++ training/api/api_v1/gspc.py | 9 ++-- training/api/api_v1/loginless_flow.py | 9 ++-- training/api/email.py | 3 ++ training/tests/test_api_loginless_flow.py | 40 ++++++++++++++---- 10 files changed, 113 insertions(+), 50 deletions(-) create mode 100644 training-front-end/src/components/__tests__/GspcRegistration.spec.js create mode 100644 training-front-end/src/pages/gspc_registration/index.astro diff --git a/.vscode/settings.json b/.vscode/settings.json index 6e00fa4e..21d45c41 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,14 @@ "python.testing.unittestEnabled": false, "python.testing.pytestArgs": [ "training" + ], + "cSpell.words": [ + "fastapi", + "GSPC", + "Loginless", + "nanostores", + "pydantic", + "USWDS", + "Vuelidate" ] } \ No newline at end of file diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue index 6e4d9c81..1eb4b12c 100644 --- a/training-front-end/src/components/GspcRegistration.vue +++ b/training-front-end/src/components/GspcRegistration.vue @@ -1,42 +1,21 @@ + + \ No newline at end of file diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue index eb2b47da..c76cebc3 100644 --- a/training-front-end/src/components/GspcRegistration.vue +++ b/training-front-end/src/components/GspcRegistration.vue @@ -1,24 +1,28 @@ - - +
+

Congratulations You Earned Your GSA SmartPay® Program Certificate (GSPC)

+

You have met the requirements to earn a GSA SmartPay® Program Certificate (GSPC). Your certificate has been emailed to you. Or, you may download your certificate below.

+ +
+ Return to the GSA SmartPay Training Home Page +
+
+

You Don't Meet the Requirements for GSA SmartPay® Program Certification (GSPC)

+

Once you have met the coursework and experience requirement of six months of continuous, hands-on experience working with the GSA SmartPay program please return to the link in your email to reapply.

+

If you have any questions ,please reference Smart Bulletin No. 022 or contact the GSPC Program Manager at smartpaygspc@gsa.com.

+ Return to the GSA SmartPay Training Home Page +
+
+ +
diff --git a/training-front-end/src/components/LoginlessFlow.vue b/training-front-end/src/components/LoginlessFlow.vue index ad90944a..8c746aa8 100644 --- a/training-front-end/src/components/LoginlessFlow.vue +++ b/training-front-end/src/components/LoginlessFlow.vue @@ -118,7 +118,10 @@ function clearToken() { const url = new URL(window.location); - url.search = '' + //remove token from url + const params = new URLSearchParams(url.search); + params.delete('t') + url.search = params history.replaceState({}, '', url) } diff --git a/training/api/api_v1/gspc.py b/training/api/api_v1/gspc.py index ae6709a2..a6ae43e6 100644 --- a/training/api/api_v1/gspc.py +++ b/training/api/api_v1/gspc.py @@ -49,16 +49,14 @@ async def gspc_admin_invite( @router.post( - "/submission", + "/gspc/submission", response_model=GspcResult, status_code=status.HTTP_201_CREATED ) def submit_gspc_registration( - id: int, submission: GspcSubmission, gspc_service: GspcService = Depends(gspc_service), user: dict[str, Any] = Depends(JWTUser()) ): - result = gspc_service.grade(quiz_id=id, user_id=user["id"], submission=submission) - + result = gspc_service.grade(user_id=user["id"], submission=submission) return result \ No newline at end of file diff --git a/training/schemas/gspc_submission.py b/training/schemas/gspc_submission.py index 58733d82..7e90aff4 100644 --- a/training/schemas/gspc_submission.py +++ b/training/schemas/gspc_submission.py @@ -1,13 +1,14 @@ from pydantic import BaseModel -class QuizSubmissionQuestion(BaseModel): +class GspcSubmissionQuestion(BaseModel): question_id: int question: str - response_ids: list[int] - response: list[str] + response_id: int + response: str correct: bool class GspcSubmission(BaseModel): - responses: list[QuizSubmissionQuestion] + expiration_date: str + responses: list[GspcSubmissionQuestion] From c5d6ebb051309269d8af64dab93250c023cfffcb Mon Sep 17 00:00:00 2001 From: John Labbate Date: Tue, 30 Apr 2024 10:38:50 -0400 Subject: [PATCH 10/24] cleanup. --- .../src/components/GspcRegistration.vue | 6 +-- .../components/__tests__/GspcQuestion.spec.js | 54 +++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 training-front-end/src/components/__tests__/GspcQuestion.spec.js diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue index 2e5b3852..7f89597b 100644 --- a/training-front-end/src/components/GspcRegistration.vue +++ b/training-front-end/src/components/GspcRegistration.vue @@ -34,7 +34,7 @@ } function downloadCert(){ - console.log('todo') + //console.log('todo') } async function submitGspcRegistration(user_answers) { @@ -66,10 +66,8 @@ setError(e) } var result = await res.json() - console.log(result.passed) if(result.passed){ certPassed.value = true - console.log('certPassed ='+certPassed.value) } else{ certFailed.value = true } @@ -126,7 +124,7 @@ > Download your certificate -
+

Return to the GSA SmartPay Training Home Page
diff --git a/training-front-end/src/components/__tests__/GspcQuestion.spec.js b/training-front-end/src/components/__tests__/GspcQuestion.spec.js new file mode 100644 index 00000000..8c51ffed --- /dev/null +++ b/training-front-end/src/components/__tests__/GspcQuestion.spec.js @@ -0,0 +1,54 @@ +import { describe, it, expect} from 'vitest' +import { shallowMount } from '@vue/test-utils' +import GspcQuestion from '@/components/GspcQuestion.vue' + +describe('GspcQuestion', () => { + // Sample question data for testing + const question = { + id: 0, + text: 'Sample question text', + type: 'MultipleChoiceSingleSelect', + choices: [ + { id: 0, text: 'Option 1', correct: true }, + { id: 1, text: 'Option 2', correct: false } + ] + } + + // Sample user answer for testing + const userAnswer = 0 // Assuming the user selected the first choice + + it('renders question text correctly', () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: null } + }) + expect(wrapper.text()).toContain(question.text) + }) + + it('renders choices correctly', () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: null } + }) + const choices = wrapper.findAll('input[type="radio"]') + expect(choices.length).toBe(question.choices.length) + question.choices.forEach((choice, index) => { + expect(choices[index].element.value).toBe(choice.id.toString()) + expect(wrapper.text()).toContain(choice.text) + }) + }) + + it('emits select_answer event with correct choice', async () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: null } + }) + await wrapper.find('input[value="0"]').setChecked() + expect(wrapper.emitted('select_answer')[0]).toEqual([0]) + }) + + it('correctly highlights selected choice', async () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: userAnswer } + }) + const selectedChoice = wrapper.find(`input[value="${userAnswer}"]`) + expect(selectedChoice.element.checked).toBe(true) + }) +}) \ No newline at end of file From 0478581db8a1bf0f6987685b1f5c335118ba234b Mon Sep 17 00:00:00 2001 From: John Labbate Date: Tue, 30 Apr 2024 11:14:31 -0400 Subject: [PATCH 11/24] update vitest. --- training-front-end/package-lock.json | 1948 +++++------------ training-front-end/package.json | 6 +- .../components/__tests__/GspcQuestion.spec.js | 28 +- .../__tests__/GspcRegistration.spec.js | 6 +- 4 files changed, 523 insertions(+), 1465 deletions(-) diff --git a/training-front-end/package-lock.json b/training-front-end/package-lock.json index be98be86..745d52b8 100644 --- a/training-front-end/package-lock.json +++ b/training-front-end/package-lock.json @@ -30,7 +30,7 @@ "@uswds/compile": "^1.1.0", "@uswds/uswds": "^3.8.0", "@vitejs/plugin-vue": "^4.1.0", - "@vitest/coverage-c8": "^0.30.1", + "@vitest/coverage-v8": "^1.5.3", "@vue/cli-plugin-eslint": "^5.0.8", "@vue/test-utils": "^2.3.2", "eslint": "^8.38.0", @@ -41,7 +41,7 @@ "jsdom": "^21.1.1", "pa11y-ci": "^3.0.1", "start-server-and-test": "^2.0.3", - "vitest": "^0.30.1" + "vitest": "^1.5.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -528,9 +528,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -713,7 +713,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=12" } @@ -1352,6 +1351,18 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -1563,8 +1574,7 @@ "optional": true, "os": [ "android" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-android-arm64": { "version": "4.13.0", @@ -1576,8 +1586,7 @@ "optional": true, "os": [ "android" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.13.0", @@ -1589,8 +1598,7 @@ "optional": true, "os": [ "darwin" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-darwin-x64": { "version": "4.13.0", @@ -1602,8 +1610,7 @@ "optional": true, "os": [ "darwin" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { "version": "4.13.0", @@ -1615,8 +1622,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { "version": "4.13.0", @@ -1628,8 +1634,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { "version": "4.13.0", @@ -1641,8 +1646,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { "version": "4.13.0", @@ -1654,8 +1658,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.13.0", @@ -1667,8 +1670,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.13.0", @@ -1680,8 +1682,7 @@ "optional": true, "os": [ "linux" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { "version": "4.13.0", @@ -1693,8 +1694,7 @@ "optional": true, "os": [ "win32" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { "version": "4.13.0", @@ -1706,8 +1706,7 @@ "optional": true, "os": [ "win32" - ], - "peer": true + ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.13.0", @@ -1719,8 +1718,7 @@ "optional": true, "os": [ "win32" - ], - "peer": true + ] }, "node_modules/@sideway/address": { "version": "4.1.5", @@ -1743,6 +1741,12 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "dev": true }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@soda/friendly-errors-webpack-plugin": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", @@ -1927,21 +1931,6 @@ "@types/node": "*" } }, - "node_modules/@types/chai": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", - "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", - "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -2073,12 +2062,6 @@ "@types/node": "*" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2405,76 +2388,115 @@ "vue": "^3.0.0" } }, - "node_modules/@vitest/coverage-c8": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.30.1.tgz", - "integrity": "sha512-/Wa3dtSuckpdngAmiCwowaEXXgJkqPrtfvrs9HTB9QoEfNbZWPu4E4cjEn4lJZb4qcGf4fxFtUA2f9DnDNAzBA==", - "deprecated": "v8 coverage is moved to @vitest/coverage-v8 package", + "node_modules/@vitest/coverage-v8": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.5.3.tgz", + "integrity": "sha512-DPyGSu/fPHOJuPxzFSQoT4N/Fu/2aJfZRtEpEp8GI7NHsXBGE94CQ+pbEGBUMFjatsHPDJw/+TAF9r4ens2CNw==", "dev": true, "dependencies": { - "c8": "^7.13.0", + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.4", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.3", "picocolors": "^1.0.0", - "std-env": "^3.3.2" + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "test-exclude": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": ">=0.30.0 <1" + "vitest": "1.5.3" } }, "node_modules/@vitest/expect": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.30.1.tgz", - "integrity": "sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.5.3.tgz", + "integrity": "sha512-y+waPz31pOFr3rD7vWTbwiLe5+MgsMm40jTZbQE8p8/qXyBX3CQsIXRx9XK12IbY7q/t5a5aM/ckt33b4PxK2g==", "dev": true, "dependencies": { - "@vitest/spy": "0.30.1", - "@vitest/utils": "0.30.1", - "chai": "^4.3.7" + "@vitest/spy": "1.5.3", + "@vitest/utils": "1.5.3", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.30.1.tgz", - "integrity": "sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.5.3.tgz", + "integrity": "sha512-7PlfuReN8692IKQIdCxwir1AOaP5THfNkp0Uc4BKr2na+9lALNit7ub9l3/R7MP8aV61+mHKRGiqEKRIwu6iiQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.30.1", - "concordance": "^5.0.4", - "p-limit": "^4.0.0", - "pathe": "^1.1.0" + "@vitest/utils": "1.5.3", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@vitest/snapshot": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.30.1.tgz", - "integrity": "sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.3.tgz", + "integrity": "sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==", "dev": true, "dependencies": { - "magic-string": "^0.30.0", - "pathe": "^1.1.0", - "pretty-format": "^27.5.1" + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.30.1.tgz", - "integrity": "sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.3.tgz", + "integrity": "sha512-Llj7Jgs6lbnL55WoshJUUacdJfjU2honvGcAJBxhra5TPEzTJH8ZuhI3p/JwqqfnTr4PmP7nDmOXP53MS7GJlg==", "dev": true, "dependencies": { - "tinyspy": "^2.1.0" + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.30.1.tgz", - "integrity": "sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.3.tgz", + "integrity": "sha512-rE9DTN1BRhzkzqNQO+kw8ZgfeEBCLXiHJwetk668shmNBpSagQxneT5eSqEBLP+cqSiAeecvQmbpFfdMyLcIQA==", "dev": true, "dependencies": { - "concordance": "^5.0.4", - "loupe": "^2.3.6", - "pretty-format": "^27.5.1" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/@vscode/emmet-helper": { @@ -5374,12 +5396,6 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true - }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -5693,41 +5709,6 @@ "node": ">= 0.8" } }, - "node_modules/c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/c8/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -6297,6 +6278,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -6308,6 +6290,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6323,6 +6306,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6334,13 +6318,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6603,56 +6589,10 @@ "typedarray": "^0.0.6" } }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, - "node_modules/concordance/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/concordance/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/concordance/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", "dev": true }, "node_modules/config-chain": { @@ -7279,18 +7219,6 @@ "node": ">=14" } }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -7703,6 +7631,15 @@ "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -9468,12 +9405,6 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -9941,19 +9872,6 @@ "node": ">=0.10.0" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -10136,6 +10054,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "peer": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -12770,6 +12689,20 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", + "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-reports": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", @@ -12933,15 +12866,6 @@ "node": ">=0.6.0" } }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -13437,10 +13361,14 @@ } }, "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { "node": ">=14" }, @@ -13776,6 +13704,17 @@ "node": ">=12" } }, + "node_modules/magicast": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.4", + "@babel/types": "^7.24.0", + "source-map-js": "^1.2.0" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -14064,18 +14003,6 @@ "integrity": "sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA==", "dev": true }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/mdast-heading-id": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-heading-id/-/mdast-heading-id-1.0.1.tgz", @@ -19978,22 +19905,16 @@ } }, "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz", + "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==", "dev": true, "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" + "confbox": "^0.1.7", + "mlly": "^1.6.1", + "pathe": "^1.1.2" } }, - "node_modules/pkg-types/node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true - }, "node_modules/plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -20797,17 +20718,17 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -21150,9 +21071,9 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/read-pkg": { @@ -22013,7 +21934,6 @@ "version": "4.13.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", - "peer": true, "dependencies": { "@types/estree": "1.0.5" }, @@ -23062,9 +22982,9 @@ } }, "node_modules/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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -23718,17 +23638,23 @@ } }, "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "dependencies": { - "acorn": "^8.10.0" + "js-tokens": "^9.0.0" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, "node_modules/style-to-object": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", @@ -24240,15 +24166,6 @@ "node": ">=0.10.0" } }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -24266,9 +24183,9 @@ "dev": true }, "node_modules/tinypool": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.4.0.tgz", - "integrity": "sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "engines": { "node": ">=14.0.0" @@ -24628,9 +24545,9 @@ } }, "node_modules/ufo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", - "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", "dev": true }, "node_modules/unbox-primitive": { @@ -25093,20 +25010,6 @@ "node": ">=8" } }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -25307,7 +25210,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", - "peer": true, "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.35", @@ -25359,36 +25261,34 @@ } }, "node_modules/vite-node": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.30.1.tgz", - "integrity": "sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.5.3.tgz", + "integrity": "sha512-axFo00qiCpU/JLd8N1gu9iEYL3xTbMbMrbe5nDp9GL0nb6gurIdZLkkFogZXWnE8Oyy5kfSLwNVIcVsnhE7lgQ==", "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", - "mlly": "^1.2.0", - "pathe": "^1.1.0", + "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=v14.18.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-node/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -25397,14 +25297,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -25413,14 +25312,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "android" @@ -25429,14 +25327,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -25445,14 +25342,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -25461,14 +25357,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -25477,14 +25372,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -25493,14 +25387,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25509,14 +25402,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25525,14 +25417,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25541,14 +25432,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", "cpu": [ "loong64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25557,14 +25447,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25573,14 +25462,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25589,14 +25477,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25605,14 +25492,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25621,14 +25507,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -25637,14 +25522,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "netbsd" @@ -25653,14 +25537,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -25669,14 +25552,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -25685,14 +25567,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -25701,14 +25582,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -25717,14 +25597,13 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -25733,11 +25612,10 @@ "node": ">=12" } }, - "node_modules/vite-node/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, + "node_modules/vite/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -25746,1078 +25624,256 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" } }, - "node_modules/vite-node/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "node_modules/vite/node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^10 || ^12 || >=14" } }, - "node_modules/vite-node/node_modules/vite": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.5.3.tgz", + "integrity": "sha512-2oM7nLXylw3mQlW6GXnRriw+7YvZFk/YNV8AxIC3Z3MfFbuziLGWP9GPxxu/7nRlXhqyxBikpamr+lEEj1sUEw==", + "dev": true, + "dependencies": { + "@vitest/expect": "1.5.3", + "@vitest/runner": "1.5.3", + "@vitest/snapshot": "1.5.3", + "@vitest/spy": "1.5.3", + "@vitest/utils": "1.5.3", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.5.3", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "hasInstallScript": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/vite/node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.30.1.tgz", - "integrity": "sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.30.1", - "@vitest/runner": "0.30.1", - "@vitest/snapshot": "0.30.1", - "@vitest/spy": "0.30.1", - "@vitest/utils": "0.30.1", - "acorn": "^8.8.2", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "concordance": "^5.0.4", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.2", - "strip-literal": "^1.0.1", - "tinybench": "^2.4.0", - "tinypool": "^0.4.0", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.30.1", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], "engines": { - "node": ">=12" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.5.3", + "@vitest/ui": "1.5.3", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/vitest/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], "engines": { - "node": ">=12" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">=16.17.0" } }, - "node_modules/vitest/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "path-key": "^4.0.0" }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "dependencies": { + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=12" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vitest/node_modules/vite": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/vscode-css-languageservice": { @@ -27629,15 +26685,6 @@ "node": ">=0.8.0" } }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/whatwg-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", @@ -28075,6 +27122,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "peer": true, "engines": { "node": ">=10" } @@ -28098,6 +27146,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "peer": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -28124,6 +27173,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "peer": true, "engines": { "node": ">=10" } diff --git a/training-front-end/package.json b/training-front-end/package.json index cd4e6a15..441260a7 100644 --- a/training-front-end/package.json +++ b/training-front-end/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "astro dev", "start": "astro dev", - "build": "./bin/build.sh", + "build": "./bin/build.sh", "preview": "astro preview", "astro": "astro", "test:unit": "vitest --environment jsdom --root .", @@ -40,7 +40,7 @@ "@uswds/compile": "^1.1.0", "@uswds/uswds": "^3.8.0", "@vitejs/plugin-vue": "^4.1.0", - "@vitest/coverage-c8": "^0.30.1", + "@vitest/coverage-v8": "^1.5.3", "@vue/cli-plugin-eslint": "^5.0.8", "@vue/test-utils": "^2.3.2", "eslint": "^8.38.0", @@ -51,7 +51,7 @@ "jsdom": "^21.1.1", "pa11y-ci": "^3.0.1", "start-server-and-test": "^2.0.3", - "vitest": "^0.30.1" + "vitest": "^1.5.3" }, "overrides": { "glob-parent": "^5.1.2" diff --git a/training-front-end/src/components/__tests__/GspcQuestion.spec.js b/training-front-end/src/components/__tests__/GspcQuestion.spec.js index 8c51ffed..e414cd53 100644 --- a/training-front-end/src/components/__tests__/GspcQuestion.spec.js +++ b/training-front-end/src/components/__tests__/GspcQuestion.spec.js @@ -1,6 +1,6 @@ import { describe, it, expect} from 'vitest' import { shallowMount } from '@vue/test-utils' -import GspcQuestion from '@/components/GspcQuestion.vue' +import GspcQuestion from '../GspcQuestion.vue' describe('GspcQuestion', () => { // Sample question data for testing @@ -15,7 +15,7 @@ describe('GspcQuestion', () => { } // Sample user answer for testing - const userAnswer = 0 // Assuming the user selected the first choice + const userAnswer = 0 it('renders question text correctly', () => { const wrapper = shallowMount(GspcQuestion, { @@ -41,14 +41,22 @@ describe('GspcQuestion', () => { props: { question, selection: null } }) await wrapper.find('input[value="0"]').setChecked() - expect(wrapper.emitted('select_answer')[0]).toEqual([0]) - }) - - it('correctly highlights selected choice', async () => { - const wrapper = shallowMount(GspcQuestion, { - props: { question, selection: userAnswer } + const emittedEvent = wrapper.emitted('select_answer')[0][0] + expect(emittedEvent).toEqual({ + correct: true, + question: question.text, + question_id: question.id, + response: question.choices[0].text, + response_id: question.choices[0].id }) - const selectedChoice = wrapper.find(`input[value="${userAnswer}"]`) - expect(selectedChoice.element.checked).toBe(true) }) + + // it('correctly highlights selected choice', async () => { + // const wrapper = shallowMount(GspcQuestion, { + // props: { question, selection: userAnswer } + // }) + // const selectedChoice = wrapper.find(`input[value="${userAnswer}"]`) + + // expect(selectedChoice.element.checked).toBe(true) + // }) }) \ No newline at end of file diff --git a/training-front-end/src/components/__tests__/GspcRegistration.spec.js b/training-front-end/src/components/__tests__/GspcRegistration.spec.js index 6c2aece3..270feec1 100644 --- a/training-front-end/src/components/__tests__/GspcRegistration.spec.js +++ b/training-front-end/src/components/__tests__/GspcRegistration.spec.js @@ -19,8 +19,8 @@ describe('GspcRegistration', () => { }) const wrapper = await mount(GspcRegistration) await flushPromises() - expect(wrapper.text()).toContain("GSPC Registration") - expect(wrapper.text()).toContain("Enter your email address to login. You'll receive an email with an access link.") + expect(wrapper.text()).toContain("Verify GSPC coursework and experience") + expect(wrapper.text()).toContain("Enter your email address") }) it('shows start registration form once user is known', async () => { @@ -30,6 +30,6 @@ describe('GspcRegistration', () => { profile.set({name:"John Smith", jwt:"some-token-value"}) const wrapper = await mount(GspcRegistration) await flushPromises() - expect(wrapper.text()).toContain("GSPC Placeholder") + expect(wrapper.text()).toContain("GSA SmartPay® Program Certification (GSPC) Requirements") }) }) \ No newline at end of file From 033136f213026803bbbb8f888c23174e4ae2f32d Mon Sep 17 00:00:00 2001 From: John Labbate Date: Tue, 30 Apr 2024 11:18:26 -0400 Subject: [PATCH 12/24] lint error fix. --- training-front-end/package.json | 2 +- .../src/components/__tests__/GspcQuestion.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/training-front-end/package.json b/training-front-end/package.json index 441260a7..64fbc953 100644 --- a/training-front-end/package.json +++ b/training-front-end/package.json @@ -10,7 +10,7 @@ "astro": "astro", "test:unit": "vitest --environment jsdom --root .", "test:coverage": "vitest --coverage", - "lint": "eslint 'src' --ext .vue,.js,.astro", + "lint": "eslint src --ext .vue,.js,.astro", "serve": "npm run build && npm run preview -- --port 8080", "pa11y-ci": "npm run pa11y-ci:desktop && npm run pa11y-ci:mobile", "pa11y-ci:desktop": "pa11y-ci --config ./.pa11yci-desktop --sitemap http://localhost:8080/sitemap-0.xml --sitemap-find \"^https://training.smartpay.gsa.gov/\" --sitemap-replace \"http://localhost:8080/\"", diff --git a/training-front-end/src/components/__tests__/GspcQuestion.spec.js b/training-front-end/src/components/__tests__/GspcQuestion.spec.js index e414cd53..efa44e44 100644 --- a/training-front-end/src/components/__tests__/GspcQuestion.spec.js +++ b/training-front-end/src/components/__tests__/GspcQuestion.spec.js @@ -15,7 +15,7 @@ describe('GspcQuestion', () => { } // Sample user answer for testing - const userAnswer = 0 + //const userAnswer = 0 it('renders question text correctly', () => { const wrapper = shallowMount(GspcQuestion, { From 2988a32c391168cd68b222051829f88b3e028305 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Wed, 1 May 2024 15:29:48 -0400 Subject: [PATCH 13/24] Add testing to frontend. --- training-front-end/.vscode/settings.json | 5 + .../src/components/GspcQuestions.vue | 43 ++---- .../src/components/GspcRegistration.vue | 38 ++++- .../components/__tests__/GspcQuestion.spec.js | 36 +++-- .../__tests__/GspcQuestions.spec.js | 141 ++++++++++++++++++ .../__tests__/GspcRegistration.spec.js | 85 ++++++++++- .../src/pages/gspc_registration/index.astro | 2 +- 7 files changed, 303 insertions(+), 47 deletions(-) create mode 100644 training-front-end/.vscode/settings.json create mode 100644 training-front-end/src/components/__tests__/GspcQuestions.spec.js diff --git a/training-front-end/.vscode/settings.json b/training-front-end/.vscode/settings.json new file mode 100644 index 00000000..d2d15697 --- /dev/null +++ b/training-front-end/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "Gspc" + ] +} \ No newline at end of file diff --git a/training-front-end/src/components/GspcQuestions.vue b/training-front-end/src/components/GspcQuestions.vue index 8bc87eed..88699740 100644 --- a/training-front-end/src/components/GspcQuestions.vue +++ b/training-front-end/src/components/GspcQuestions.vue @@ -8,51 +8,36 @@ import SpinnerGraphic from './SpinnerGraphic.vue' const emit = defineEmits(['submitGspcRegistration']) - - const questions = - [{"id": 0, - "text": "I have met the coursework requirement during the GSA SmartPay Training Forum by attending at least two GSA Qualifying classes and at least five Bank/Brand Qualifying classes, as outlined in Smart Bulletin No. 022.", - "type": "MultipleChoiceSingleSelect", - "choices": [{"id": 0, "text": "Yes", "correct": true}, {"id": 1, "text": "No", "correct": false}]}, - {"id": 1, - "text": "I have met the experience requirement by having a minimum of six months of continuous, hands-on experience working in an agency/organization's GSA SmartPay Program prior to receiving the GSPC.", - "type": "MultipleChoiceSingleSelect", - "choices": [{"id": 0, "text": "Yes", "correct": true}, {"id": 1, "text": "No", "correct": false}]}, - ] - - //GSPC - //Id UserId JSON(List QuestionId QuestionSting AnswerId AnswerString Correct(bool)) CreatedOn + + const props = defineProps({ + 'questions': { + type: Object, + required: true + }, + }) const question_index = ref(0) const user_answers = reactive([]) const has_submitted = ref(false) let show_intro = ref(true) - const number_of_questions = computed(() => questions.length) - const current_question = computed(() => questions[question_index.value]) + const number_of_questions = computed(() => props.questions.length) + const current_question = computed(() => props.questions[question_index.value]) const is_current_unanswered = computed(() => user_answers[question_index.value] === undefined ) - const last_question = computed(() => question_index.value == (questions.length -1)) + const last_question = computed(() => question_index.value == (props.questions.length -1)) const can_submit = computed(() => !is_current_unanswered.value && !has_submitted.value) function start() { show_intro.value = false } - function windowStateListener(event) { - if (event.state) { - question_index.value = event.state.page - } - } - onMounted(async () => { window.addEventListener("beforeunload", exit_warning) const state = { page: 0 }; history.replaceState(state, "", ""); - window.addEventListener("popstate", windowStateListener) }) onBeforeUnmount(() => { - window.removeEventListener('popstate', windowStateListener) window.removeEventListener('beforeunload', exit_warning) }) @@ -64,9 +49,6 @@ } function previous_question(){ - if (question_index.value <= 0) { - return - } question_index.value -= 1 const state = { page: question_index.value } const url = "" @@ -101,6 +83,7 @@ You can complete the verification steps to receive your GSA SmartPay® Program Certification if you meet these requirements.

diff --git a/training-front-end/src/components/__tests__/GspcQuestion.spec.js b/training-front-end/src/components/__tests__/GspcQuestion.spec.js index efa44e44..2ae8d6ef 100644 --- a/training-front-end/src/components/__tests__/GspcQuestion.spec.js +++ b/training-front-end/src/components/__tests__/GspcQuestion.spec.js @@ -15,7 +15,7 @@ describe('GspcQuestion', () => { } // Sample user answer for testing - //const userAnswer = 0 + const userAnswer = 0 it('renders question text correctly', () => { const wrapper = shallowMount(GspcQuestion, { @@ -51,12 +51,30 @@ describe('GspcQuestion', () => { }) }) - // it('correctly highlights selected choice', async () => { - // const wrapper = shallowMount(GspcQuestion, { - // props: { question, selection: userAnswer } - // }) - // const selectedChoice = wrapper.find(`input[value="${userAnswer}"]`) - - // expect(selectedChoice.element.checked).toBe(true) - // }) + it('emits select_answer event with incorrect choice', async () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: null } + }) + + // Assuming the user selects the incorrect choice (index 1) + await wrapper.find('input[value="1"]').setChecked() + + // Verify that the emitted event contains the expected data for an incorrect choice + const emittedEvent = wrapper.emitted('select_answer')[0][0] + expect(emittedEvent).toEqual({ + correct: false, // Expecting the choice to be incorrect + question: question.text, + question_id: question.id, + response: question.choices[1].text, // Expecting the text of the incorrect choice + response_id: question.choices[1].id // Expecting the id of the incorrect choice + }) + }) + + it('correctly highlights selected choice', async () => { + const wrapper = shallowMount(GspcQuestion, { + props: { question, selection: {response_id: userAnswer} } + }) + const selectedChoice = wrapper.find(`input[value="${userAnswer}"]`) + expect(selectedChoice.element.checked).toBe(true) + }) }) \ No newline at end of file diff --git a/training-front-end/src/components/__tests__/GspcQuestions.spec.js b/training-front-end/src/components/__tests__/GspcQuestions.spec.js new file mode 100644 index 00000000..80d64f23 --- /dev/null +++ b/training-front-end/src/components/__tests__/GspcQuestions.spec.js @@ -0,0 +1,141 @@ +import { describe, it, expect, vi} from 'vitest' +import { shallowMount, mount } from '@vue/test-utils' +import GspcQuestions from '../GspcQuestions.vue' + +async function startForm(wrapper) { + await wrapper.find('#start-button').trigger('click') +} + +async function selectAnswer(wrapper, index) { + await wrapper.find(`input[value="${index}"]`).setChecked() +} + +describe('GspcQuestions', () => { + const questions = [ + {"id": 0, + "text": "Question 1", + "type": "MultipleChoiceSingleSelect", + "choices": [{"id": 0, "text": "Yes", "correct": true}, {"id": 1, "text": "No", "correct": false}]}, + {"id": 1, + "text": "Question 2", + "type": "MultipleChoiceSingleSelect", + "choices": [{"id": 0, "text": "Yes", "correct": true}, {"id": 1, "text": "No", "correct": false}]}, + ] + + it('shows intro section initially and hides it on "Continue" button click', async () => { + const wrapper = shallowMount(GspcQuestions, { + props: { questions } + }) + + expect(wrapper.find('.usa-prose').exists()).toBe(true) + expect(wrapper.find('#start-button').exists()).toBe(true) + + await wrapper.find('#start-button').trigger('click') + + expect(wrapper.find('#start-button').exists()).toBe(false) + }) + + it('Nest button should be disabled when no answer has been selected', async () => { + const wrapper = await shallowMount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + + const button = wrapper.find('#next-button') + expect(button.element.disabled).toBe(true) + }) + + it('Nest button should not be disabled when an answer has been selected', async () => { + const wrapper = mount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + await selectAnswer(wrapper, 0) + + const button = wrapper.find('#next-button') + expect(button.element.disabled).toBe(false) + }) + + it('Previous button does not show on first question', async () => { + const wrapper = shallowMount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + + // Assert that the previous button does not exist + const previousButton = wrapper.find('#previous-button'); + expect(previousButton.exists()).toBe(false); + }) + + it('navigates to the next question and back', async () => { + const wrapper = mount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + await selectAnswer(wrapper, 0) + + await wrapper.find('#next-button').trigger('click') + + expect(wrapper.text()).toContain("Question 2") + + await wrapper.find('#previous-button').trigger('click') // Move to previous question + + expect(wrapper.text()).toContain("Question 1") + }) + + it('submits the quiz', async () => { + const wrapper = mount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + + await selectAnswer(wrapper, 0) + await wrapper.find('#next-button').trigger('click') + + await selectAnswer(wrapper, 0) + await wrapper.find('.usa-button').trigger('click') // Submit quiz + + expect(wrapper.emitted('submitGspcRegistration')).toBeTruthy() + expect(wrapper.vm.has_submitted).toBe(true) + }) + + it('shows "Submit" button when on the last question', async () => { + const wrapper = mount(GspcQuestions, { + props: { questions } + }) + + await startForm(wrapper) + + await selectAnswer(wrapper, 0) + await wrapper.find('#next-button').trigger('click') + + const submitButton = wrapper.find('#submit-button'); + expect(submitButton.exists()).toBe(true); + }) + + it('should add window listeners on mount', async () => { + const addEventListenerMock = vi.spyOn(global, 'addEventListener').mockImplementation(() => {}) + await mount(GspcQuestions, { + props: { questions } + }) + + expect(addEventListenerMock).toBeCalled(1) + expect(addEventListenerMock).toHaveBeenNthCalledWith(1, 'beforeunload', expect.any(Function)) + }) + + it('should remove window listeners on mount', async () => { + const wrapper = mount(GspcQuestions, { + props: { questions } + }) + const removeEventListenerMock = vi.spyOn(global, 'removeEventListener').mockImplementation(() => {}) + + wrapper.unmount() + expect(removeEventListenerMock).toBeCalled(1) + expect(removeEventListenerMock).toHaveBeenNthCalledWith(1, 'beforeunload', expect.any(Function)) + }) +}) \ No newline at end of file diff --git a/training-front-end/src/components/__tests__/GspcRegistration.spec.js b/training-front-end/src/components/__tests__/GspcRegistration.spec.js index 270feec1..1c0acb5e 100644 --- a/training-front-end/src/components/__tests__/GspcRegistration.spec.js +++ b/training-front-end/src/components/__tests__/GspcRegistration.spec.js @@ -6,6 +6,13 @@ import GspcRegistration from '../GspcRegistration.vue' import { cleanStores } from 'nanostores' import { profile } from '../../stores/user.js' +async function setUserCredentials(){ + vi.spyOn(global, 'fetch').mockImplementation(() => { + return Promise.resolve({ok: false, status:404, json: () => Promise.resolve([]) }) + }) + profile.set({name:"John Smith", jwt:"some-token-value"}) +} + describe('GspcRegistration', () => { afterEach(() => { vi.restoreAllMocks() @@ -24,12 +31,82 @@ describe('GspcRegistration', () => { }) it('shows start registration form once user is known', async () => { - vi.spyOn(global, 'fetch').mockImplementation(() => { - return Promise.resolve({ok: false, status:404, json: () => Promise.resolve([]) }) - }) - profile.set({name:"John Smith", jwt:"some-token-value"}) + setUserCredentials() const wrapper = await mount(GspcRegistration) await flushPromises() expect(wrapper.text()).toContain("GSA SmartPay® Program Certification (GSPC) Requirements") }) + + it('renders USWDSAlert when error is present', async () => { + // Mock the error + const error = { name: 'Mock Error', message: 'This is a mock error message' }; + + // Mount the component with error prop + const wrapper = mount(GspcRegistration, { + props: { + error: error + } + }); + + // Find the USWDSAlert component + const uswdsAlert = wrapper.findComponent({ name: 'USWDSAlert' }); + expect(uswdsAlert.exists()).toBe(true); + + // Assert the props passed to USWDSAlert + expect(uswdsAlert.props('status')).toBe('error'); + expect(uswdsAlert.props('heading')).toBe(error.name); + expect(wrapper.text()).toContain(error.message) + }); + + + it('should submit registration successfully', async () => { + setUserCredentials() + const wrapper = mount(GspcRegistration, {}); + + const mockedResponse = { passed: true }; + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve(mockedResponse) + }); + + await wrapper.vm.submitGspcRegistration([]); + + expect(wrapper.vm.certPassed).toBe(true); + expect(wrapper.vm.certFailed).toBe(false); + expect(wrapper.vm.error).toBe(null); + expect(wrapper.text()).toContain("Congratulations") + }); + + it('should submit failed registration successfully', async () => { + setUserCredentials() + const wrapper = mount(GspcRegistration, {}); + + const mockedResponse = { passed: false }; + global.fetch = vi.fn().mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve(mockedResponse) + }); + + await wrapper.vm.submitGspcRegistration([]); + + expect(wrapper.vm.certPassed).toBe(false); + expect(wrapper.vm.certFailed).toBe(true); + expect(wrapper.vm.error).toBe(null); + expect(wrapper.text()).toContain("You Don't Meet the Requirements") + }); + + it('should handle server error', async () => { + setUserCredentials() + const wrapper = mount(GspcRegistration, {}); + + const errorMessage = 'There was a problem connecting with the server'; + global.fetch = vi.fn().mockRejectedValueOnce(new Error(errorMessage)); + + await wrapper.vm.submitGspcRegistration([]); + + expect(wrapper.vm.certPassed).toBe(false); + expect(wrapper.vm.certFailed).toBe(false); + expect(wrapper.vm.error.message).toBe(errorMessage); + expect(wrapper.text()).toContain(errorMessage) + }); }) \ No newline at end of file diff --git a/training-front-end/src/pages/gspc_registration/index.astro b/training-front-end/src/pages/gspc_registration/index.astro index b65d0a47..357cab3d 100644 --- a/training-front-end/src/pages/gspc_registration/index.astro +++ b/training-front-end/src/pages/gspc_registration/index.astro @@ -8,7 +8,7 @@ const pageTitle = "GSPC Registration"; - GSPC Registration + GSA SmartPay® Program Certification (GSPC) Date: Thu, 2 May 2024 10:01:46 -0400 Subject: [PATCH 14/24] minor fixes to title and background. --- .../src/components/GspcQuestions.vue | 8 +++++-- .../src/components/GspcRegistration.vue | 21 ++++++++++++------- .../src/pages/gspc_registration/index.astro | 5 ++++- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/training-front-end/src/components/GspcQuestions.vue b/training-front-end/src/components/GspcQuestions.vue index 88699740..fc2d637b 100644 --- a/training-front-end/src/components/GspcQuestions.vue +++ b/training-front-end/src/components/GspcQuestions.vue @@ -7,7 +7,8 @@ import NavigateBack from "./icons/NavigateBack.vue" import SpinnerGraphic from './SpinnerGraphic.vue' - const emit = defineEmits(['submitGspcRegistration']) + const emit = defineEmits(['submitGspcRegistration', 'startQuiz']) + const props = defineProps({ 'questions': { @@ -29,6 +30,7 @@ function start() { show_intro.value = false + emit('startQuiz') } onMounted(async () => { @@ -90,7 +92,9 @@ Continue to verify coursework and experience -
+
-

Congratulations You Earned Your GSA SmartPay® Program Certificate (GSPC)

-

You have met the requirements to earn a GSA SmartPay® Program Certificate (GSPC). Your certificate has been emailed to you. Or, you may download your certificate below.

+

Congratulations You Earned Your GSA SmartPay Program Certificate (GSPC)

+

You have met the requirements to earn a GSA SmartPay Program Certificate (GSPC). Your certificate has been emailed to you. Or, you may download your certificate below.

-

You Don't Meet the Requirements for GSA SmartPay® Program Certification (GSPC)

+

You Don't Meet the Requirements for GSA SmartPay Program Certification (GSPC)

Once you have met the coursework and experience requirement of six months of continuous, hands-on experience working with the GSA SmartPay program please return to the link in your email to reapply.

If you have any questions ,please reference Smart Bulletin No. 022 or contact the GSPC Program Manager at smartpaygspc@gsa.com.

Return to the GSA SmartPay Training Home Page @@ -167,6 +173,7 @@
diff --git a/training-front-end/src/pages/gspc_registration/index.astro b/training-front-end/src/pages/gspc_registration/index.astro index 357cab3d..a810eb3c 100644 --- a/training-front-end/src/pages/gspc_registration/index.astro +++ b/training-front-end/src/pages/gspc_registration/index.astro @@ -3,11 +3,14 @@ import BaseLayout from '@layouts/BaseLayout.astro'; import HeroTraining from '@components/HeroTraining.astro'; import GspcRegistration from '@components/GspcRegistration.vue'; -const pageTitle = "GSPC Registration"; +const pageTitle = "GSA SmartPay® Program Certification"; --- + + Card/Account Holders and Approving Officials + GSA SmartPay® Program Certification (GSPC) Date: Thu, 2 May 2024 10:06:06 -0400 Subject: [PATCH 15/24] Lint error fix. --- training/services/gspc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/services/gspc.py b/training/services/gspc.py index 5d0047e3..ffe64741 100644 --- a/training/services/gspc.py +++ b/training/services/gspc.py @@ -25,4 +25,4 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: passed=passed, ) - return result + return result \ No newline at end of file From 965d1ba37dc4bba985fd9349ea300db0aeaec98d Mon Sep 17 00:00:00 2001 From: John Labbate Date: Thu, 2 May 2024 10:13:01 -0400 Subject: [PATCH 16/24] Lint error fix. --- training/api/api_v1/gspc.py | 2 +- training/api/deps.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/training/api/api_v1/gspc.py b/training/api/api_v1/gspc.py index a6ae43e6..6af2c9e3 100644 --- a/training/api/api_v1/gspc.py +++ b/training/api/api_v1/gspc.py @@ -59,4 +59,4 @@ def submit_gspc_registration( user: dict[str, Any] = Depends(JWTUser()) ): result = gspc_service.grade(user_id=user["id"], submission=submission) - return result \ No newline at end of file + return result diff --git a/training/api/deps.py b/training/api/deps.py index 78732668..4933df7d 100644 --- a/training/api/deps.py +++ b/training/api/deps.py @@ -46,4 +46,4 @@ def gspc_invite_repository(db: Session = Depends(db)) -> GspcInviteRepository: def gspc_service(db: Session = Depends(db)) -> GspcService: - return GspcService(db) \ No newline at end of file + return GspcService(db) From 1cda6477f11966700f9cf49f5763e8b9251d3bc9 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Thu, 2 May 2024 10:14:47 -0400 Subject: [PATCH 17/24] Lint error fix. --- training/services/gspc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/services/gspc.py b/training/services/gspc.py index ffe64741..5d0047e3 100644 --- a/training/services/gspc.py +++ b/training/services/gspc.py @@ -25,4 +25,4 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: passed=passed, ) - return result \ No newline at end of file + return result From 79a3144c11ab8ea35b8fae7f6b140acb471015c3 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Thu, 9 May 2024 10:33:03 -0400 Subject: [PATCH 18/24] WIP --- ...a5fbdcd0e719_add_gspc_completions_table.py | 35 ++++++++ data/blank_certificates/c_gspc.pdf | Bin 0 -> 221933 bytes .../src/components/GspcRegistration.vue | 7 ++ training/models/__init__.py | 1 + training/models/gspc_completion.py | 15 ++++ training/repositories/__init__.py | 1 + training/repositories/certificate.py | 1 + training/repositories/gspc_completion.py | 17 ++++ training/schemas/gspc_result.py | 1 + training/schemas/gspc_submission.py | 10 ++- training/services/certificate.py | 20 +++++ training/services/gspc.py | 84 ++++++++++++++++-- training/services/quiz.py | 2 +- 13 files changed, 186 insertions(+), 8 deletions(-) create mode 100644 alembic/versions/a5fbdcd0e719_add_gspc_completions_table.py create mode 100644 data/blank_certificates/c_gspc.pdf create mode 100644 training/models/gspc_completion.py create mode 100644 training/repositories/gspc_completion.py diff --git a/alembic/versions/a5fbdcd0e719_add_gspc_completions_table.py b/alembic/versions/a5fbdcd0e719_add_gspc_completions_table.py new file mode 100644 index 00000000..2d768acc --- /dev/null +++ b/alembic/versions/a5fbdcd0e719_add_gspc_completions_table.py @@ -0,0 +1,35 @@ +"""add gspc_completions table + +Revision ID: a5fbdcd0e719 +Revises: 51b251b1ec2a +Create Date: 2024-05-08 10:43:09.569708 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + + +# revision identifiers, used by Alembic. +revision = 'a5fbdcd0e719' +down_revision = '51b251b1ec2a' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.create_table( + 'gspc_completions', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('passed', sa.Boolean(), nullable=False), + sa.Column('certification_expiration_date', sa.Date, nullable=False), + sa.Column('submit_ts', sa.DateTime(), server_default=sa.text('now()'), nullable=False), + sa.Column('responses', postgresql.JSONB(astext_type=sa.Text()), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id') + ) + + +def downgrade() -> None: + op.drop_table('gspc_completions') diff --git a/data/blank_certificates/c_gspc.pdf b/data/blank_certificates/c_gspc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ff9e8564b2bac3618565455ecac555275f240bfa GIT binary patch literal 221933 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%0An_; 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 z zaEA5;(Hq!?#vu*d^LLJe5HWBiTEDjBR0Ll*y%AiGAtuE_4430SI4y{#dcXF4RDW{; zT>2|=CDlvrSGyb@`UEG82oXic+w>oSRr%05N&97&!4p>x9p8IJ?)>79`L%NFdwsjX zb=>d!VS=fa+YtOtr>#~yDQ;cSVvhq(kf5r? zTiUu5LVPxPf{Ab^%$MK#pRyySQuqTGwIb9#>GE|{NO9C_k9pV3p_6AJx+2PS zIZzu3S3H@&u-WgoR%ufM1x^{8pRO5xy1`G;12pt{4Zf?uRbf*FTtE%$2k2L%hEAnD zn!EAJs+-9tLs5PeFe-U-6ceBv){uW2klR!^jnk=E+ zsw6u1MdiOodjSN6lq=%uu23Xh_I!vh$x#*dnT@E`#9tEGmULNuSxA1_)c$h16|L#P z3>4CUKlI_^Wb$iM-~E%L-Ym=4X+-e9Gps~A1Tmf)72?)2^?K_NDrZ58VnP>RMyJnh zle^}WtVo#MGJYOY8i$m1kBI%tf=!TERuZ1Qj?}*@q?0?aU zB5H0_v@Mdk(~Ju?5VSiXIkXdM3Rt3t^0yqOKkKzzr&mqWeFvUa0F0&q*uvF0^Xw8t zDv|cF9K}sPGoX1@~iI-S~qH*LuOwGRJh&!B*47`$E7Ev&O_ocmz z+J=>)1r+4w)gE0N#SXyS4;lzRR)omJix|}^riF|y>T*YM6d{BrhvtSA+0y9{23%^~ zy3&;$!a4JYx3v@#HXuszsir)x(ax4C4Uc@Zv1Y_}4ue+(6p+ZrDs_{IB!n%W3r$Eh z_O+0Qg}IIo5S@OSQyp`FX6?u0mSSYoN|gY~GS-zRPDMfpCGINKZe zij_yF>tgR=TK~B&#ajC%U!+X&oMJ}>&$gL+SA`QxC{eRl!^^rBsy^;&Mniy)F_XZc znpSeA1nAh~K1-b^1!e)Rg$#2NjQLkLG3|?-QA~p1~Kpq zKxx=Ruc%Aj-`G+`Y8nK!1epZ9>t>*0`vXaOADQz5qkS>!FE~lJ^W<9d_^K0R_MD0< z{%1^F3LQU?DJ-x_AXaCA+cVlj{BcV4G~eXmm(-d!8{T!6u2Zk3v}LvBvcBR}-uF<) z0O2975EP7SH`)}K;i%|c&^RI_5(16vPZ23E4k0`(yys~$=h(R`KKe=8*Y$o#be8qy zkz!azpC1<3TjSp+XKpkxH;g-a-mCXAQVhE-FpR!M@Byu71}C|icw-S%yRbornQ&!* z;YH^qiT0*7C-;$&;!-}_ybS|@#;8Ixg(i!d=HUe)U^~w|vWIrs%&HA^gZ43Fe6K;Tj9 zkK0m;KDa)b6UXDy#@aYNhMJQQiv#5feZ(A3>DWIcMU9qMZJI$zC8wGwawa7Emb0s4 zSPz^5~M9!m~cW6;PeL~^f|ll9EhrYhc}$+Fq3|Yq%cJ^2aoZ(pLh9menqthj~@uIg;DsP55N3?-(A{&ye0kfOte9Ip5iDYkB%6(BX6C4cVt~+8cI>!l+Aj-$z=j?N&cq zuz&nh(8JqxkIP7>9jF9Svji)wvKwhV`r}DM;?i%1;#P&HhzWyM^*En`k~ptFaO6 z*2(pPU+FhqD>20%>Nw?g0i^1wGFoP79o>@xxy&XrYbs_w4}5fgoq|h*=Mu{~4cK<* zv>H3p29e#h?d*TXv%isSDcCf^QsH|KHdV`;zy^78RIqfe>gWNsk|QJP;sOmqgN2L< zH)CUGj;>aFrq7!VjEX02)2c6sm?1lZ8pf^d+sj-Foik6W)N55Y?DUD*hbIm9pH{1w zxWKP|Hc>G0gy~jU$F#*~5$@Ka@09O*u(nJ}wq37@=FCILh1`{Di#tN19%^5C_$Lcr z*gop7xO87qH&c z%4F0!TP*`cuZ0UmV<^dEJz}PYAU*4XN=+dwOV=8&noUSt^pqRV9!+G0R7*xIhB2l~ zo67&%?hm0SWON%^GE4gcrd`P#caDn1{Y{G+5ZN8&ggx6(Lt^t5{}d>7=UaG)lp1+( zDVNs7X=pkBskvGabRz4@U3#I^$U|6hE%5@QrBSei9H!wPFY9G z_IoCw#S ziLd6<8rw?!nTk(r!lEnl-LK^H=BKO{^kt)%B<8~oI`tTr!#`t+{jw^<=r}GdB>G6m zm3eDw{c?h+PvrhXHB2`-jmvdg1ujr4=JV(3>ZA4R39yp+xHPcja7-@L%%bLN%AcC= z-v2y4cWr7UK9|F4L&~RR%t6cNk2Z;UAZyIm5bh=S12W9nn$-5@vhG8pibXjsA8tYN z?gO&6oagwgYB^NPkCWPdXEh&oho|THELwxnr5t~)hn6p1+p{U$R|#KrF~$Dvlb1ak`qn<5qL7h8YGI z=uClg8|VzUXea25Jnko@osY`-Ezl`&#WM;5^ zEht>cl$w8F@dK4z%rjq0<&k6zZbj16WPdBYOm;>3PP6d5e0ldCEd4nz@qTfGs0FMzZ--NKk9N3hjEv;{MH5fRiVn+3&LMTE~5kf+(sRwao%-IJhOWlbF zU?GP>_GLip682D^Jt(Jl`E6k!!!q4JTq!-a#`7R~b0_l2U$K6=i&uzc%G2Pj+|NX1 zLDROBL!VY{hR}=JWjX9QYNP_V(#Y>Q8-gS5x-H01epkdVZDHEO4z{!F` zxoR6icaF>ypzinkoC1N_oX18{xyR_W0KAGf^72}03;>ZP_h#jbn({`ZRqa?Dr`_IO zU(|}?0&;m+`_vax*9UuQZBG#lo31&@*hsw*0|wz0+r=ygAV#(-5m)!#-5U>Tf>6$<+jY2^scL z;#PzGT9vK;Tl3~Y6xYs7G8A3-D9_Sa3N8P+@gRutD-$efrT7Cc7R+;gYj- zJ@vN@kIDR=umjq3$<_&{g8%-=X(1~YJk=OYbPgc+x=>yR`(hb!1M4u^^7+(n0Q-CG zRO@BChHkuqePM({U#&3DE=AXEaC0AXkuX*0KKE0*^Ji|6@f2!2l$WukA}@vvEe0SM z$O5yXP}TDbIQ~GTJ6{cJsm)tp`4p*vpRU&V z52pioBwVl%y6aM(?6Rks5l9`sHLI~u1O$&QF;{y;UvwPhb@^9*Aht_4#y_a^HhOBn zjd@B;M8qJdhYV~@4R13G0l4C+@U)7{$%gK%e1ro$w{S1t=9Jg zMVK>1lMe`<&C;*FST3T)c*?&X-w^|3-;Gf3gIBXE6?MVKbM1Y;m#3NMc8wBzZ7a!% zgtl}W>1CsTRXv#*m954#nq2#PYrDFeGXeZx-9mhoDBmpEa8our{GMGeeE{}=PkEhC zWM#JuZE80LU6Ss+ffZE`fndj*QE0rZ?qYQAy&F6mx%qb4yD(^CPq0*`MaY~JDAue! zz}^?904N#E^nV|J_+$~p=xP1wH)5vD($|%xDRw$lA$1@hL;sc}9)s`ZMZiw~{@}lQ z?BK^Kyj=ywV_0SNhtk4dJv>Lf&d7=N<)^~Sbn8P_f zAF&z=y_D%tdJathx#8>|(b`2O&%8SMZ@kYr%;;mz3b1a*qEBB1q53No0uAG3ohLQ` zegLYo0G`v2tcPEg%a^o(gvx0Fjeqv+>756*p?MDceD{_jXO1F4K#z#x$xUk$JOx>h zZ%y;r6JLoM0#cquo=w0sZ39morbt0vohO*iRh>8ZkK;>HwWm=L=yGujtUy&hgTwp5 zMU>w=d%`X84ZHPG*~{91|L#o?b(*{zQQFOL)GGSn!6n}MRc0Gp{G#T42tzsAYqMuz z3oD*n*^S!DS^J{Ot;!VNyO^D2ZtK;oV^BT!Nm;}Wr#sRp*tqtZyc2PnMBR;w{|Qjs zic-DUsN@06o*w%oT9mn*{{+ScDiw{y5ZnsRovcW3{rPKfX4T{6&EMTm-N19r2c+ig zNyt;7HIbi0GECWTQL0kd1|n+j*SMU=(dTTTh;xU@N+BCD4O+^<|JGT=0m7Cn-fEel zc|UCqV-_vtpxDH;GF6)KoIp|<=m##IAe48FMgk6Da6aN7qfYLk;U9H$B_iSA7l{p#awyxjpdN#bOYR;+PIL=EKGk0@oz}eN9 zGwJYE)Xbw1lWe4OMKgN9nR@It=AaR?IyWQa*jA={tWjUy8*q{q?u?fs#AKqI1FXA{ zcv^%e#pVuIc0K9XXO_IzJ~Zx#XrBXoMd}WRU@Dt4c*;(iE3Cja@kQDi^lwXs$AxPj zv|bbGzthTzr*@fTuWk_$;yFfYwf63Cfce$Y#tYhUr)lObUlIGOV_GwgRj9Odr|o{J zr%VUjrHi{IVyDe{qZOU~c<8~=AL95SsS+=1LMns$BZ)82>QNwbAw$-$82dl52E6%q z4XAS17n2E*IRxxj$%J*roAT&deKKKco5KqIcoJ&C-jP3Fh;P%Fub6c$Ks8&*Pu6WP z2W>Ll-PYYRQx8nh_N$CrS2(IHD&Q&>N43}h+aCO|%B_?1gFE^@lec&^Oq&a?bD7n9 zT@~_~m*YEPKKJl|Ivc``UY48dCGI20k2X$!4Hr!WR^P;z#S3jQhS8OcF=g+D?Q)TP z`GqYP6pMdTCnBQZmFtFx{Od?aM&irn*8m8BY%H;;*-c*_Tf3~wMu^706KI#wXSj}dg`s~--RYz59a-x ziVUYYV3QM^LvOqtfl?@{Bvt(no=>g$w_3YlQqGyiCJ{_lz5ec1B@inroPWc~R|m8_ znh!J7{LoQTM9HOcI=e$!J=6}kP#iJ708mfTo^{IdfVt&uTxHnAbUg3Eys~8V5G(#V zouvJm!m9V4f2LoNh+64q{;_V+U+17rqU!MEy!kEAap4rr+5zm=`3>tVUzxuLjgBJ2 zr+#Tl;d6OhMs;0kw%Iw$p^Y3$H$6Vn|7$IE%?9Kh$lD;8_jTqQ(JInfzS0OivL>fu zxt?y%IP%!=WqtT^ORHRKWmEzN$Y{8^%bsw&Egkud5B*esxWkA|CJU`j8J1qg))d)) zc2Fn)9PQt))O-`ghr8TvBf!Q}UD4%M;hRBh*`5zNqI4ZWN( z?y*UuKarM5{ow%8<<{fnX!J#_sGf}P-iC}{mMRSd5I7WE43w}h153LvzQ+U7?9OI>XzOYYf$PBp!$}UPMY*<=25kLsoJ_*`=aq@Cld+l-diEUli2Zg|04o{FP=W|R z^;nq2P9IH=%$*Am^*NzC?asa!JLXW_@x%y=mH6g$mG**^m5f{{JZj&m1E+Q4wQJPT zVBQOyKC+KiEOunx-&^}Avl%cx4as^j)|mZrNCj|%16Rd`R$_Sy8Ep3inWR^~tVosT zvNR|~!Xk|#dWjV${cj}-_aHf$N}zCQ`vF}}-aa8At?1YC-nZTiVFY<)r}|<(9&fcx z+d%H)92wMRID|N1HvF^Zs$2^C<GX> z^0uW5S_x5C@W_JxQ5jZ_J=UD3H*o?Rv$A>=I730!Hxhgq5M?s&?V*2H-m0qrE>sN_ z)2lB4QZFwCy*ACIxdn%{yCipbTXkb$LEr}onSyfT{Z?V{<`P&w*BuSWb`H821jaGp zQ6jzLGS9F~gw2_`%~fs%_1R}{#xlLojg`$-47^9d!t9y@7P6#&+_Yt9gP!~R1wmOeUMOYW#zT9 z#*x#x;-$(^E5dfOMRRIdlI|(A60Ym|bh8As>f_{#CVMAC=>D-ePa=*s%=t@6pq?)K*60vjf(;1a#LzB-9Rb0`z%3n!Y~B zWDyb`qhJ#UA7jCUcmjwWqd-fJ)}oZIqxuKvKb*Y_Jd^MLKTfFRR5|1nBFU+34zoG7 znayF&c5q6=*lg^)nL`d89CJ>kR8k2!RC26P2#LrkNpw<@6r~jY%lmWwyg#4c=lj1O z>~Zh9Ua#l%I$!th-Mg-Zr-3ISHQv@#i6i8%kMG;6`8{iWoer@$wp3!hyZxT#xRS;x zdGh4wb&gXKyd?hKy9 z=>vOG8kwY0CiUQ9Y_qMjxAAN8r#Y+OzT}t^o&2P#ovx_;A2z%CR=K9e?B2#pf2~Uh z{L&n8J-f~>5(@|>C&Mb4N^%u)`Q{v?Cq~!|5G%VPEc0Z|LTlrjil|Tzbi&Dpw_06` zLyHT`nZEDbe6GB^`cAv0(N6FSv-+i*hx3cVett{hJZ=YwINbaNtY6&}VY^&$Rkq)> z0qVN+@$SnFu6FvgWn(#w^vmrQhm%6dlG-lW+Jpq-pV#po5shveBECkcSMwfNy#2me zgg9ZGjGI&c9IbiHNu3ZKD19+Cb6IWBk>=Xt?vAw%oUrtE?P+oi*LnM#{3->?1oa8d zqK8uWYhMnr;2H4F1#!M0(X!NI;B)yp_nh^0YY>pc*emqF0xNY!h4V9oj-L( zzjG&ha^S7ha!cl~4ogY1*TAbSyiNxEi;K#Hj9vpM>2f3F>nRZ@{lf3Dh*K7Oj_`ge z()OH##NOVvBE%c1@?431sZjhWdPXv){bz*?Cf89f8Z|85scFObaMz*t1YkH-{&`8Y z9KCI{_GHpcE4w|)w%a~@lc@MJ8##wQ$y5X}_mN!S21nN*j|te~EZDe@7~= zU}CSO`vt%O#!hI$_NT ze2NK-cv$D#D4H$URa{*};q*!O)Rj}hyy^Ibt3NPzFh77|HXnuE zb`-rhi+hQwA*osDk2da>I(GV1!4;XpY*c6Up?9|U*tpyW9dFQDBOYE?TAoDv>pg7F zZhZH7d<*$u-}K(s?P?YB6($cZZZLXwDAIK-3;xFFWx<8fa#5Wf@gA??h?|go6E)a#y&}p24a2 z*;j6UD3xUUPuxcEeP0dz^Z{6oPaiwdQ{f(Z;`&b0?tR9OV_yWrS&4?Yn1a%i?0k(> zH9x|GH3hy&;>)HQUTS|*S6{kQuW_maPA%ic9Y6bxscLlG!#1QMzW;OFnU_Lo3nd@K^|~VAOu{KES^EX$ z@@q$B@|WJV)lbTfWS+?2HR+ zIc8{PA2r#Tx_r9p?E?Rflj>1%iUFVZ5H`Ni-+sp? zFOy_pooB=8DEd_@mGot&b)L-qy(hnvf;x&~Uc2Z5reCpG5xvvlkf&nP`ZIUbdvT}w zlMXM4D;+BNy0g`JnZ40Cc8#K}e|YizOvp;kA?MB-4EVilM(~+M@t-mHfTDtx8+Uu_ zoR<+|FQf->XBTIg5!f#wu?NmxlD}5T8+2MOn*@J);Sb$;$#utNOTc^mmRbRSE%nSI zKyu*4F^$-d$C3^&in9Po-{j+s%s$E*ttEaFXX&0?`r(!q%$zuR=B@UjL|UsJG4z#FgI@>tAjoCLc_(B~qpTp6r5wSD7w6(uZ@=7y+afvpbLB_;74(k2#l3@FY5iI@idPm- zb)C6*g^>O*j~eF}`R?V(d(!Y{HhCR=k+=4xe^5C0ZObPh=cSkIwVomiB05bMb8y_t zEy4fR?dWsj<+{t)^Y+SZkuN@+<|A8(KkZnwd{~0J?TyJ;dtM*ogo=c--6b{08%FSR zGbdY;Q_b`Gngz@395`_s{wGhXfd7}LRiHrAe_3Y7qP9j?`eC&Et%PQ2#RZ?f-Lm5o zappPdEroMeGyGx>QoX@(J|AB^?I?-8mD#6$Z$N+2O>@QZ;@U5-?X$m{%-NAvx9&!&Am{cA|+`SZ=I z5(ZzM&zxKNSpDA7_3}N>#^I0jmX2FDVgb4@OuzH4rwPrB(>dSbhgAD0A3qg{oQr7s zx|(5{;KkiPo~#l!cgODjyzEBR!)eQNo7+4N1ti%{O=wk$Upvn5u~=1$y?6RXzOA1! zgQkWU_qo(RLN0&v%%W(9S%3X;kzr`$%!>Nc%JJJ{kA#vMwx?NmJbAZN-M;g*ms8e( zWYOcg4HE`K3&AfWnBvpSpI!R*OD$o|6+oL86N*mtW(>{w?NVzG9aWb;Dtv2#Z~2i^ zTCNZ?>5lEl#jV=jr3DlX_2vbqUX6ACBDtFcUWQI{&8hp^`#BrGMYnCbBy?)-*m>YA z*tCJz$ZjULnLNAczMeH=#i=(7KqrKA*p(}dc_^5gNR zBVPa&_DXD^SAKk4d1N7{eWm;$)L_W-2~1n!**s8s;M?)B@7!f+SFFLQ-AeZYJ{)d6 zdFzXW&sK@)x&6I*lM&bN%6HqI*E)Ifp5}>Q-1*mY)JKF;xw0JXj3&~`*_zy4sJCh# zC&!L?qNU+Z%KEi$0yT#8wNNXa0 zD>%*q99JWH%t}Bg*K^kge(oy@JsI`>RkHX618CrePD+4j0^z-RSYq{HLxvB~agSZ; z9;tu~##+)`xvD8yu&j-2dA6`O%0;No|IwS>lUh1t2k6w2dF5Flvx=&-Cf(05xqF7= zGq8`>xP#hX4m4To)8j&Kg=Pv5tdxmsK{_z98}aHO*oKZ(j6z=G*JSbSoy(BGdy*q4 zbZ5eZ8fX^^QF%)7@HeeJ7x3X#r{WVi)`5vy-H^ZytBu<)oyvNVnXmX`rgA=iaFmiNQQZ@<#O9_=zBSV_daEJ z$;ql#`$o5k9_wEeXe|c~Oq7ruoRXJS>{djf3vl)`_lwp1u1QYz%)7bDiFN0-UbJ+9 z7LIOdu0`(fJd;e7nZM5jnkcBo)=Fi?yZ}1w$e*iVeZqtMt3t(Z-x)f#RrejJ0-!*- z-ZI2DJ5&@k@+5JqL9w=<^1^vV-7%*)@6j7)0xq6>Ble-%2#s@4QlJeLrzDk{`Vyoy zpB7uB0#6=V4cBPEP0$rSsY+fI&bJ**d6*EO7#aDdL2q}5SnAsy_kEKCt~--PRyT!= zU9h)VwOjCsGH6`MCtkixTN<ybIi98b`aY)7J7)GRW~d8P_UhL7agO3% zYc*<`Fg?J1U}0fR@)m%8EZ_}Yp((7{ZX(DC_rdPi$xqqZquG^&{D?e}b5FSQnjh@z zOM>l0672kGLrbDT1x}3^(EPP0#Ql9ry`>5Uhwb18o#ic5(jV>G!&=O}b5?wQXKJ)y zF9p+tCNn9U8+Zw@slQS|c;1#3j7zj()l?BnZTgm+k~|-~f1reuLe9P7;;BXPYW*ed zqFSqr<);}}s|q(MfIR3)VfCYXg)M7Oy!sp#MJt1;L}G@p-w%pV4NIA0DfTI&o5aw+ z7!Ly_=YzgH52C|}1-0yq%g3~9s?$Cucof2fO-G}fAEOd?BRo|O7OZ7Hefm}&MJ4f8 zCmC(!SB%fdv=qz+?N;o+?fj|jz{j4MS>37Z`}$K4JI}3Y<`-I&gG8zo&V2WX1}$^J zxmgw4g4{u4TlJFoAwve=mP_&yJ&Ted=BF<*(G}ro#%%+TJQdpm>BQV`*vkJh` zrc3A6PJ7A_Wag@tCF2e99c@A6KuMjFN7t7mv^yRG=VRqA*I3-N@b#K#Bd8j&SnA)o zXPuYjpY@c7F&IO+iQD}OnD;JqSmz483^9&>D0ShH1uqft8h2A?=1ZFt<-_h8`5o0! z$L-U1R-06bpZE?h7)dw3_Rt3*{jR1SenP%$-|Ci}6%`7&p}M*zSIzn^S+!{50XF?? zbx+uUU!lzHl1Cn6T9VJ7*}AMKn4eL|ufl&LK|EG{XMeQsx1U>>r`4se#u!6}>-5)J z?w@g)dAJ>isfdE+k;iVAMrko|My&ZztH%?&ekZ%?dcpw66l zksXI0Jil$d)O zeuM(wyLQ_o0{pVS*c7wvsVFELWhgjVq@zDQEP1*S>!ol~sg07IdQ{_g5 z)%9q;gb-NghM3=3Lk+{H8zPS^KG`5d9I6v*88|bpaByk1PE4`*+p`UdO|>)$A?Gh* z1(tl#^8skl2~1egzH4IpcZDfSW@MR4yqPSr-jS5v>XGkI3{a&%A)*Vd?T> zTIi~8^nKWr-exOSFX_1?cbR-El;&u$p~&mgwr@4SS#w26d#CH8zmA-di^gM>Lq2!4 z?z2ow(~qQ@o2KFR1Xymnwpl%yHYPLveKYK<5-0&x;iCBnfc@%l?|^!X@9dS{gf!Ef zLxvA`t3^iLzT7Tdw(WU#z+l*;aG%9@beElPxqO7)A;hG9Ah{G~F!!FL?vlFXI@2Ov zCniz&ppEE}i}uUk$ZJ2=XMP~RUSZ|-G5}Xa2e*j@2&|QzSDIBJLcRY^o(!s4zIBa=PI=?1SAW0 zV7c#hULJp1?P~!I8$MRfqxZC)s0eEqJ&3NYJmUzWs&l8l`|5w1z0h$Nw zo2$g?UbqakbC&=cp&}i6!!~W_EsjKDVjz#4lZMn{Eo3v^f*zc{v}bx-$8$BQBLk<` zYPDXi1>N>x>US|FR|{YIYe=nJ?E@`KZVZW<^643m>)!^`v#H!L2An+ElZQx^+~|M+ z>A!5;K#>>I9y>J?`{8{;0{QZz4?i_p4~wg&C_X-tv{&Zvf`Uynap#qb$C8^4dWtJl zNE{f1E9$t4*doPW>%A&D)i;z!o4WkvbBUP{Th#IZ@aOoL!$!q2%X)_cJvZbZ8PN2i z9sSs)sA~nr@3ep1M%rfX@SH#XiOwV>ht+OQVDKlbm$qK-@jj9@Zc_Cf`#Isvz3*v_ zgZ8p&j%x<@ZAD@EEKZdf>etG0--oIleXq;HW+q$A*493Khy$<}zKfVoK297_ohv*!>pIY+v z=;6tuDRSq`+R+gM2a7WdqC%z{BFuc0kx|<|izqf1I+?$1c>O$fE@6N1w;fpT){AjK zkM9Ag6py_HCfY~0c~6YUR3_>QeGR_5!%ybXNk>%?1>58cr;_%WsO%p8@#Nv;M&;am zU8~C6oArg#C1*0w`6%Y$8Nc2wk#_utn6irMR>5{NUT4ycJ*#Y*8@4^4>)b5bXRzcn zb>sMR*_Q#B(>*#~d!3G(9ey;(#XoTo5~f>z5pV5!_rxvzGC2P0iJ9uUD_A<sV$k z(Iq@&c{*C5`^gQuv`y5|z8B^NgQbfDaj%WO^3&cHZ?X0p-YBaXy?1M(ZcZ&-v1QEs zwqa6E_^j09M_!*s&R8aJWT%C?Tp#W2KHdKFifKy5g39fZnfil??{D~p@)px6^JGwkWG|LCfHgX;8x#*lFSmX zilYqD=Bx)hTl5ZYxi}jA;0nKFpe~I!GZTH?L9?~PW2(7!mU0fmybK|Y8TF4+>qpMQJHYE z_WX4^IbHnemThv+_M40GpnWx!FQ>M&k`3R4rx}{=Dk*&a)Fz_8NWC@vXHm)}v%Y5{ zUf14Fsc^G4`+q-vXQA<|xhidn$yQJ6|4fo>4D!2PU|`8X<@hUZn{r2fdaSCRA$+ay zwFPQ(?!#?HEi<_zbt*L%bTW@OrR+&%CEISdkbNiEi)?po$HoQtoF-Xhy1Z=olWKft z$g?Lw_q5?Q3mf4gPiONI?e8s6eHC<*liEDfZM6d0jM#7M1xqZA_fGzJFsP_pCiA}c zS+#9GMs0?B)8{MC@BOIwjF~l?2zH&y3W{#K!+GqlO$$|94B>3*A4-amvapg)+HjqF zD#O_2zC=e6u#$J=yIcA*WD9I_^^kOos_15tehX`}mHq|JR^P&%M4?Yxzr@?3-drcV zzhHI5r(pXjYtgW*Y?0NiFMswX*^0wnBOB+%YV7vx%yv8%npf}z?GU+FBHQ-d1*1zY zeG`T;cQtSIRXP4-mFM2$(}BpV@+XhLT8&TM(JYERGg%Ug>&G?x&>Ri_sdtqYZFH*N z>d{a;4yBst$;(4DyxDSbbHjO%bnV3E%|^{zxBE43d(Am`|6$sZmJ;L({mzanJ5I{h zcUP%YV)DVWcLMpyNW-Rq_7CH|d#d8I$p=(3%gq&pb94*1FZXDFdDHebt-55Vrj8ZO zLY1lyzkCmaro0~SviQLHbS}R2EJsuIbA;L^#9-sQfmCt`WpkKLL4HGFn%0((Zmy$Z zRaqyud4GhnCKUWCr})GI{dJ6*xnIF1x?pPv*g=(yJ7k-dO%D4cPDc+kIHATkmrOD$ zK9hTS6m?$8aYi5H8{2j-N9U-OZlI7;(N6JsrycNeWh2i_>d@3OKgEppL*m_QKb12@ z+t)mQIez`|tzqgX-<2cd>7qhYx-c~xeKUNoaontZcFx&!pov^ed|Z^fZYV`f@SQJs zI3Maabf;fz`Qdr#JL;cCnU=1Wy;`X=5*!mi!um(G|h9G)HF#gxK)ctt{P^4 zKXjPYSswo`P)GP&xVF>WHA+J{xkVc2S+yuRmOO=sARY@sH=mqlCnSBC&8++>%&Yzt zGFq*GRe!i2ku2nrH#HkT!`M4 zS=V`e$yY)!@xG1+ekWqyi9W6|Siq!po7cajdy3q3ZE^+a?7V)E_QhJ|ZH~x|^TTgM zKLaJNzCvuavl$lMe#*zTEza1+q3e5VPUrIj71f#Doiba~&4$gb?zgBtw9lGP#@<2} z<$j)*#vNQnWhsBX*K z{p2RUy7QPbi7mIQIla6-WK#`p#_9BkN)7M*uu&}5&^tyAzp3i_hS){r`7%8fz>dc= zJxe2L^e9Vp^C^k)*>7mT{ci?EXgf29q+{DWOpng)>Z)u%Tc={^_x8KqIhnSWy93+D zAU&~&7@dB1-*?j&snUn9Y2_wqzweO+&^ag-r_m7kUsoD%10&j)eAz2a(>bDz5)He* zq529>JByxM+KDMZ+X=tlCYD^h?F%wM*~ZKI>s+Rf(aGky>$kR^o&C&lk;+w(ul8YY znm!v9l2M)2US>_CJwbe^yS5VB%osncvyAeQT2+iw+(8&0v>s|H(>2?YlSsItn2YhSYhejdO+HFOl%zUOIZPjSotvFa# zKIGvYe7Vb+XD<%Fe0MhGH3^aQ7Q?YUQ8(B)hTk7GqBE>r4QLoUYOr$~7qu|*fi`hy z!)MHEsmNm8GrqraAcG;+y9uK3P>IV|;a7hoYFv@IoVXFX+4=Ukc6!&*()N4V+RM9y zzuyae`24*5Mei7;M|6igg^Qj#$OD@xDRV~(#B?lvL^O5N`3|Usm$~CTMU}j1-#sgp z3#>hvQFeiPZ!V=h-aNIPl{*(dQdV*BqxKdoV^a~}eTAU{uFhz%}I_JkYqZ zFbMvz`m7c-*UzN$$w>xpzvyCWp0Z(gvktPz)P0JLG@4IUfKQibf@+M?Zo9!Rb zIo>Q-v3I2Im|`VLmHw@CI!O8${D#k9>wX7libZ@FG}ChHJ=6LBxLN zH_2`JS=XN2t=L}je#m)cg+3vp6}MU4w5hN$X4s?bEy2Rl?X8v0A>^wx`GDRVv_04( zm5gzvt`?zzi{twrAHC-)QW>_xKvAd{aW3APon-s!3iy&tlYYlliqH7U+|JhQGVJ+> zm-fHBxUHmgLv2jWLPd(KzLV;tDtMtHmZT}iD~eH`i8ahLTb8_2Z@epIQIf2vriJ>* zSjsQmSc>seTJ+7^SCbbxmwa3+=WGeHLDe zG1S(ri`aMtek=CO!I2u0t7&S%+p^X?lS2vzJh%~37tN{BxZIp~C7(S>#I_n+NYhQ6vWm699YiSWD{439tBWDq)0w@2qj)wZFtTDdRcPmX=^_*GV*R4_Uw zGxdVAqgpl?^RofSnq|)jonPP&XUr}s&`vEe%(-- z=g;m5t*r|4J$0!o%}g?+?#Z2NUts3@;w-I56)fB9&WH51IAuMT?qb6fGq_Hd8q2YO z5_b4>c~0|qNwX0nKULT~ncrkVK4u>ydn+k&KA`$$f-?59?gNGIo&2YwknvseF@Wl? zx<_M6%2ZCn@1%%FL9gM%Sgme_KxZ4QvPWCoFIJ6v8LB2Lv z9Pjw^^VN?h8&3_NbhSt2uxaZ>DJGNKHh8SG~#7#_p z2g1`6SFxekRm$I7qO?lb@b>Uqx$}Ucs4Jt^yy1}8SM4`+i1$=&9;@=IJ{QfrKH2@Y zaRGmASDsZJ_;QwS=P>)227kH*IO?f5ucX&LbL-A@A%9^78TU}VNUy&9rfzlP1|L83 z(#7$pJjdiG0kG%e5qrciHx0g)C-?OufHh-{6N*1K70{{}FBIsXxi{qJ|E4W*R0_ zA(Md-es({m({j^nV|f830ZJq+e4c50R8Lw(+#J8tW}h_QYP)TR{&a&Ggil%0$l7zg zZTV(>38ZuBh>qVK&Vg??gVc;QGhbHhT5%kox(;}EYgsBYmh9Fuwe6~lOy;lc#j|H^ z9Cw;yVnb64rej}!f6QvVfAnb)p!}uH7eBk({wkL&((n#@j+zr^Bht!WVQDAKGY0Hq z^id8Ee&LXhLq$Tvdm^h9#kafJ&mYx*T_9bN3uw_wQdzK&w)<)$(mUfrwI83#*h!-0 zUM*`DZQr%hL<+C|X>4D3U>E#szvjn}7bfp~&-|RTj}Wz~)NkCCc7%L>JJ3doZI&7d zkj^tdSKPc~^~%`83JeeUE}5yaoVabw<*0d?Lz;pCsDMe6W|FbzMH z=ZEP0`19>L(*<|j7oTu24i&iv4Az`a4zzamNA@=NWMvZ?e##-Gy63-Jbks~hpsy3- zBoF(0*r`xApkn)Ia}xI)OF_uW@}SY_64G;H(+8ctu-zWYrqPW@zxF_{E^ z`l;yYmcs8kGnCwY*;T<=n?L&6UA6i!`($Uc7KGbDi^z1Q-WJAs5z~_5qdbMeMLXxJ zwHIGjl=r({yPP)m;ZX+(p}8Zj%gFl^UfQ@2zG@nhqlOAYUlXCWx>7iXUh~c=+Xn6_<)4A5J-WQ$ceAA_JSD9HGXU{OzbQI_YrNL;5UMgG zHGBKh*U9;S%KCHea&Htbw%$7!%-$j!wL|d3##>x3Qk_u4>QH z$m>e-HaAEV-4O~_=1n7;7u)bLysOFl(*)KlfEp}A6?B}Ad|Wz42zs_T85MEyat zQO`{!4hItTl$^JuicMO~nn=g_oGqF;IJWJassD+Q3kUp9fJyiIy(42tg#q41!yl)^ z)HspCe$PwNnnSblKg8|*XivF65F$~l&1-5BPAYhgKd>`tXZc?Feaau^v?DyeEq?)) z9@9KJql+%P$)pVRJgvJ)@T@YL+N^nr+Tm;yjJ}FLA;l?)>U!PWeM}e$WL2cS@_5?P zMCo;XDug=~L^0w0ZhS99IIuchQqCTgF?tn|P%)^E+1Zmv| ztOohzEj1Szi&vma2fZ$;N!^Vh76%=}9#u7W`Qa0C@#60EraJDFWhqHty*f*aFkkmk zik4?}tf#B69(TFBba~iuwi>nJxNZlOJejjNC8I<0NW9X(X**i$W;;@M2wBE5UwLO$ zb6+XOB-j2c$Iw;g$ggcA)8`bmO%q1ObrFx0zwVfsp37@_^bVc>b}cC5{FjZjBLTpT zr6C_x9xlfLcT?7G_tYyk7-gUJKlU;s?#Rf~l$0yy@ZZ%RZ?RdBBt>ke)Wz$(Jgd@yGb>1*_-I$C&%_6vTc6bu$0L3kyQ=04(sho> zG7XF$jP$g&`BeW<^)cxDW~ntjU`XE3SiRV3EaJ9@L=Lo@HHc_-rdHM3F6t<5{6Oa`>?8@M@rx~LTIY;j^sSc(bLx2RHD;nA&+ z=o0?oUeDgZ(w5h@n5&l~Oel`qjS^lxR(4N3CEo6tbB5#^V0fpzq)Or4-agA0%~?lv zdT{-Z_si`r-1RIJ^7c$_pr+{YCh@X&yE^Z<&+o&3d+&c}F()ft>Or8dXqf+wY3cnH zDhn0Ywn*rEZo23-d{R2epwxcX!;aS;n=pB58rjIcsmQu6UGNRVN2)1WYS4D^NptxT zM59sbkfKP-nyx(}|4MO~kBV)j*`6-+$(%&sq$b7f^0^)Tm(NumGVhjd39-h^Et-G;D209rpCkf1RN$=E@p7BNTE9ZD862ydaDG!1#WOqSmJ50 zC3P+8iu1y$(}TSSj~N#*nx1?2FtIo1w7BuYo0RKsj_*3A8uqR-45i4plzrG_0@R^O zncc9%9Piy*6J2uDe=cmq>Wnm=UUc-KW@cNClcB%IX?d(4`3=2iMwwE1i>r&XwNE0F z8n#5~K5p&4p?@_tHC_l8(0fG-mQXof-C4X@oH>}}6+*a|=x-c`tqnpgHcfbWw7|^` z{L7;tqY2XaANb#i6pL-YkC+`m=CG}~m z8=NPfU*$GE|Frbr)#n)Nst-|j4t!erx$q;V`NfM*({bg^!a`daHt;sU8-*?mQS$w6e$ZChK?R+^Zbs8^Ci6$iLuOxmRR+HoUH#UO)1FcH?MnqV zQQNo{&=uf3#g+M~Q*Y?KAuDSQd{#B)UOHJZx*Eu*;rR9wmr^+wiDSQ0f(d*^H>zCRO0EMj{ z*8VZ)kc=>1Z)a^_)u>o(z>1{&_|#g9?(C$M%@=<{@H8AsYiRc^lRbpuAao?8y?sgj zB}ID%o=%C-fc1oF7H?+jx0>CAqvuvYk3~LpOHDy};2SbAxodgPJ8vKkhbMe{5+mGD zBn@jl9#NEaW!|}TUi=96_TH-;x1Y5yJIqp}H#H6zTEpY4=^o<2BWCkMl%#z0mZy)l z>)p?^*Se87u76Zov`WvUPjJs<|K;G&%VJc~I@5zHYL^G(6dmuU-K}urm%{N!FGoLB z@*a{_ei|jQQyE90@%00h7XO=D5wBu)|;=N7dO8cs(-fnYr;Iy8{ewB|f z9&N`ymvC^N?VH~!H3&R9?C9oRwvD26$L$_Hw`ZA= zjBxjpPDQA^dA9dO#_MOHt@}+6K%bV%QeVAM(~L@fM>wLk@vXJ_(k-w_H%Ymm-_Lt8 z`%V8NltCu>$JWFoFnu}t+_U&?9h+Zm?nuaS*D6M4m@pq}+$uW$o}Kq$?}%2zAqC02 zEYwq#K-n14SkaZuiz19vmmLLk^E1tDxPc$f>kh>2I4C5Vi?;svj5PUsM#9N#mK%|2 zOADvdB8U-e4G6%NMx`-5>4YGn22?=k0YH+eY$6kYq!QRf1TlyfOa#~y$)O~+h8g&; zX=`F;1i+Dl1$6`p{d?W8PnpHJ-#DxxIUBoJp41gv-~GYA0PtfbeT2VPZbP=?a`Hk4 zV`q&R(ROI5v&&f;UTd`5e_b#Kwj)HI~3 z@(weQvTn|fFgXk$;&a|mOoIMCh*cTDV<^S+5hP|M%hK%jlLN7 zCCwT+i}V|r-+yInG4*5gC&$$vKqvQ!+sPTpLyp?QcP(r<|NT{3Jp58%s@@*qqxMHx z!XF>r&8Jw1rAgd4c;nWS(R3J2 zQI%-XYQQO(!_rdOW*1>GE%9ABZeC)l$uES30?+wK|9eRN!(wuOnNL7ah+sJK0^GGXALNG0mXf8Pa-3-vwSSMjqtTbW2J2ddl zZW^{UrXZ~MfeeFyK#+zRbe|Cc7z_!98fX{+jf??6V*tp+5Ck#@LCsCT8h<%7t+xoy zESbR}<{k*-U&a%>v(hB7*>rONfXCzQ;~DRxF+%|$C=?0+8Uc)q39*_w{hqkCUt$3;2;2zN(>hy zEDHeI2Lk*VpTInSV~k+!TQ|lq89vj4gDH~#OGqmqAT zvN@FyA#hBjVK6a-z@f4=t%CwWS@a-Fz#laK%=<^{KSQpI^sl4;mMDlx{B5&;LHG>| zCxrfU>)&OvMtQH2+$f{xOvQ9*n=!Pf%LTdA~1{tc^^;>vH`= z)8D1~cP7&M1((2kfB0#g>o0BpjqNW<I?w%AM zM~_e#92RN^3x>ggFc<=0<_=?FP$X_J3K~T~L3s`cXO1%rX5vnvy1?`WB)<_^BBS$I><+a`n3jqYe90Z-A?sjk(#tt5eLBc~R zD7d?~qb)BK1rH5HBVaTqTOQ469S{MBIU``a-~a9in2DPm4C0D_J9{DF?p}70yg*bW zE66?)67siyo}E3M7vzF~0lftyc%w)d52Ocey?-6>Z-oEI^go^hAOc0*Lt%V@x-g!d z#~&)g96Vs|&K?5Q>|g|k-)h>!erxA0Ao|0mOQ!Qil%1TdH80fRXR)OSF@-38&|?rmo)2#CPn zwk6pi;I?+2&KNr+#=}MM9iC5QsE-|g9gr4i&qF%fdzg5-*dnox zV)!_+w;9?NZtUjiLUgnXjSR+6c%kbmJBIlnQRHAsFcM=7VYo)|_@VT5K%l-`6v@$( z!glt;n7VmTgS~NBdLSMNBH}?FRG;u*8UaUV2BJWmK%@Vc`s;xD2&y9vM>Qq;gwr`e z5kBA$3d5B`ClDeSPT>p&n9pW1^tk|nAkYM10<*RI9byOw4C+SUGV~(|Zgij#oj`R) z6Z!0QKpw)y**yv_`14@VyrDSzKqL+=h*&36H$Dge=6VXw9mpmCFx`Y<2A~E-m=XX` zJUv9;0~rb6!7&hQFo4hTg0Mp%f8;U)iUz=($>=ZuBZAE2>SOsKR3-pKqykLs@b&<# z8xkJ^VNw8SJm5De-+|+%&mcN+06g12NO^DpJOoDZ2nt!35c&^e=re&_z;AJQw(C5m zct?F47Xtei`2Q&VI^cg(;r}ZAI^cg(;r}ZAI-tNp|51hitMu!D|9>6uXVR|&{{MBr zpGm(C_}3WvzdGR0Y`+fp*BJV(f{zCs#RLa4Q4#K7DxJmSpq)(M&dxl96Uvr_b&Z01 zfiO@O)|;yz6ak>Hg9!kTx0^nVEQr-8V^b7l9WabQGUb76O;~{_6Ov#%ccMMWh!8@J zbb^Gk;gN_y0FvY$g$K~^=qL|CX5d{T0j6kyBVAA~^k4uGO*N$fz?|SP01rl82juD# zoCC2Wd_)A_g<($tV9>-!E|ZKhp>P~R@K~BF-VV)o0=hY%xe!+;l#4gR42k~_FYAE+ zvG*T4KwkP@0;x>Vc#jY$E(E}Epzs`n|4s3AKzz780EP&o3Ph%RFhT_9FaRWq!lUAW z$WW}26F0&b0CVKK2%-T)14aqXLqqg^qDFpTu1UggK(|zY7316aXeWK(K5fbj7a#X1ek9*9(8~pi4-9i& z2lQ~XM+A9>QS~9NJfy3>6U!Um8it{ zAQA&-fSAZ2BWx7Ih=YR~+fo_!>wuI{V7Q5oT@VYxazcQ)K|!uwI6efxf)mjCd{0j= zGAR&Y8U&%^QEX!*GZ06Obc7S4@JJTRfrE4gMv{ndS3)R*OaXBJm_||hKnBU()(hgu zV2}cto-Rlr-%MaruRsFaj1vNm2y$kz!a`Y59>#D?5E2t&W)@~@4<;Hp(fC9!k3d0m z@CYQjU1S8vc3nbeJOu*8py3W&FQ}bo7!ZwN0GS+=BaR#vYKsKJfDTx94vi4#qmK&= z2ZQil_723T5HKB%3?hcPhTtM#6nHSfIm{7?3tk5V8373Pcq9&C!r(I@EYo0@Fo==6 zONbi+WlZ-X^C=vn8;u!^av{NdT=6`hslHnX5>Mk&!GTyB8^Z}>Vk3RUEr5PdF@ z7Hp3TLb>CEpkYC19u!OTaRWJGVPW)0hCPyijl@!2BaEH#;6NZv-CiK*lAm;4Q zrV-)XU;>0IC?~-@K90quLd`g47&6j55JW>$ZKLd97y=1q0w9qYVZ=XFMv?#|Fa!{S zbA&{=&?o)LH?#>X^_18@p94I~CSng!FmUGQu{ zs>MbVjCr<9A8!DJDkyc~TolzCYiha<2!VjtXL@5U6Kwp)Ob-;) zp5HV5|JUBPz`C-XXWdB2O-XO6kVFv;4eUlqlXQAA?}rb!rx`!SkFm#(v1e@Gn<(?L zJrB>zusPbq~XmzPbiBM70&Uu*sAf2{wrjgPY~-1PR!QN=Ap4)Y(X#co?k zz|O;ZWoplT$7aN)<#(cbG%g4ZYg;kuU)C=g-RVaf`P>>s`I@@5QD%eg>g7pk$g@TO zFWiDzn6{B3Rh;p~y@6vHW z5R92(@Gr%*3xdGnJ2U-J(=G@;4$~hs?SkONl0T~VyL4O-EOu4|I{j`xL`D_Su_x`N zGh2<|Yu{!*H?|{`+rfGEY83^JTQ4^z8~9#vkB8^-925l019e$;=U<(awiaA44X0?c z1LxV+XQjkup?_r3#iyv#NYUr(`)>V|Q$9cR$1y(KH_}PqtQ_jON}PAgxA$F8kj9|B zjIQhM1;H0k>aVKp*V{rfwGVdynyoBv!OhmtVW%K?-akD|l?9Ts{MNqj)@?!XHk;#G z-xR0~TeLR-3n1^7<8yBFRmo81`E!yB8z9~k1dqSIh)**XnfjN($?gyg0j*cxHM$dm=)`tGFq){O z*X6Jv>7_wuAoYxd7Ih(RQuEqkjKr}_*O%=?@dgd7Ns|$|*Top7U0cvme?FGzwS$O# z+_BYesUH$mh9Bv!i`e6Ai&S+F-3C5oDTXq{544C%^r6End_it`+h#OT2Bfi^V&0@9 za6(_|hm@T*aA_Ff7Fw!vIE}0~owzgT$<02uR+%lS`OC)P_F0TcLKaYjw1$U55)j-J+cZoz%zr zS|&K6!Ps7EcIQL1Hba$#Q&H<%Zbl2$Lv`-4ON`hn+9E^BMd|JR?GRnZ=!gyJuw{?d zBh*f2)NGfB-%F(#-I8`umW@2SGs_~* zOi(*2?Ubq=`LXY^95Jpe)>wQPXFa#EPjm(8%^I|k)_5{Z_cdLwG+R4&f^>z6ZdjAS zLD;s#^l;~KC?Vw*+eTQ(;LGwGF+NVs>fCRFyz6dz%Fsuu=|OG`XO`ht7L;Jh z5jT))y_Qq04Cch3RblrruKA!3Og74 zHiZc_b=GKs<`to?f7o{;ud-l9v?JMY(bvK(N~K9VX}4#!QXckV+m^!~+L*N1gSQ2x zI-a8K)E6lnERfa^?HOxdmUP6MttUx8>hF@tENxI?uP<$APCh7XGm62(S3|X8gc|rD z2f9jx*u~a)CEDlRtPj6v~7;CLCs5--55vg3nkl%9*Psy#)4aZ%P4R1q=Q?xX{@O9$Vq@$Pum z*scs>$eVSeZ`*_m`*?~sCaXPbL}*8Glr$vQ@(#BMTqa5@K%%>LA9EB|V0xQ+XJ#~n z*jUSHqfdtNCUY*p1Nr;4tb!W~PUK(&cJg{q=nCL?SYx`!KT12k9>7|k79yTonpDcBSpl8Zx zgX2iC%JYfgHYUJQ&gchnW7@6Z9dDCPS5z$89lSS|8-g{EJrUc9#M-xvxxbkw@*3|m zj#(KwX;<=+DmWpiWLXf*M!{0dMhh*1_~2x(bQ@Urzy>WZ!q=G6L9x)>?NBvVt8LF& zdP$r2*-Sb}Oni{0ej7|>#+@niDy=OJ1;Oe9F7M7tX46m_f@EuWp%xxfmfiG{-AN z0O#EzcH}s!Y`XD8XPT6HXnNyn7w!_Ft4A2VoAgEowuXyjw6PM==VLuVzz%16p_>LW zXAI(k;C{a+v?!KlT)1t|Yxu~FswvUgEByq5Ia9Eysyx|`nS~TdAZo>JL^Kxsrb~?4 zNW&RbJtdl$qdk(1r+PsUTxDYrVHv){YyC`RHY?r^L({cYF0xxb-`;iT=E7x0_Hd9z zvc^`xjBczwYwp2zSR*Nk8U2{RxE@#9da7%K`8&6JhY{ztn#x?{wl#;=A@ng}gkb7} zJ5JoYiQY83@ReAd$XLo)kDABybX%=e#I%jI+Rj=YRJ>I&LZ!)MByAsL5|3wbBoaEz zPS7(MRknJDD!3-?X4quEJ*>Pot;E!#J{03ASPodiX6PDYYMe@LeY*=uL3vEd+3YP@ z&>Nv}koabe`_w z8W5}T3xXYMY$fy5+U>OcVywlQXDz_u+xwMPww7!^9*x4?)E2Q2i@?mRY2DbznQZF> zBSa+B8UxsevMkoxqj7obB}s2Cg2uv4Z7r}83m--y)1@WcAJ5F@mPH6RH3zQaOjT2` z9c9##>UvG=E0iNL2XI#RRxKim$UIV1jBsKp>;PNzq^uHZvMMdtYogJpq-~jOGEUv? zfJb!AP3rA9$s{uYNBew!RYHQ}z0m1$$zKozefIIizos-M6J;1g<6&)0lYKFvqQrH| zMRBK2duc9cm2aah;cn{wg?Uei8x!pwP*5#Jl-d^rCD1S70zzgmQc%Dnu*{ns_Zs_YJ$vR~i4r$hQ>oq5~Zqf4}YI&jd=l2I#JA4&%;N05D4V_)RP=AXN z<~lInd$j7WxEwcWbPsZ}cbw{+;P`>(b`Fj9dPG;fX2;c9QbBNKh2X41kaatmFCsjw zx5ur%-%$;-swRW&!L8^-;`(CH43=zTx@G-(*dDebA#2keqpQvNIPMsLe2fcaT#t&X zC=JIJLA1@h;}{K&MFtk#aqG!&Je3DMkDMPyyD1lV8@f4n%p{wGewkk-@tR@>?9^-6 z{UPF~QmK7yJCW3C&N@rcBYPQyQw4LZsJ!SCeN$;H?Hyy-k7V(=VRJs^(z3d=Zf;l? zxe^i$Ei*Ck#V~0s6iM2!Rs~#9$Ywb0fo~}r*$v*&`USxz718Fhs%RD>f}1%#^tPKO zlf?GH!ww2)f=XJEwzaswbYsSd`YTZ$W`;`jQ*~7hcI{eZNNsx?HPA+BR#@%8BB#Q% zBMI$rp5L^axEEIW`FOO{%-v{6MLPz}en@xXQlW#PHH?YF#7yQ+ zy*`whqnLCey3}nzxwSKOl*z3zYxYOdU}f`4m34K$FE3kzEE^og^=@+|Ch}@HXfFl9 z9VX-5+(I$DImzg)V!PUWN~>veTZ}Miu1tE|Z3Ax_wpZ&fE9fdreXZirj=KX9I!chi zlJQjt*R+T5-b0sc%DG)zEC^m`YlWhgTkTk!TkR0kf(S^dtQAL`n|Ua;-ijOh+y$_L z?W^qr!b8;dTvE3ITgpRXjSplB1wTm0OT(o#nt-V^LtLi^-g4llHAjrWV6a9A4rK;l zFQ_IyBZyd5?NsmT1IbE*wLe|-X|J^PmXthbF$_70F}@zS8W;6Iioxpz8bPIWJkk0H zmNCiNU8cDwRKqn&7F8zg&Z)*|hMRPCMkqUU$W7f+`{LJ8GE#gL^lDcjI}pfk}v2ia?v%&t8LPR?bE2VD$G!UXDU2e8`LEbVypg`*CZw7 z{2taHjx2#OkC+)s8%+P+Y@6Rec<}@Zr z+I2bAm8`L|YJ|)>onTpSIPL6rOpnHzn1x|$a%q-#N*i3)z3QHranWKl?L+XfL2612iVBu?SbH9CUGk-yxgz2+L8|CGj~=R&N^a)-lVlcx{e zERcD!6_`$HM=t3fGGb%&Rve~{7-dJ+#9=Q4n{poYc7CwM^o15~MbiM6!-1tsh11zO zx{S;d(e@}SsCT$pZ`IHZ*VT+Rfn|$1j7A+0+<;bzbS<+SK7^;3u;nvP^?iB7CayJg z>WpjfrL>uk8V5{K=M7;ff#NbIShP3I;BDVw&EeXxQL_SdXb-D3&X~<@mz`8ClNZrL zT~O4)0jD+BY1oLC2vky6J&PqD|2E*ZHInS8}vxJLQ>2Y+cDT^S?!hLtMBh*0^wLf@n_l8Sha*I zCkcZN7)kpnc~G2$jZMxXoB^eaOByY-y+V-)ypNRuxI0z5j=IAsnLQI`}Yyds65&)zZ90YfdvHfaAP#IM9|R%qg_D^~S?g-0<$I?M>vtA!v%@WRGsA z(ikM9wcjgX+|cxVBp=`fY!jZE)%UJbZfvKwn;KoCwcW*($tg_~(3++R@$hFm5TJbbiZ0KK=(p@@?9)-gFT2nc7|hfR`pnh=+_8}4QTTYtCi ztxL0liUM!mYDc2cU(vd_k<&%CSgM{dCJ{M!XI8K4y9C|> z=!TPQYWVR{&U>q!k*>KA5`JXx+#T<9+^^!EkwAMOlV+JlY(Pp2F%akTEq# z6?C{m18Xx%CmgsyX(EpTC*<}{d5!AWZr+&-N}F2JUaO^b*}7?qy~ytRT#6p}lwx;` z6SQ1aqdWwn;GN3YU*K)3RhI;b*%{$_4Su0D;W2|ybqN|w z#iXq_i8(yQm=@b6!PI`QH{|6=V6TU*d{T3Q%P z;S@I)3eEN>YPM)eeTu?+j`wlN{nGci*H)R@uQ>Xx=1BTEb3NRt#DOK#w-;2sdr7&)-s zG+WR!jzN@|9izP-vOd(u>xPLlt_e;7RIdkNH&B-*-fEj_Mv7wj&S72;G^C2^NvfdPo}%w$?|gQdhZNHmz-jiwRHRL#|wu zC4~%nXvRjcvQ2xj-p7J7kK?tEsFhJIGgx0{qo!<;x#m=Zh%Rcw6W0!siTF$hk8P)u zc6>ikmz!B>Nwr%p-nE8d#~g>Xcxc4t65glioo43lGdYT@Qwry5upD-VdNDF}L#Hy% z4#3Jz({Uz*(Q35!^@d>y{h$;M>;htUBF1JTNVUo!bbx`gslSQo+FoYhWkOAy2>bnP zg-v?>p;Wgc^I^O7N_eOsn8&AH*owNaFfO$5ONBimG_kLBsJT+#%i_c=AMjw}M$G-* zp~ppfXQhc> zjPOQS?-<~_<^VX_{&^HChA7mf^Y+|QF9_Z(z;?~Hf9Tgsfn9p%E;TumMj^9?^R>X8 z=vmfm8#4;;ZnS<#C_{Mx3Y?BQXhu?yJ#9#M9gV>Go^o(IqD=&aV;@{RtnI<$T?gC* z2_jWcvThDhCV+)R;niP9=X4g`HklQQ4?%lGAhuUKlH|qnie9=;;TRTEE^5Pzwvuc) z0KRo33y=Hhn`FBS2Ob~n$O*gyZbB3ho=rlfg5bjg09VU#0Oxap*m6Dqgwi8;Y`qdz2s6s@V4c@sQI`nUl7c9 z)b-^*uKd&*w!>N4A-u5L4JE45tcl`C6__RRh$4r(o zP33wb%M0a9T~FQ0Gn;Nr|H<>FdcFJgz}V(#mhJijD0ru7oA))AC1{qU?wJg$-J=Yq za<4++^gY%v35?>%iba{l5Fc)S9OXIbw!cX<->`u6b_;YdOxFmDpn)W--?KCdyQeQK z?j8f@Tf^b#u(WnT_e$Fvbo;RlX|!Mt9EV=eCn|(SG8LfD(ZoI0qAK@vnj`L242IG$ zUB^Kkzo35$jT`-pEZ?;Ayu6yHZ8i_WI0zscDo@cXS$FO4H`>>&*iJ1|h=X;J0{iGh zs;7%2(fjr_#+eHpbmj_mZ$UE5J%Xdyd)xvy?-^u;)L_aCV?eIejkd=D<=J=TpUoG= zvm0%1BOQEG%Tji63yot}7kt0M*DL94=bNr&Z;~L+uKeL5^-#8=hf6R10C|#+mFHF@ z;NI7ad}}<|Xt2aN^C2nsqU<>2W1d@C;mXS9r_H|eX}i(<`TN+dEdQY_NXTHM?$g{w z24hL8sP+6rHo+p%6I)iNKT7p%J|xZdP;S@)7Godu`c zGG#;aeai%4axs+imAyWayw5AVdpOS&XYbSWV{sUyfd*;(R=jyIfLz4;Aeu_*SN?E) z2)8q%EPZ%;U!0Yj$KmPor0@G6oFQEnx_!9d*ym-<6b6~^bx6cN*1jmbQXjT7B!SFwtk*UFGQ^mg9~HGj(uKI#~L^3 z^t63G1KB=UcN7e;FCaDj{_X)=A>N4<|MJx=%Z?qCJ18$*Jz((bHCGQyr*oPRkxd>9 z0+`F@f@D#2qA0LFk({+hI(hc>gY(4bl5$aUz0r$c*z@q@=_`l_ zWnw%a=4|!b^U&kpI<2hKpXLF9iBpDXE+N-=jj{+ z;aKaubvdyskRrwYE=vKh1i(_zOSF_LTmO=kFa3w(v|f7JmlRK(T(aUWA5QGL3zshI zoY-~Aio1L`vFk2ex~y|z*Ci|N^5Mj;yKw2U&I_^YRY$xvaNvCJn|FYwb`#I-g}-jO zgbt-I!2f9Mg`h(rsTCW1@>5^h{UZABkRkTv|M`pEcYKKX$(O(C$$#^;9~{5oAARkW zZ~5_m@`kVcr@r}>? z%$t7cPZskJe9K2)|E8CJ?nC@@mH3m-K9~Kj_y^xk{?l)J(^r4<_rChW|M-0$wubm0 zef56qy=wK}KL1Da=lXB_`rm!+d%p4yUjLqt#9#c#7eDwfKk#d>{q*PG@~)>I{PW*@ zHu>}Gyr9M;4S2i~}uRZ=QZS zM{C@!{S6?d4q~v_4e;)q;lzUnx1lz+>(4x0=cp=)K_H$LsuYb06-J=gMun@9BwmG* z2T${Cr9xGO29#GQhM=nyR;dZB08URHtKp3Y??&7HA~?hIJpxaIO88iYL`Ol8oZjdtd%Hp8DV~w}0#VUPC|evL~PT(&k&f z=O&ZDWRH`5Y%N}mZf(1aCu0zktz3ks}b`>=644eo{aGstW>qDKhw>RZM4Y2TX zU%qEQ>;@=HugAu20ag5e0@jeYk5Tu@%7wcb{6tp)5RbZ1?m_xL3u}1WNKUYZ=f1lf z3-JVNc!D)7-<0Gab|+ZF6RhD0)({>7iO&PdSiH-*4O;KTqUsd{Z-dsmimG=3{CF2o z#)9Ap*6^D`#VmMubpcMWhR0W@Cs@N1tl!wD1H|j>|M|WFPMIUH9Wx@o?s0JIrfYK*fS?s!xOCG3D)ogYnbacCs@N1 ztlXgt+K!g3a41Bgzf>j#1pLH6+FljtYMLMSztlsP?|@$ z$ScWvL# zo2-HuK%V$Bc?~dl11MnIaR5kq8-~5@ycRU( zfvR=ZKB85h5!^emvuBSM|FiFS2ignF>*U~jPYS%HlH3J|^*Oy8AlC0di|M@mh)?xm z@T{IK0Igs^SNQQ*sFgTFybw?%@##ScTlqhJn4z8^en9_&cYg={``#|AgG5p<8Azm1#i=@9rC5q(DF&}q;G1O#tX?H5biF}UOOQy@ z+CM{|;W;KGU_a(RV8@c@@R7yly@Zb>*?ef}82~rl#F1pU8#t2KH5^Iv4Zr+zU-;~= ze({T6_`}`s760Kc|JEO3XCE6rQU71B{1)tq+0Q@u?KjzVM2jQ{oWa<0z{vj%1De;j literal 0 HcmV?d00001 diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue index 9fec4bcd..d5092cd6 100644 --- a/training-front-end/src/components/GspcRegistration.vue +++ b/training-front-end/src/components/GspcRegistration.vue @@ -17,6 +17,11 @@ required: false, default: false }, + 'certId': { + type: Number, + required: false, + default: null + }, 'certFailed': { type: Boolean, required: false, @@ -32,6 +37,7 @@ const user = useStore(profile) const base_url = import.meta.env.PUBLIC_API_BASE_URL const certPassed = ref(props.certPassed) + const certId = ref(props.certId) const certFailed = ref(props.certFailed) const quizStarted = ref(false) const quizSubmitted = ref(false) @@ -104,6 +110,7 @@ var result = await res.json() if(result.passed){ certPassed.value = true + certId.value = result.cert_id } else{ certFailed.value = true } diff --git a/training/models/__init__.py b/training/models/__init__.py index 60fb4d88..a243b3a9 100644 --- a/training/models/__init__.py +++ b/training/models/__init__.py @@ -7,3 +7,4 @@ from .user_x_role import UserXRole from .report_user_x_agency import ReportUserXAgency from .gspc_invite import GspcInvite +from .gspc_completion import GspcCompletion diff --git a/training/models/gspc_completion.py b/training/models/gspc_completion.py new file mode 100644 index 00000000..93f7a583 --- /dev/null +++ b/training/models/gspc_completion.py @@ -0,0 +1,15 @@ +from datetime import datetime +from training.models import Base +from sqlalchemy.orm import Mapped, mapped_column +from sqlalchemy import Column, Date, ForeignKey, func + + +class GspcCompletion(Base): + __tablename__ = "gspc_completions" + + id: Mapped[int] = mapped_column(primary_key=True) + user_id: Mapped[int] = mapped_column(ForeignKey("users.id")) + passed: Mapped[bool] = mapped_column() + certification_expiration_date = Column(Date(), nullable=False) + submit_ts: Mapped[datetime] = mapped_column(server_default=func.now()) + responses: Mapped[str] = mapped_column() diff --git a/training/repositories/__init__.py b/training/repositories/__init__.py index 05d3ef10..ec44ed93 100644 --- a/training/repositories/__init__.py +++ b/training/repositories/__init__.py @@ -5,3 +5,4 @@ from .certificate import CertificateRepository from .role import RoleRepository from .gspc_invite import GspcInviteRepository +from .gspc_completion import GspcCompletionRepository diff --git a/training/repositories/certificate.py b/training/repositories/certificate.py index 12eacde2..1e5798a1 100644 --- a/training/repositories/certificate.py +++ b/training/repositories/certificate.py @@ -33,3 +33,4 @@ def get_certificates_by_userid(self, user_id: int) -> list[UserCertificate]: .join(models.Quiz, models.QuizCompletion.quiz_id == models.Quiz.id) .filter(models.QuizCompletion.passed, models.User.id == user_id).all()) return results + \ No newline at end of file diff --git a/training/repositories/gspc_completion.py b/training/repositories/gspc_completion.py new file mode 100644 index 00000000..499d9bec --- /dev/null +++ b/training/repositories/gspc_completion.py @@ -0,0 +1,17 @@ +from sqlalchemy.orm import Session +from training import models +from .base import BaseRepository + + +class GspcCompletionRepository(BaseRepository[models.GspcCompletion]): + + def __init__(self, session: Session): + super().__init__(session, models.GspcCompletion) + + def create(self, gspc_completion: models.GspcCompletion) -> models.GspcCompletion: + return self.save(models.GspcCompletion( + user_id=gspc_completion.user_id, + passed=gspc_completion.passed, + certification_expiration_date=gspc_completion.certification_expiration_date, + questions_and_answers=gspc_completion.questions_and_answers + )) diff --git a/training/schemas/gspc_result.py b/training/schemas/gspc_result.py index 5a43f147..eafc4107 100644 --- a/training/schemas/gspc_result.py +++ b/training/schemas/gspc_result.py @@ -3,3 +3,4 @@ class GspcResult(BaseModel): passed: bool + cert_id: int diff --git a/training/schemas/gspc_submission.py b/training/schemas/gspc_submission.py index 7e90aff4..db9c4663 100644 --- a/training/schemas/gspc_submission.py +++ b/training/schemas/gspc_submission.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict class GspcSubmissionQuestion(BaseModel): @@ -7,8 +7,14 @@ class GspcSubmissionQuestion(BaseModel): response_id: int response: str correct: bool + model_config = ConfigDict(from_attributes=True) + + +class GspcSubmissionQuestions(BaseModel): + responses: list[GspcSubmissionQuestion] class GspcSubmission(BaseModel): expiration_date: str - responses: list[GspcSubmissionQuestion] + responses: GspcSubmissionQuestions + model_config = ConfigDict(from_attributes=True) diff --git a/training/services/certificate.py b/training/services/certificate.py index 082775f7..4e6cdf85 100644 --- a/training/services/certificate.py +++ b/training/services/certificate.py @@ -36,3 +36,23 @@ def generate_pdf(self, training_name, name, agency, date): doc.need_appearances(True) return doc.tobytes(linear=True, deflate_fonts=True, expand=2) + + def generate_gspc_pdf(self, name, agency, date, expiration_date): + date_string = '{dt:%B} {dt.day}, {dt.year}'.format(dt=date) + data = {'name': name, 'agency': agency, 'date': date_string, 'expiration-date': expiration_date} + pdf = 'c_gspc.pdf' + empty_pdf_path = os.path.join(SCRIPT_DIR, PDF_PATH, pdf) + + doc = fitz.open(empty_pdf_path) # type: ignore + page = doc.load_page(0) + + for field in page.widgets(): + field_name = field.field_name + field.text_font = 'Merriweather' + field.field_value = data[field_name] + # field flag of 1 corresponds to "read-only" + field.field_flags = 1 + field.update() + + doc.need_appearances(True) + return doc.tobytes(linear=True, deflate_fonts=True, expand=2) \ No newline at end of file diff --git a/training/services/gspc.py b/training/services/gspc.py index 5d0047e3..84a09d15 100644 --- a/training/services/gspc.py +++ b/training/services/gspc.py @@ -1,10 +1,37 @@ +import logging +from training.repositories import GspcCompletionRepository, UserRepository, CertificateRepository from training.schemas import GspcSubmission, GspcResult +from models import GspcCompletion from sqlalchemy.orm import Session +from training.services import Certificate +from string import Template +from email.message import EmailMessage +from smtplib import SMTP +from training.errors import SendEmailError +from training.config import settings + +CERTIFICATE_EMAIL_TEMPLATE = Template(''' +

Hello $name,

+ +

+ Congratulations! +

+

You've successfully passed the GSA SmartPay® $course_name quiz.

+

Your certificate is attached below.

+

+ If you did not submit this request, you may be receiving this message in error. Please disregard this email. If you have any questions or need further + assistance, email us at gsa_smartpay@gsa.gov. +

+

Thank you.

+ ''') class GspcService(): def __init__(self, db: Session): - pass + self.gspc_completion_repo = GspcCompletionRepository(db) + self.user_repo = UserRepository(db) + self.certificate_repo = CertificateRepository(db) + self.certificate_service = Certificate() def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: """ @@ -16,13 +43,60 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: passed = all(question.correct for question in submission.responses) - # Todo - # - Save Submission - # - Generate and save cert - # - Send Email on pass + responses_dict = submission.responses.model_dump() + result = self.gspc_completion_repo.create(GspcCompletion( + user_id=user_id, + passed=passed, + certification_expiration_date=submission.expiration_date, + responses=responses_dict + )) + + if (passed): + try: + user = self.user_repo.find_by_id(user_id) + pdf_bytes = self.certificate_service.generate_gspc_pdf( + user.name, + user.agency, + result.submit_ts, + result.certification_expiration_date + ) + + self.email_certificate(user.name, user.email, pdf_bytes, submission.expiration_date) + logging.info(f"Sent confirmation email to {user.email} for passing training quiz") + except Exception as e: + logging.error("Error sending quiz confirmation mail", e) + raise result = GspcResult( passed=passed, ) return result + + def email_certificate(self, user_name: str, course_name: str, to_email: str, certificate: bytes) -> None: + """ + Sends congratulatory email to user with certificate attached. + :param user_name: User's Name + :param course_name: Name of course user completed + :param to_email: User's email + :param certificate: Certificate PDF file + :return: N/A + """ + body = CERTIFICATE_EMAIL_TEMPLATE.substitute({"name": user_name, "course_name": course_name}) + message = EmailMessage() + message.set_content(body, subtype="html") + message["Subject"] = "Certificate - GSA SmartPay " + course_name + message["From"] = f"{settings.EMAIL_FROM_NAME} <{settings.EMAIL_FROM}>" + message["To"] = to_email + message.add_attachment(certificate, maintype="application", subtype="pdf", filename="SmartPayTraining.pdf") + + with SMTP(settings.SMTP_SERVER, port=settings.SMTP_PORT) as smtp: + smtp.starttls() + if settings.SMTP_USER and settings.SMTP_PASSWORD: + smtp.login(user=settings.SMTP_USER, password=settings.SMTP_PASSWORD) + try: + smtp.send_message(message) + except Exception as e: + raise SendEmailError from e + finally: + smtp.quit() diff --git a/training/services/quiz.py b/training/services/quiz.py index af875d02..bc7f03da 100644 --- a/training/services/quiz.py +++ b/training/services/quiz.py @@ -106,7 +106,7 @@ def grade(self, quiz_id: int, user_id: int, submission: QuizSubmission) -> QuizG grade.quiz_completion_id = result.id if passed: - # Send email with quizz completion attached + # Send email with quiz completion attached try: user = self.user_repo.find_by_id(user_id) db_user_certificate = self.certificate_repo.get_certificate_by_id(result.id) From b07e8d7b4885db267e13794fd2dad4e438849cf4 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 14:55:06 -0400 Subject: [PATCH 19/24] finish up requierments and started testing. --- data/blank_certificates/c_gspc.pdf | Bin 221933 -> 245986 bytes .../src/components/CertificateTable.vue | 2 +- .../src/components/GspcQuestions.vue | 6 +- .../src/components/GspcRegistration.vue | 39 ++++++---- .../src/components/QuizResults.vue | 2 +- .../__tests__/CertificateTable.spec.js | 4 +- training/api/api_v1/certificates.py | 64 +++++++++++----- training/api/deps.py | 6 +- training/api/email.py | 7 +- training/models/gspc_completion.py | 3 +- training/repositories/certificate.py | 15 +++- training/repositories/gspc_completion.py | 6 +- training/schemas/__init__.py | 2 + training/schemas/gspc_certificate.py | 12 +++ training/schemas/gspc_completion.py | 9 +++ training/services/certificate.py | 20 +++-- training/services/gspc.py | 23 +++--- training/tests/test_api_certificates.py | 72 ++++++++++++++++-- 18 files changed, 217 insertions(+), 75 deletions(-) create mode 100644 training/schemas/gspc_certificate.py create mode 100644 training/schemas/gspc_completion.py diff --git a/data/blank_certificates/c_gspc.pdf b/data/blank_certificates/c_gspc.pdf index ff9e8564b2bac3618565455ecac555275f240bfa..da0b5213b9580c7b48e569d40ee9af568ff25e7f 100644 GIT binary patch delta 72462 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∾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
et7gZy4}uD+9IpyJtB?D5=Glrjz)>bp<}B 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 VR! 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 diff --git a/training-front-end/src/components/CertificateTable.vue b/training-front-end/src/components/CertificateTable.vue index f37bba57..908f3ce1 100644 --- a/training-front-end/src/components/CertificateTable.vue +++ b/training-front-end/src/components/CertificateTable.vue @@ -74,7 +74,7 @@
-

GSA SmartPay® Program Certification (GSPC) Requirements

+

GSA SmartPay Program Certification (GSPC) Requirements

- To earn your GSA SmartPay ® Program Certification you will need to: + To earn your GSA SmartPay Program Certification you will need to:

  • Complete a minimum of seven classes, including two GSA-qualifying classes and five Bank/brand-qualifying classes, during the annual GSA SmartPay Training forum.
  • Have a minimum of six months of continuous, hands-on experience working with the GSA SmartPay program.
- You can complete the verification steps to receive your GSA SmartPay® Program Certification if you meet these requirements. + You can complete the verification steps to receive your GSA SmartPay Program Certification if you meet these requirements.

-

-
Return to the GSA SmartPay Training Home Page + + +

+ Return to the GSA SmartPay Training Home Page +

You Don't Meet the Requirements for GSA SmartPay Program Certification (GSPC)

Once you have met the coursework and experience requirement of six months of continuous, hands-on experience working with the GSA SmartPay program please return to the link in your email to reapply.

-

If you have any questions ,please reference Smart Bulletin No. 022 or contact the GSPC Program Manager at smartpaygspc@gsa.com.

- Return to the GSA SmartPay Training Home Page +

If you have any questions, please reference Smart Bulletin No. 022 or contact the GSPC Program Manager at smartpaygspc@gsa.com.

+ Return to the GSA SmartPay Training Home Page
diff --git a/training-front-end/src/components/QuizResults.vue b/training-front-end/src/components/QuizResults.vue index 6f1e8b07..5643758f 100644 --- a/training-front-end/src/components/QuizResults.vue +++ b/training-front-end/src/components/QuizResults.vue @@ -29,7 +29,7 @@ const result_string = computed(() => `${props.quizResults.correct_count} of ${props.quizResults.question_count}`) const percentage = computed(() => (props.quizResults.percentage * 100).toFixed(0)) - const quiz_certificate_url = computed(() => `${api_base}/api/v1/certificate/${props.quizResults.quiz_completion_id}`) + const quiz_certificate_url = computed(() => `${api_base}/api/v1/certificate/quiz/${props.quizResults.quiz_completion_id}`) function windowStateListener() { window.location = import.meta.env.BASE_URL } diff --git a/training-front-end/src/components/__tests__/CertificateTable.spec.js b/training-front-end/src/components/__tests__/CertificateTable.spec.js index 25f29701..ceb31e61 100644 --- a/training-front-end/src/components/__tests__/CertificateTable.spec.js +++ b/training-front-end/src/components/__tests__/CertificateTable.spec.js @@ -69,10 +69,10 @@ describe('CertificateTable', async () => { expect(rows.length).toBe(3) const anchorOne = rows[1].find('form') - expect(anchorOne.attributes('action')).toBe("http://localhost:8000/api/v1/certificate/2") + expect(anchorOne.attributes('action')).toBe("http://localhost:8000/api/v1/certificate/quiz/2") const anchorTwo = rows[2].find('form') - expect(anchorTwo.attributes('action')).toBe("http://localhost:8000/api/v1/certificate/68") + expect(anchorTwo.attributes('action')).toBe("http://localhost:8000/api/v1/certificate/quiz/68") }) it('show correct message when the user has not taken a quiz', async () => { diff --git a/training/api/api_v1/certificates.py b/training/api/api_v1/certificates.py index b8cd26b6..46df0340 100644 --- a/training/api/api_v1/certificates.py +++ b/training/api/api_v1/certificates.py @@ -24,26 +24,54 @@ def get_certificates_by_userid( return db_user_certificates -@router.post("/certificate/{id}", response_model=UserCertificate) -def get_certificate_by_id( - id: int, - repo: CertificateRepository = Depends(certificate_repository), - certificate: Certificate = Depends(Certificate), - user=Depends(user_from_form) +@router.post("/certificate/{certType}/{id}", response_model=UserCertificate) +def get_certificate_by_type_and_id( + id: int, + certType: str, + certificateRepo: CertificateRepository = Depends(certificate_repository), + certificateService: Certificate = Depends(Certificate), + user=Depends(user_from_form) ): - db_user_certificate = repo.get_certificate_by_id(id) + pdf_bytes = None + filename = '' - if db_user_certificate is None: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) + if (certType == 'quiz'): + db_user_certificate = certificateRepo.get_certificate_by_id(id) + + verify_certificate_is_valid(db_user_certificate, user["id"]) + + pdf_bytes = certificateService.generate_pdf( + db_user_certificate.quiz_name, + db_user_certificate.user_name, + db_user_certificate.agency, + db_user_certificate.completion_date + ) + + filename = "SmartPayTraining.pdf" + elif (certType == 'gspc'): + certificate = certificateRepo.get_gspc_certificate_by_id(id) + + verify_certificate_is_valid(certificate, user["id"]) - if db_user_certificate.user_id != user["id"]: - raise HTTPException(status_code=401, detail="Not Authorized") + pdf_bytes = certificateService.generate_gspc_pdf( + certificate.user_name, + certificate.agency, + certificate.completion_date, + certificate.certification_expiration_date + ) - pdf_bytes = certificate.generate_pdf( - db_user_certificate.quiz_name, - db_user_certificate.user_name, - db_user_certificate.agency, - db_user_certificate.completion_date - ) - headers = {'Content-Disposition': 'attachment; filename="SmartPayTraining.pdf"'} + filename = "GSPC Certification.pdf" + else: + # type not implemented + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) + + headers = {'Content-Disposition': f'attachment; filename="{filename}"'} return Response(pdf_bytes, headers=headers, media_type='application/pdf') + + +def verify_certificate_is_valid(cert: object, user_id: int): + if cert is None: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) + + if cert.user_id != user_id: + raise HTTPException(status_code=401, detail="Not Authorized") \ No newline at end of file diff --git a/training/api/deps.py b/training/api/deps.py index 4933df7d..00dd1548 100644 --- a/training/api/deps.py +++ b/training/api/deps.py @@ -1,6 +1,6 @@ from collections.abc import Generator from fastapi import Depends -from training.repositories import AgencyRepository, UserRepository, QuizRepository, CertificateRepository, GspcInviteRepository +from training.repositories import AgencyRepository, UserRepository, QuizRepository, CertificateRepository, GspcInviteRepository, GspcCompletionRepository from training.services import QuizService, GspcService from training.database import SessionLocal from sqlalchemy.orm import Session @@ -45,5 +45,9 @@ def gspc_invite_repository(db: Session = Depends(db)) -> GspcInviteRepository: return GspcInviteRepository(db) +def gspc_completion_repository(db: Session = Depends(db)) -> GspcCompletionRepository: + return GspcCompletionRepository(db) + + def gspc_service(db: Session = Depends(db)) -> GspcService: return GspcService(db) diff --git a/training/api/email.py b/training/api/email.py index d2c5265a..a6b7cc4e 100644 --- a/training/api/email.py +++ b/training/api/email.py @@ -20,7 +20,7 @@

If you did not submit this request, you may be receiving this message in error. Please disregard this email. If you have any questions or need further assistance, -email us at gsa_smartpay@gsa.gov. +email us at $mailto.

Thank you.

''') @@ -52,6 +52,8 @@ # Todo move email function from quiz.py and turn this into a service so that it can be mocked def send_email(to_email: EmailStr, name: str, link: str, training_title: str) -> None: # Todo clean this up + mailto = "gsa_smartpay@gsa.gov" + if training_title and "certificate" in training_title.lower(): subject = "GSA SmartPay® training certificate(s)" email_subject = "Access your GSA SmartPay training certificate(s)" @@ -61,11 +63,12 @@ def send_email(to_email: EmailStr, name: str, link: str, training_title: str) -> elif training_title and "gspc_registration" in training_title.lower(): subject = "GSA SmartPay® GSPC Registration form" email_subject = "Access to GSA SmartPay GSPC Registration" + mailto = "smartpaygspc@gsa.gov" else: subject = f"GSA SmartPay® {training_title} quiz" email_subject = f"Access GSA SmartPay {training_title} quiz" - body = EMAIL_TEMPLATE.substitute({"name": name, "link": link, "subject": subject}) + body = EMAIL_TEMPLATE.substitute({"name": name, "link": link, "subject": subject, "mailto": mailto}) message = EmailMessage() message.set_content(body, subtype="html") message["Subject"] = email_subject diff --git a/training/models/gspc_completion.py b/training/models/gspc_completion.py index 93f7a583..12bed4ab 100644 --- a/training/models/gspc_completion.py +++ b/training/models/gspc_completion.py @@ -1,3 +1,4 @@ +from typing import Any from datetime import datetime from training.models import Base from sqlalchemy.orm import Mapped, mapped_column @@ -12,4 +13,4 @@ class GspcCompletion(Base): passed: Mapped[bool] = mapped_column() certification_expiration_date = Column(Date(), nullable=False) submit_ts: Mapped[datetime] = mapped_column(server_default=func.now()) - responses: Mapped[str] = mapped_column() + responses: Mapped[dict[str, Any]] = mapped_column() diff --git a/training/repositories/certificate.py b/training/repositories/certificate.py index 1e5798a1..594f8dd1 100644 --- a/training/repositories/certificate.py +++ b/training/repositories/certificate.py @@ -1,6 +1,6 @@ from sqlalchemy.orm import Session from training import models -from training.schemas.user_certificate import UserCertificate +from training.schemas import UserCertificate, GspcCertificate from .base import BaseRepository @@ -33,4 +33,15 @@ def get_certificates_by_userid(self, user_id: int) -> list[UserCertificate]: .join(models.Quiz, models.QuizCompletion.quiz_id == models.Quiz.id) .filter(models.QuizCompletion.passed, models.User.id == user_id).all()) return results - \ No newline at end of file + + def get_gspc_certificate_by_id(self, id: int) -> GspcCertificate | None: + + result = (self._session.query(models.GspcCompletion.id.label("id"), models.User.id.label("user_id"), + models.User.name.label("user_name"), models.Agency.name.label("agency"), + models.GspcCompletion.submit_ts.label("completion_date"), + models.GspcCompletion.certification_expiration_date.label("certification_expiration_date")) + .join(models.User, models.GspcCompletion.user_id == models.User.id) + .join(models.Agency, models.User.agency_id == models.Agency.id) + .filter(models.GspcCompletion.passed, models.GspcCompletion.id == id) + .first()) + return result diff --git a/training/repositories/gspc_completion.py b/training/repositories/gspc_completion.py index 499d9bec..fcd39ce9 100644 --- a/training/repositories/gspc_completion.py +++ b/training/repositories/gspc_completion.py @@ -1,5 +1,5 @@ from sqlalchemy.orm import Session -from training import models +from training import models, schemas from .base import BaseRepository @@ -8,10 +8,10 @@ class GspcCompletionRepository(BaseRepository[models.GspcCompletion]): def __init__(self, session: Session): super().__init__(session, models.GspcCompletion) - def create(self, gspc_completion: models.GspcCompletion) -> models.GspcCompletion: + def create(self, gspc_completion: schemas.GspcCompletion) -> models.GspcCompletion: return self.save(models.GspcCompletion( user_id=gspc_completion.user_id, passed=gspc_completion.passed, certification_expiration_date=gspc_completion.certification_expiration_date, - questions_and_answers=gspc_completion.questions_and_answers + responses=gspc_completion.responses )) diff --git a/training/schemas/__init__.py b/training/schemas/__init__.py index 6874a8b5..49f1882f 100644 --- a/training/schemas/__init__.py +++ b/training/schemas/__init__.py @@ -1,6 +1,8 @@ from .agency import Agency, AgencyCreate, AgencyWithBureaus from .temp_user import TempUser, IncompleteTempUser, WebDestination from .user import User, UserCreate, UserQuizCompletionReportData, UserSearchResult, UserJWT, UserUpdate +from .gspc_certificate import GspcCertificate +from .gspc_completion import GspcCompletion from .gspc_invite import GspcInvite from .gspc_result import GspcResult from .gspc_submission import GspcSubmission diff --git a/training/schemas/gspc_certificate.py b/training/schemas/gspc_certificate.py new file mode 100644 index 00000000..8cedaf05 --- /dev/null +++ b/training/schemas/gspc_certificate.py @@ -0,0 +1,12 @@ + +from datetime import datetime +from pydantic import ConfigDict, BaseModel + + +class GspcCertificate(BaseModel): + user_id: int + user_name: str + agency: str + certification_expiration_date: str + completion_date: datetime + model_config = ConfigDict(from_attributes=True) diff --git a/training/schemas/gspc_completion.py b/training/schemas/gspc_completion.py new file mode 100644 index 00000000..10ab39a4 --- /dev/null +++ b/training/schemas/gspc_completion.py @@ -0,0 +1,9 @@ +from typing import Any +from pydantic import BaseModel + + +class GspcCompletion(BaseModel): + user_id: int + passed: bool + certification_expiration_date: str + responses: dict[str, Any] diff --git a/training/services/certificate.py b/training/services/certificate.py index 4e6cdf85..c6f06f5d 100644 --- a/training/services/certificate.py +++ b/training/services/certificate.py @@ -39,7 +39,8 @@ def generate_pdf(self, training_name, name, agency, date): def generate_gspc_pdf(self, name, agency, date, expiration_date): date_string = '{dt:%B} {dt.day}, {dt.year}'.format(dt=date) - data = {'name': name, 'agency': agency, 'date': date_string, 'expiration-date': expiration_date} + expiration_date_string = 'Valid Through '+'{dt:%B} {dt.day}, {dt.year}'.format(dt=expiration_date) + data = {'name': name, 'agency': agency, 'date': date_string, 'expiration': expiration_date_string} pdf = 'c_gspc.pdf' empty_pdf_path = os.path.join(SCRIPT_DIR, PDF_PATH, pdf) @@ -47,12 +48,15 @@ def generate_gspc_pdf(self, name, agency, date, expiration_date): page = doc.load_page(0) for field in page.widgets(): - field_name = field.field_name - field.text_font = 'Merriweather' - field.field_value = data[field_name] - # field flag of 1 corresponds to "read-only" - field.field_flags = 1 - field.update() + try: + field_name = field.field_name + field.field_value = data[field_name] + # field flag of 1 corresponds to "read-only" + field.field_flags = 1 + field.update() + except KeyError: + # pdf has hidden calculated fields + continue doc.need_appearances(True) - return doc.tobytes(linear=True, deflate_fonts=True, expand=2) \ No newline at end of file + return doc.tobytes(linear=True, deflate_fonts=True, expand=2) diff --git a/training/services/gspc.py b/training/services/gspc.py index 84a09d15..420edaf7 100644 --- a/training/services/gspc.py +++ b/training/services/gspc.py @@ -1,7 +1,6 @@ import logging from training.repositories import GspcCompletionRepository, UserRepository, CertificateRepository -from training.schemas import GspcSubmission, GspcResult -from models import GspcCompletion +from training.schemas import GspcSubmission, GspcResult, GspcCompletion from sqlalchemy.orm import Session from training.services import Certificate from string import Template @@ -16,11 +15,11 @@

Congratulations!

-

You've successfully passed the GSA SmartPay® $course_name quiz.

+

You've successfully met the GSPC experience requirement.

Your certificate is attached below.

If you did not submit this request, you may be receiving this message in error. Please disregard this email. If you have any questions or need further - assistance, email us at gsa_smartpay@gsa.gov. + assistance, email us at smartpaygspc@gsa.com.

Thank you.

''') @@ -41,7 +40,7 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: :return: GspcResult model which includes the final result """ - passed = all(question.correct for question in submission.responses) + passed = all(question.correct for question in submission.responses.responses) responses_dict = submission.responses.model_dump() result = self.gspc_completion_repo.create(GspcCompletion( @@ -56,12 +55,12 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: user = self.user_repo.find_by_id(user_id) pdf_bytes = self.certificate_service.generate_gspc_pdf( user.name, - user.agency, + user.agency.name, result.submit_ts, result.certification_expiration_date ) - self.email_certificate(user.name, user.email, pdf_bytes, submission.expiration_date) + self.email_certificate(user.name, user.email, pdf_bytes) logging.info(f"Sent confirmation email to {user.email} for passing training quiz") except Exception as e: logging.error("Error sending quiz confirmation mail", e) @@ -69,26 +68,26 @@ def grade(self, user_id: int, submission: GspcSubmission) -> GspcResult: result = GspcResult( passed=passed, + cert_id=result.id ) return result - def email_certificate(self, user_name: str, course_name: str, to_email: str, certificate: bytes) -> None: + def email_certificate(self, user_name: str, to_email: str, certificate: bytes) -> None: """ Sends congratulatory email to user with certificate attached. :param user_name: User's Name - :param course_name: Name of course user completed :param to_email: User's email :param certificate: Certificate PDF file :return: N/A """ - body = CERTIFICATE_EMAIL_TEMPLATE.substitute({"name": user_name, "course_name": course_name}) + body = CERTIFICATE_EMAIL_TEMPLATE.substitute({"name": user_name}) message = EmailMessage() message.set_content(body, subtype="html") - message["Subject"] = "Certificate - GSA SmartPay " + course_name + message["Subject"] = "Certificate – GSA SmartPay® Program Certificate" message["From"] = f"{settings.EMAIL_FROM_NAME} <{settings.EMAIL_FROM}>" message["To"] = to_email - message.add_attachment(certificate, maintype="application", subtype="pdf", filename="SmartPayTraining.pdf") + message.add_attachment(certificate, maintype="application", subtype="pdf", filename="GSPC Certificate.pdf") with SMTP(settings.SMTP_SERVER, port=settings.SMTP_PORT) as smtp: smtp.starttls() diff --git a/training/tests/test_api_certificates.py b/training/tests/test_api_certificates.py index 881589c9..ae9f528b 100644 --- a/training/tests/test_api_certificates.py +++ b/training/tests/test_api_certificates.py @@ -8,7 +8,7 @@ from training.api.deps import certificate_repository from training.config import settings from training.main import app -from training.schemas import UserCertificate +from training.schemas import UserCertificate, GspcCertificate from training.services.certificate import Certificate client = TestClient(app) @@ -27,6 +27,18 @@ def user_cert(): } +@pytest.fixture +def gspc_cert(): + return { + 'id': 1, + 'user_id': 2, + 'user_name': "Molly", + 'agency': 'Freeman Journal', + 'completion_date': '2023-08-21T22:59:36', + 'certification_expiration_date': '2024-08-21' + } + + @pytest.fixture def fake_cert_repo(): mock = MagicMock() @@ -63,7 +75,7 @@ def test_get_no_certificates(self, fake_cert_repo, goodJWT): ) assert response.status_code == status.HTTP_404_NOT_FOUND - def test_gets_certificates_by_id(self, fake_cert_repo, goodJWT): + def test_gets_certificates_by_type_and_id(self, fake_cert_repo, goodJWT): fake_cert_repo.get_certificates_by_userid.return_value = None client.get( "/api/v1/certificates", @@ -83,7 +95,7 @@ def test_gets_certificates(self, fake_cert_repo, goodJWT, user_cert): def test_get_specific_certificate_not_found(self, fake_cert_repo, goodJWT): fake_cert_repo.get_certificate_by_id.return_value = None response = client.post( - "/api/v1/certificate/2", + "/api/v1/certificate/quiz/2", data={"jwtToken": goodJWT} ) assert response.status_code == status.HTTP_404_NOT_FOUND @@ -93,19 +105,19 @@ def test_get_specific_certificate_wrong_user(self, fake_cert_repo, goodJWT, user cert = UserCertificate.model_validate(user_cert) fake_cert_repo.get_certificate_by_id.return_value = cert response = client.post( - "/api/v1/certificate/2", + "/api/v1/certificate/quiz/2", data={"jwtToken": goodJWT} ) assert response.status_code == status.HTTP_401_UNAUTHORIZED - def test_get_specific_certificate(self, fake_cert_repo, goodJWT, user_cert, fake_cert_service_repo): + def test_get_specific_quiz_certificate(self, fake_cert_repo, goodJWT, user_cert, fake_cert_service_repo): user_cert['user_id'] = 1 cert = UserCertificate.model_validate(user_cert) fake_cert_repo.get_certificate_by_id.return_value = cert fake_cert_service_repo.generate_pdf.return_value = b'some bytes' response = client.post( - "/api/v1/certificate/2", + "/api/v1/certificate/quiz/2", data={"jwtToken": goodJWT} ) fake_cert_service_repo.generate_pdf.assert_called_once_with( @@ -118,3 +130,51 @@ def test_get_specific_certificate(self, fake_cert_repo, goodJWT, user_cert, fake assert response.headers['content-type'] == 'application/pdf' assert response.headers['content-disposition'] == 'attachment; filename="SmartPayTraining.pdf"' assert response.text == "some bytes" + + def test_gets_certificates_unknown_type(self, fake_cert_repo, goodJWT): + fake_cert_repo.get_certificates_by_userid.return_value = None + response = client.get( + "/api/v1/certificates/new-type", + headers={"Authorization": f"Bearer {goodJWT}"} + ) + assert response.status_code == status.HTTP_404_NOT_FOUND + + def test_get_specific_gspc_certificate(self, fake_cert_repo, goodJWT, gspc_cert, fake_cert_service_repo): + gspc_cert['user_id'] = 1 + cert = GspcCertificate.model_validate(gspc_cert) + fake_cert_repo.get_gspc_certificate_by_id.return_value = cert + fake_cert_service_repo.generate_gspc_pdf.return_value = b'some bytes' + + response = client.post( + "/api/v1/certificate/gspc/2", + data={"jwtToken": goodJWT} + ) + fake_cert_service_repo.generate_gspc_pdf.assert_called_once_with( + cert.user_name, + cert.agency, + cert.completion_date, + cert.certification_expiration_date + ) + assert response.status_code == status.HTTP_200_OK + assert response.headers['content-type'] == 'application/pdf' + assert response.headers['content-disposition'] == 'attachment; filename="GSPC Certification.pdf"' + assert response.text == "some bytes" + + def test_get_specific_gspc_certificate_not_found(self, fake_cert_repo, goodJWT): + fake_cert_repo.get_gspc_certificate_by_id.return_value = None + response = client.post( + "/api/v1/certificate/gspc/2", + data={"jwtToken": goodJWT} + ) + assert response.status_code == status.HTTP_404_NOT_FOUND + fake_cert_repo.get_gspc_certificate_by_id.assert_called_once_with(2) + + def test_get_specific_gspc_certificate_wrong_user(self, fake_cert_repo, goodJWT, gspc_cert): + cert = GspcCertificate.model_validate(gspc_cert) + fake_cert_repo.get_gspc_certificate_by_id.return_value = cert + response = client.post( + "/api/v1/certificate/gspc/2", + data={"jwtToken": goodJWT} + ) + assert response.status_code == status.HTTP_401_UNAUTHORIZED + \ No newline at end of file From 0214b9b52f2960fe28b2da852bfe331c04262638 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 15:14:41 -0400 Subject: [PATCH 20/24] Removed whitespace. --- training-front-end/src/components/GspcRegistration.vue | 3 +-- training/repositories/certificate.py | 2 +- training/schemas/gspc_certificate.py | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/training-front-end/src/components/GspcRegistration.vue b/training-front-end/src/components/GspcRegistration.vue index f31db33f..b0e5bb41 100644 --- a/training-front-end/src/components/GspcRegistration.vue +++ b/training-front-end/src/components/GspcRegistration.vue @@ -7,7 +7,6 @@ import GspcQuestions from './GspcQuestions.vue'; import FileDownLoad from "./icons/FileDownload.vue" - onErrorCaptured((err) => { setError(err) return false @@ -89,7 +88,7 @@ 'Content-Type': 'application/json', 'Authorization': `Bearer ${user.value.jwt}` }, - body: JSON.stringify( { 'responses':{'responses': user_answers}, 'expiration_date': expirationDate}) + body: JSON.stringify({'responses':{'responses': user_answers}, 'expiration_date': expirationDate}) }) } catch(e) { const err = new Error("There was a problem connecting with the server") diff --git a/training/repositories/certificate.py b/training/repositories/certificate.py index 594f8dd1..994f36ce 100644 --- a/training/repositories/certificate.py +++ b/training/repositories/certificate.py @@ -23,7 +23,7 @@ def get_certificate_by_id(self, id: int) -> UserCertificate | None: .first()) return result - def get_certificates_by_userid(self, user_id: int) -> list[UserCertificate]: + def get_certificates_by_userId(self, user_id: int) -> list[UserCertificate]: results = (self._session.query(models.QuizCompletion.id.label("id"), models.User.id.label("user_id"), models.User.name.label("user_name"), models.Quiz.id.label("quiz_id"), models.Agency.name.label("agency"), models.Quiz.name.label("quiz_name"), diff --git a/training/schemas/gspc_certificate.py b/training/schemas/gspc_certificate.py index 8cedaf05..3a99c66a 100644 --- a/training/schemas/gspc_certificate.py +++ b/training/schemas/gspc_certificate.py @@ -1,4 +1,3 @@ - from datetime import datetime from pydantic import ConfigDict, BaseModel From e89c0b85b83d10c1910e34f5d6b451544b648cfc Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 15:22:15 -0400 Subject: [PATCH 21/24] lint and test error fixes. --- .../src/components/__tests__/GspcRegistration.spec.js | 2 +- training/api/api_v1/certificates.py | 2 +- training/tests/test_api_certificates.py | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/training-front-end/src/components/__tests__/GspcRegistration.spec.js b/training-front-end/src/components/__tests__/GspcRegistration.spec.js index 1c0acb5e..247c1790 100644 --- a/training-front-end/src/components/__tests__/GspcRegistration.spec.js +++ b/training-front-end/src/components/__tests__/GspcRegistration.spec.js @@ -34,7 +34,7 @@ describe('GspcRegistration', () => { setUserCredentials() const wrapper = await mount(GspcRegistration) await flushPromises() - expect(wrapper.text()).toContain("GSA SmartPay® Program Certification (GSPC) Requirements") + expect(wrapper.text()).toContain("GSA SmartPay Program Certification (GSPC) Requirements") }) it('renders USWDSAlert when error is present', async () => { diff --git a/training/api/api_v1/certificates.py b/training/api/api_v1/certificates.py index 46df0340..32cae41c 100644 --- a/training/api/api_v1/certificates.py +++ b/training/api/api_v1/certificates.py @@ -74,4 +74,4 @@ def verify_certificate_is_valid(cert: object, user_id: int): raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) if cert.user_id != user_id: - raise HTTPException(status_code=401, detail="Not Authorized") \ No newline at end of file + raise HTTPException(status_code=401, detail="Not Authorized") diff --git a/training/tests/test_api_certificates.py b/training/tests/test_api_certificates.py index ae9f528b..5c690614 100644 --- a/training/tests/test_api_certificates.py +++ b/training/tests/test_api_certificates.py @@ -177,4 +177,3 @@ def test_get_specific_gspc_certificate_wrong_user(self, fake_cert_repo, goodJWT, data={"jwtToken": goodJWT} ) assert response.status_code == status.HTTP_401_UNAUTHORIZED - \ No newline at end of file From e5ee1bab279ba758b4237e5c116361162b892036 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 15:29:28 -0400 Subject: [PATCH 22/24] fixed casing in test. --- training/repositories/certificate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/repositories/certificate.py b/training/repositories/certificate.py index 994f36ce..594f8dd1 100644 --- a/training/repositories/certificate.py +++ b/training/repositories/certificate.py @@ -23,7 +23,7 @@ def get_certificate_by_id(self, id: int) -> UserCertificate | None: .first()) return result - def get_certificates_by_userId(self, user_id: int) -> list[UserCertificate]: + def get_certificates_by_userid(self, user_id: int) -> list[UserCertificate]: results = (self._session.query(models.QuizCompletion.id.label("id"), models.User.id.label("user_id"), models.User.name.label("user_name"), models.Quiz.id.label("quiz_id"), models.Agency.name.label("agency"), models.Quiz.name.label("quiz_name"), From 5bcc5f1be882f7686ee5abf4a2ba6e9f79068fa8 Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 15:36:01 -0400 Subject: [PATCH 23/24] Update cert file name. --- training/tests/test_api_certificates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/tests/test_api_certificates.py b/training/tests/test_api_certificates.py index 5c690614..579b055a 100644 --- a/training/tests/test_api_certificates.py +++ b/training/tests/test_api_certificates.py @@ -157,7 +157,7 @@ def test_get_specific_gspc_certificate(self, fake_cert_repo, goodJWT, gspc_cert, ) assert response.status_code == status.HTTP_200_OK assert response.headers['content-type'] == 'application/pdf' - assert response.headers['content-disposition'] == 'attachment; filename="GSPC Certification.pdf"' + assert response.headers['content-disposition'] == 'attachment; filename="GSA SmartPay Program Certification.pdf"' assert response.text == "some bytes" def test_get_specific_gspc_certificate_not_found(self, fake_cert_repo, goodJWT): From f7f0dbcab3d0928009f010e986d80d5e7735981f Mon Sep 17 00:00:00 2001 From: John Labbate Date: Fri, 10 May 2024 15:48:39 -0400 Subject: [PATCH 24/24] Update cert file name. --- training/api/api_v1/certificates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/training/api/api_v1/certificates.py b/training/api/api_v1/certificates.py index 32cae41c..462fcd47 100644 --- a/training/api/api_v1/certificates.py +++ b/training/api/api_v1/certificates.py @@ -60,7 +60,7 @@ def get_certificate_by_type_and_id( certificate.certification_expiration_date ) - filename = "GSPC Certification.pdf" + filename = "GSA SmartPay Program Certification.pdf" else: # type not implemented raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)