From add1d377d21a1a9ddf2b433a2c0b626f42e40598 Mon Sep 17 00:00:00 2001 From: Florin Zarafu <48326563+FlorinZarafu@users.noreply.github.com> Date: Mon, 3 Jul 2023 09:47:01 +0300 Subject: [PATCH] Added donor pages, started evolution page (#71) --- app/Http/Controllers/DonorController.php | 150 ++++ app/Http/Controllers/EvolutionController.php | 78 ++ package-lock.json | 676 ++++++++++++++++++ package.json | 2 + public/images/badges/donor.png | Bin 0 -> 15299 bytes public/images/badges/long_race.png | Bin 0 -> 10652 bytes public/images/badges/month_volunteer.png | Bin 0 -> 12605 bytes public/images/badges/multiple_donor.png | Bin 0 -> 11772 bytes public/images/badges/subscriber.png | Bin 0 -> 13408 bytes public/images/badges/supporter.png | Bin 0 -> 12098 bytes public/images/badges/top_donor.png | Bin 0 -> 11772 bytes public/images/svg/check.svg | 3 + resources/js/Components/Navbar.vue | 30 +- resources/js/Components/charts/AppChart.vue | 96 +++ resources/js/Components/charts/LineChart.vue | 102 +++ .../js/Components/charts/ProjectsChart.vue | 96 +++ .../js/Components/charts/TimeEvolution.vue | 96 +++ resources/js/Pages/Donor/Dashboard.vue | 91 +++ resources/js/Pages/Donor/Donations.vue | 44 ++ resources/js/Pages/Public/Donor/ThankYou.vue | 67 +- .../js/Pages/Public/Evolution/Evolution.vue | 30 + resources/js/locales/ro.js | 31 + routes/donor.php | 16 + routes/evolution.php | 10 + routes/web.php | 5 + 25 files changed, 1610 insertions(+), 13 deletions(-) create mode 100644 app/Http/Controllers/DonorController.php create mode 100644 app/Http/Controllers/EvolutionController.php create mode 100644 public/images/badges/donor.png create mode 100644 public/images/badges/long_race.png create mode 100644 public/images/badges/month_volunteer.png create mode 100644 public/images/badges/multiple_donor.png create mode 100644 public/images/badges/subscriber.png create mode 100644 public/images/badges/supporter.png create mode 100644 public/images/badges/top_donor.png create mode 100644 public/images/svg/check.svg create mode 100644 resources/js/Components/charts/AppChart.vue create mode 100644 resources/js/Components/charts/LineChart.vue create mode 100644 resources/js/Components/charts/ProjectsChart.vue create mode 100644 resources/js/Components/charts/TimeEvolution.vue create mode 100644 resources/js/Pages/Donor/Dashboard.vue create mode 100644 resources/js/Pages/Donor/Donations.vue create mode 100644 resources/js/Pages/Public/Evolution/Evolution.vue create mode 100644 routes/donor.php create mode 100644 routes/evolution.php diff --git a/app/Http/Controllers/DonorController.php b/app/Http/Controllers/DonorController.php new file mode 100644 index 00000000..8be3c4c9 --- /dev/null +++ b/app/Http/Controllers/DonorController.php @@ -0,0 +1,150 @@ + + '
Mulțumim că ești alături de noi. Prin participarea ta activă la această inițiativă, ne arăți că ești preocupat de problemele sociale și că vrei să faci o diferență pozitivă în lumea în care trăim, iar contribuția ta este extrem de valoroasă.
+Prin distribuirea informațiilor despre proiectele de pe Bursa Binelui și încurajând prietenii și familia să se alăture, devii un promotor important al inițiativei noastre.
+Fiecare pas pe care îl facem împreună contează și, împreună, putem face o diferență semnificativă.
', + 'donations_place' => '5%', + 'donations_status' => [ + 'Ai donat către mai mult de 5 organizații', + 'Volunariezi la 3 organizații', + 'Ești abonat la newsletterul de bine', + 'Ai distribuit de multiple ori informații utile' + ], + ]; + + $badges = [ + [ + 'name' => 'multiple_donor', + 'title' => 'multiple_donor_title', + 'description' => 'multiple_donor_description' + ], + [ + 'name' => 'subscriber', + 'title' => 'subscriber_donor_title', + 'description' => 'subscriber_donor_description' + ], + [ + 'name' => 'long_race', + 'title' => 'long_race_title', + 'description' => 'long_race_description' + ], + [ + 'name' => 'supporter', + 'title' => 'supporter_donor_title', + 'description' => 'supporter_donor_description' + ], + [ + 'name' => 'month_volunteer', + 'title' => 'month_volunteer_title', + 'description' => 'month_volunteer_description' + ], + [ + 'name' => 'top_donor', + 'title' => 'top_donor_title', + 'description' => 'top_donor_description' + ], + [ + 'name' => 'donor', + 'title' => 'recurent_donor_title', + 'description' => 'recurent_donor_description' + ] + ]; + + return Inertia::render('Donor/Dashboard', [ + 'profile' => $profile, + 'badges' => $badges + ]); + } + + public function donations() + { + $donations = [ + "current_page" => 2, + "data" => [ + [ + 'id' => 1, + 'organization' => 'Asociația Un Zâmbet pentru copilul tău', + 'project' => 'Zambet pentru copiii noștri', + 'created_at' => '12.08.2022', + 'amount' => '300' + ], + [ + 'id' => 2, + 'organization' => 'Asociația Un Zâmbet pentru copilul tău', + 'project' => 'Zambet pentru copiii noștri', + 'created_at' => '12.08.2022', + 'amount' => '300' + ], + + [ + 'id' => 3, + 'organization' => 'Asociația Un Zâmbet pentru copilul tău', + 'project' => 'Zambet pentru copiii noștri', + 'created_at' => '12.08.2022', + 'amount' => '300' + ], + [ + 'id' => 4, + 'organization' => 'Asociația Un Zâmbet pentru copilul tău', + 'project' => 'Zambet pentru copiii noștri', + 'created_at' => '12.08.2022', + 'amount' => '300' + ] + ], + "first_page_url" => "http=>//bursabinelui.test/proiecte?page=1", + "from"=> 1, + "last_page"=> 2, + "last_page_url"=> "http://bursabinelui.test/proiecte?page=2", + "links"=> [ + [ + "url"=> "http://bursabinelui.test/proiecte?page=1", + "label"=> "1", + "active"=> true + ], + [ + "url"=> "http://bursabinelui.test/proiecte?page=1", + "label"=> "1", + "active"=> true + ], + [ + "url"=> "http://bursabinelui.test/proiecte?page=2", + "label"=> "2", + "active"=> false + ], + [ + "url"=> "http://bursabinelui.test/proiecte?page=3", + "label"=> "3", + "active"=> false + ], + [ + "url"=> "http://bursabinelui.test/proiecte?page=1", + "label"=> "1", + "active"=> true + ], + ], + "next_page_url"=> "http://bursabinelui.test/proiecte?page=3", + "path"=> "http://bursabinelui.test/proiecte", + "per_page"=> 15, + "prev_page_url"=> 'http://bursabinelui.test/proiecte?page=1', + "to"=> 15, + "total"=> 20 + ]; + + return Inertia::render('Donor/Donations', [ + 'donations' => $donations, + ]); + } +} diff --git a/app/Http/Controllers/EvolutionController.php b/app/Http/Controllers/EvolutionController.php new file mode 100644 index 00000000..f52619a3 --- /dev/null +++ b/app/Http/Controllers/EvolutionController.php @@ -0,0 +1,78 @@ + 'Ian', + 'number' => 23, + ], + [ + 'month' => 'Feb', + 'number' => 80, + ], + [ + 'month' => 'Mar', + 'number' => 50, + ], + [ + 'month' => 'Apr', + 'number' => 100, + ], + [ + 'month' => 'Mai', + 'number' => 150, + ], + [ + 'month' => 'Iun', + 'number' => 30, + ] + ]; + + $donations_amount = [ + [ + 'month' => 'Ian', + 'amount' => 1023, + ], + [ + 'month' => 'Feb', + 'amount' => 180, + ], + [ + 'month' => 'Mar', + 'amount' => 5200, + ], + [ + 'month' => 'Apr', + 'amount' => 22100, + ], + [ + 'month' => 'Mai', + 'amount' => 1250, + ], + [ + 'month' => 'Iun', + 'amount' => 2230, + ] + ]; + + + return Inertia::render('Public/Evolution/Evolution', [ + 'donations' => $donations, + 'amount' => $amount, + 'donations_number' => $donations_number, + 'donations_amount' => $donations_amount + ]); + } +} diff --git a/package-lock.json b/package-lock.json index 8fb1903b..00628a00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,11 @@ "@headlessui/vue": "^1.7.13", "@heroicons/vue": "^2.0.17", "@tailwindcss/aspect-ratio": "^0.4.2", + "@types/d3": "^7.4.0", + "chart.js": "^4.3.0", + "d3": "^7.8.5", "vite-svg-loader": "^4.0.0", + "vue-chartjs": "^5.2.0", "vue-i18n": "^9.2.2", "vue3-carousel": "^0.3.1" }, @@ -552,6 +556,11 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -650,6 +659,233 @@ "node": ">=10.13.0" } }, + "node_modules/@types/d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", + "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", + "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", + "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", + "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", + "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", + "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", + "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", + "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" + }, + "node_modules/@types/d3-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + }, + "node_modules/@types/d3-geo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", + "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + }, + "node_modules/@types/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", + "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", + "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.3.tgz", + "integrity": "sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, "node_modules/@vitejs/plugin-vue": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.1.tgz", @@ -949,6 +1185,17 @@ } ] }, + "node_modules/chart.js": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.0.tgz", + "integrity": "sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1095,6 +1342,384 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -1104,6 +1729,14 @@ "node": ">=0.10.0" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1424,6 +2057,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1438,6 +2082,14 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1981,6 +2633,11 @@ "node": ">=0.10.0" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rollup": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.4.tgz", @@ -2019,6 +2676,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -2316,6 +2983,15 @@ "@vue/shared": "3.2.47" } }, + "node_modules/vue-chartjs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", + "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", + "peerDependencies": { + "chart.js": "^4.1.1", + "vue": "^3.0.0-0 || ^2.7.0" + } + }, "node_modules/vue-i18n": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", diff --git a/package.json b/package.json index 83d2f143..7eca26b8 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "@headlessui/vue": "^1.7.13", "@heroicons/vue": "^2.0.17", "@tailwindcss/aspect-ratio": "^0.4.2", + "chart.js": "^4.3.0", "vite-svg-loader": "^4.0.0", + "vue-chartjs": "^5.2.0", "vue-i18n": "^9.2.2", "vue3-carousel": "^0.3.1" } diff --git a/public/images/badges/donor.png b/public/images/badges/donor.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf4a5579c29c28b6b8fe82e208a68b03f9ed09c GIT binary patch literal 15299 zcmb`OV{;}v8-{D!w(hO%ySA~_c57qnZf)DPZQHhO+s3=ke|R&KT$4<`WG0j3I?gkp zit-YOaCmSaARvfRlA_B0;>dp$2I^m1sZo{nFTmPLYC3>`z@z_HK|#_oaQ+Q~Iw(sB zgH%lsoc`-TmLT!++>Qf`IU9NQnxmx`1AK!g~B#O#GT=BeW!I(mAi_yK?~#RvdGGS`8NfHp!F zuJH`6QR{c;r1+UTL$4y!3YxMoJ~-%hKb6W9k{Kqol!rwO#A`xt!Ab2S2JKppTcx}^ zQRyPK4-OUHp5_j3fwGc16Uthy;)z{#|94d3h%$H`4FzfJm5-05HpjYh^sqx_aq%%> zb#w9j@%<04Zkw6$@Joj1U$<`j(te)8D_1uz8;p*B|9Te}7n{Dxac&k+h1&TpknD#% zJvrCUnsrE)FKQ#u+W~c6bHbf>tWDWb5CTj3=SA9iD;*b3bF@2slMasN3Bm)}EZEsb zdL#z7m0yK>XP8lJ9Y}CK_H#vok*c&?=M>PS{3#^SddXiEyxle(DRcN$3V-V6Dwi(% zV2EKH1B3NAUj2l4W-s$BiZh@7Iw=P)ON{yO(`(UBj!)$dy1uGr#7b#uWv&2Im@q&z zqk odTGGxBH6mV+~`DGg(aKmaZq*8xQ< zHqA VIMEaxmWoQkmoA;e2tV+7d3ds_ zN=j;C2U192S)gpI`WDx;N?1~pEZNE!%NEld1jAT73Zm*6gPu?t-T53>w#3@4)huqG z6q$N!UwzF;UxY|cD*#Z}{nV+}V?~rRKUi va_HE^vaGCM4XMa9r?>T8X`{M
MS6fG zefOv-!FoOUL}3-jw+=^yB6a`vbTEuQSSau4P-QbF<)2BZY6sZLb|zG(doQ%RG%01g z7%)U&tXYVzoz waX4skB>jTs=A-t;#+7rYjyHf4E0{F`v^&0+C1yYc zQ#R82WyAEAlpOz`GuT>$q1MS2^-5(GO>wNBX%lSd12rcP1wSqG+R49#oL?v#8K4OV zZr5^LKj<#(s^Y=BxZMcp$LVvpSFwH!GozbfniODnja@0yGze8L0iSn+iHW%1FY1k# zfJhWVdx8PRv5P}`9Z0~zWHyUQ`wajqVvBAkFc3Ozw`E*PLQnYev@SNBUF>5YE| 61;36%`ZG@dWW% zB%7C)lxGnU4vRdOi7xFw2$FuX-TpyLS7g7TM(VF#LAKThmqJ^m w@5P|%ROcK zTcj^~EQt|CY`P8fWKE#Lg*gC@oINV?!?dk0F?=Mo= VeVCWymG $J-U!7U_Fr6Ftc|J~^O?iU zt*!A48jW$ul`naMZrz@S2u}KFn4_DAK}C#7 ~>7Y|#O`8hu}LL?|3kiZ;U@VwTpZ(p0O41Sy?bqTJt2Q UX5)RQXL3Z|xQQ=oYqvw<8liia2R9Yy1?g(ReX zR+AC4F&<(b)i{#hgAdJ*pLayj#7Z?yMDl9R%Jg2vH|jWc^1a-+NHh~7g1+aybTcev z5TTN>jmWc2dL!R7Lj{wXnwoNKzD%Src@53!o~fzX@MWsUA}ZP;a>g!6Z7zjGLV@96 zosK!Q6##h>$1?>zAglyF#12~Ys_ma~rm~~n*`MVKRW2N|NCNB}Y%$}zIU822m0B$% zZrW2Ff8By^NafLRzDi5m@k2)#c;Hwg$Ze%R;3@g5N>@^Z%J0HU=B$dyJ|;u #0NfI~f1I@4^h zffTS}UUYr6M=sa`6ye}_yz_Ga$_c*Wv3zw-SX`XYJ2ZJwl1+werRefVlm{zXj5c8n zF;GT +j z0Q*${^2>W(KAkMQiK^0RLSD=Eeimx_GWAECLO4b3&OL_@O?!LJqg&f3q(N}PiwSYG zMmW7|0~7S9Qi_4LGV4t1u;)#$!fWN0SqC%WL{;rFuZQ#wRRK}*IZNiOEq$QeZb^}u z7)?^9^;M7Mi5>M4#!fga6$mH6B-&I{Xx*-1iNK%|ZV_o?PsQH%a8}~CS~ L69F?! zd`w~^dE}9A@BIAy)dtVcfWg>1ya4wqQo-rIZH=*O5uDj4((+FW6>ulAH#BLZDFX*8 z$zFM5$c#&S(VUhqsZaChKIxVp&ADB^7frpMGO|&D^(M-8LPC2YwwKrqA-tox+qJ?e zUSxbkPnRuYDWj;>SP|i@tw@*f^FL4_&*zs$#=2MM_g{lm8KY!f5%VCx$`_&fwQo89 za3y q>T#WDtPF!(rhF*W<(?N(oiIo6 _+9gAsR&0U{EpL)40Y$(7j_gu&L7wgRM)l4zUUA4e?Ije^Gc0xoF@E>#3(CD>H9 zRxnI#Iy`AAFoXTEG_AvR#MGjxbCGY%{i{jgpWQg}H2Fws8AlGet%BIex)%s9!h0J1 zDbjzXpZ V?OOn1-6d-M}I_$B{x|6_&F t5PbmV-(&f)_}~awEji$uiN+MWSl z3bV5J ySqm_;$?vBGB-m9JH{%G65{)UCTBU~y#CSXP?@43cOy4?;@EC N)5Ex bfL zjximKEuELL(K?7yB;fE;2*p7teM5HlFVD(L+d2k8z5{$m{ P+GzJ~ZElJ4@~(**H2g@HnSMvld2Z`qdM-L^WMdts zlYXKU4{nGuD1;zMxSEo8J1#_QIQ*P!_ }FIY5S%VsavRVRB6X%RvY zt5qaq3ywwymfdgz&1^6Uqt#W_NR>)Xw^aj~&W4i2-wNt88L~ORDQ1+^MbRN+>`c8! zAPj728Iyw(QdmYo(PPT}Rd|3I!ZAF5D|}{}NKjvr*KP2V2&~>RO3L%0ufE|wFRP Q=1%sQcW{%I~b&q@*Ptmz@dvF|2e|zZG=VqnX*V9KJzbPQ@!=m$! z+Zu4JjpxjF>r+Jglnh)X{U`)&SeJ4xT_91--Hv91&5tF11@Q-A3x9t&OwYuU2j>s3 zw>iOEzrW;riG>kGC#SV#_F08NBR6$#x%i#w`vnHUos$`0o?YFurVxC-Db#El%&7D- z?dpdzQ3yfhaK7aS-djc)hC%Ge3OuinKk&hz;ZT83LAV^HQlAbYGCuGk9rF{lTr)P9 zK3| bF^fyU6U}54=NCo** zj0oC36N~G?AC$r6D*ditjhuG2{tU@-Js|z_f_ulr_wSS!JugJWhaiQ@%g^`E^18b| z2o=p*krDvYHQ};59L3NntET)b`;=Kd4q?oOelUZO) C;nyM)2lSV>Yao}5TH$`qVG2A&u+9H9&I55B{`-+Y#lKvtN+5QEy>fgQJ_-sMO z{<{vtnCXDfx95dv?fvpMb3F9}HW$_CYW64HrrS6ppx> hp#X9$rQ2An2vzWrMob6%f_0_I|D?dN=f0cNH*>yT1pOOH$j93{CAUA0?c6O zhb?e751t_>e5smvS&ORL!3A9g9w_?^F%p*3%WGqUhCW9L#yGYA_$oGN3!d>FDTmmw zzP1&u%E!GSWVBWP$Wx0_!q)i4WNum8_lbYQyQbBe(X?%96;!iXg@2P75rNQlIFw#e zS((XU^BNO}NR>4k$A194$Y<;LWaw AmA_c75biYvM2ugBksBV~53OtG zF3-YcFgcKF&*oL4UHWm5O1b)Xcj?enVL_4OBj%AZF`;l?vH5#JfiVG2(h|{LIU0Fa zLD!TTU>E0U6-6=TkdT}_@BMW^osgL7;Si9lJD$ZunXAWATE6X?%mI91BCG_?*?8$f zb$`>MrBrv_*>_)F5g|K~BwU2h5f7g?c7q7tR9w}r`C*fLmQ|%$5OTD-7( mPH7%FtqO04Z{(OF3 zlX~zcAk^ewO_Y$yNZD;nzoy{ l2Jwl-kHD* eV#2nW@_{;tz$Yba{cyJ}oNhdx|hx^);5S1^8_ ztKg>nV8hgSG?6Ao4G;X|wdj~u`!vyVg!xW*z4 1vy{0r~I~*#(Hwb zx;)pN>D?Q^K1zis1Od9i@3^-Z>G*v8Cm$K;lC904eqHQ%vg2jXbFr6+6G*DTm(Hz_ zJ*x86t)VNUmW8XR`ij=Mz9gIOmf^VA{1q!pZ7zKCYLe9$B`fBiEO>K2H#KdOvm_F{ z@6}8=Iw?WqMsn2r@TC*zeDwnHniyS*iTepfLAtL-y}uEB+y2|G0S21VWIA=zdz71i zY&b crhTtOAg7;b^xyL@=Xt(osegRk!}px={jrEaeR_9 zRA~kKHG+MFnd0)J?~l4t FH0fyBx}n;B8%>l=HYDBgNu?{f;b|51fN z@&fpp#p?CS{RMo(d8sLyS9fJ&q6PXx!OgYDjqm%(DfO3lr9>Gz922K8;8yMauxxuw z`i12_f1M6j{B7+nk!{h6)N|l3b1(Ai;Gz25MkytF6h*ur$;SlWJ5o%w-3?ephZ>25 z7Z+cf)44>$e*C2{( Ro4N22 zCPDbxoJNt7zXI=kko&6O(HLswiNKE=@H%o(+=pndPCP1WOh4# -e*B 4T<<|P;;wUYLh2g1&m3iA~qqJL*%BD5J`^}eD`{%OfXUdKZ zLH^(C7Wl8=aCt0))8;26I5&Patdj>fty%-_-!- u3S_VauqwSx n=tu#eL7Mn4Bx~ z>#a@4>CC@#%m;)}o)fwHSaG2F6ufnZIL6q&ol7NO5TOY#o-ozDQ|Sr|KdVC7hnAp; z^V*`Dl~|Nu1SI~VIT^`TIcJ8Q{mdPCqo6p#FmY%=EHbr0HDV5Nyf;>#!!SCf2BV@7 z5-orQ2DraRwH)BU;^Cc@qBAOs*A{>knCu!SE1upJvTZyj(*F|vX_~=IQ}OF_%H7du zo>z+gUawNE%>%X+3IbFdQClTaJXao0!T1dMWw6ecadCMT)jgR6$%Zps?xAshIs;`h z3|-CN(eUA!q?JQW2>v+)LVQt@V(EHhx|p^5nUF;xGw!A()wR`e=x?_iE>o==>SV(9 zGs$b)W`b-2{cmBF<4GB~Q$DT%A-NE~4lDm@1-X&Vh1Sdm&I4s6GSh+nQTIwYBRcw` z`y_gW_m7bPau|iaqw;cU#=Wny_!@uB6#E_Zl7)PHr&o7vg~o^P-=r5`zB6Y|Y~Ov4 zpD+|GhfdTd`w~Rx=v|cPLl;(Q-lKuk)%;{T+sDema`f^HOY4^hK?1{0I*g<)yEj4D zPuv@q6e3c!l3YcsRI2RNHM{5dBaO!AQq3`V^^I{Yd(Bccij8ZE|Ba<*C7eNqF*?W7S@oDb$9L=(P1D*-M{0?Me<7N2bfY z+`3d`!kzJ=wnZ7bqgXVaCRCMOPnLG$>TzHnz-)23+%dGXViR=H*E!5n1r+A_bm6Sd z3;?kgR_tz1A1}V2Hj^b(Cfz^<>HYEiUHO;qgi4s%*4uqdYSf0kw!?aEKbZ; R+fl3Re)F} zs}e0AbpfPnwZi4|%C~!B25i``;4jkaL|zd*mQgBoy;5VZ*p ;e+&Ycll~qO}|Q zxshHiL)5w*i^~@%D$6agqL0dEbH1Lh`44zT3Pafh*}a39CcFSs&F0LKd?WqS#N>Wv zVo&xf$==kvqRjSF5u>rstAmGHWYOC`NYz@mzy%_yfDBDk69qMW;Lj|(w-#8e?0opu z&q`zgo<9dOWNiHR6^#XR@+BMBfZ+man0SM!)?-ESKMax317ti5*qwiuH}gO(I(n4q z<_g0Pwbi7C3aCT262uC_v7^(Ub_j;Muyqhj$A)2L`!d4r?8sk@h6 X473W{6%BZqii`y;Y9Tao;Ecq0q%n-`i zB>q-Vtt~Qb!eahJregvV|M*khgPh=?bCZ_VsyTdR+4np=1lT|R0H0jW>!#p31oW?9 zmHuVa!x>H)GHD_wKR?Muc34>1+Dhpb>EX`GR<}g+I~G#~Fp1iXjwlDPLHb95o`^Sy zGaIAlF}Z_c 6d@~QG;AUPHbk)WJw_afjdH!*sVGGNW zD^Zs#N(NW}ln@I$;Cfw7hXSXg&dJRTMWo^JMMDmeP{7VlnGm25lhnkq_9e9~8IR2V zJIg$c2|Zp;5`h9XYmp7X>L^9?y4m9amHYQ-roRhc%pJro;7MSsi(iXzur+3NweFZ_ zlWE>4l%a6avi^p(aOOn4 r#>mk_Hxpk2XS48w`-K$vpXsVG zDoQX0g#b|t$xLGANA0geMa?HWxgxV>OR^Etl(_pdur#q9aKe1$V|1*ECMIHAKl&Qh zYAvy0gJ^Qq{*gPcS~38;B5s#+c_NYL$8AY{R%FNsE~MDpgfxc>2wY&?oahi}A}f5c zq6vlD;PA(M_P6YBKJe}^?cA8MEM a4|KGbbK8}=&VR1#@jad99|VTDEnnmtBNzl%Ig8P7 zyGu0{O^J!kU7TxGk&&ckJqH9M#8`PsX*xCns+VQFJDzn8fTGdB>OT9P{aZ=&^MYMR z9$~mkC9 wy^Bi&tb(o|>PafLPR^O(FqzFy)d;gCWizx=F?s$L%bN#3 zfKh10pYedz`oGB5E{BOX?r88{O?{3)S#zHTNeO5$(Do%g4QQ5|hw~qtak5SF_?eB) z^u{=meiZ*SLH73cQvYPuc;F}iG+rN;<> 1)f HB<^QCnbZjP-mTWuq866fPZV)<&aUD@Af>JLLja YBE*j%BEES Z~ z N7G@!)9bVa@Kma;wf|*o)xTT0eSfXz zb~sk1!9nXbzUpwD5q@nr?58)XUkxxHpgOHstuHkj!?3%4;Y#h45!>+yBpLjde5eQ& zn5n+_T-y|#qcomf*of5*HvO(t{{GvuU#o&gdI^K}@LDlLMnJ`_fJvU3=~6NrgWvj) z7e0am` BbZVo zM_c@Qf2?G#36M=dk!@Bm4fT)p2~2>@kodx_H<`nL;Y^o)e zMPA=-Tj`|iJWTs;lg`MpJ}iGZu}F!IhQsl0sNrZMYgS z;g#ff`YS`yt^9KcI99Z!MX3=N79Aa#eQGhj{H?pW&r$X)!0RqX(sHtm=0dNu!s|PZ zeIGs8A&RyvGnu6`E7mE_fJgm)Z96~7w_b n1ozmrl<-W|_AAIZ5b%SduSR4m&?$oVP2R8lB* 7jYPR+CU6c;fv}$46RTM^Rg#gB=?=Y`!~EGoJ+4L<{YF6d zq@C;j_>kJbM9qjdSSJGic`=lJ;wwQ+D2k-70m#*TCzu+(;h<0Mkv?v4P&6&bFPPJT z^h<&AdVvk#N1xg+OB^R1(U(&O5w?AGB4m@Q`J0pwlEe*z@2TgKMeG9afw{y|iSj|t zq`5*D3hBLk=t#=5Bz !^tFmU zaPQkzG(U}ETy_u!w0{4pU&I*n7+MD*cV~LF I8($%Yb>-RCRTROAyM&KC zz2R*1=gmp4-t37(JaBog*@W*(1-0R-un?1NJr4bmTjQ7Qc<=R9hYAD}6qr8*?a8<3 z!kP0{<{S>X7#s^C_bQ_v%{ReBr4Yq#>@6qfw_jE3TlwrsQVH8&$oKNTL}_HQ`4zoP z?-L+MRx67$v5qNh$f3p1X+V+Fw&0!e?T@ qUx{E>iNUxS2z z3{c|3o~;TtQ}U0rSsUV|IHyf#3;XtgrynXvn5HJAsdyapt~IuMT )9ZhX*j5zRuD8?Muvc8!!xkU6v8SLgN~=r*4TM=3Og)n1K44j@<$T70Wu zi#`uT0wa~{O=R3h#jHyer~&%BOuit-xS9)~ek&fkEUvpM5T6G{t+}EYKK-x3yp+ zxDAgjqlmq1W$d2he-OB?4ThQ9I{1ZG9xNtH@_%*wMPXUlaSk&wC6X193;33e%535w z-5JECI`gy5K5-^1$fPV1LGuUs;)MZQbmA>xo0rAaLiEGPEEw{B4MMQXSR%r{JhLjS z@?m@mnkA?YtfHwd5H=*}+QDG j)WT>=#hmFm6d$hr0686v1MAR9M@SpNonqt=0%oh;P(sjXhJ8aZ82 z+lX^MfqqHg07kufw}%^@%9q#(&=YbF4|#%aNvjz{tf`_XY^=Fz^!NyKU&uvn)dUfP zjXvP>q>;rLcyx3CA4lk@0U26H+99kmJJP#6?Drd9&K9g%OC3ATiAO8p7f2<_7b4#^ zy=im0e$wL3z1zj|={*U>F9-vpK5rPyL^`>Z*DXVvVvg$eY}}E)n^wS}qr6=z%^Suu zg8lSQxMhC=d>uD{)&>`jba-AKv3ol~x;dDBo)flRl4rVnv5ksqnFA?Gn=h{|CGB(L z^;UiQ(R8|mn3&iui*3ZxPaI=zgLyFeS#$(!?m8|FQZw0v{TVE)G`a}@2H3zhzz?=h zYp-NH>iXprNBj~g<) eLS(UYX >;SBy;}ZK`+?5p z(9A9cx-lvs_X9YWqbNlL8D>weT7qo+5FCtq;1N(2lrEV9R6#txr9 EErQ=NOpsYZM?ss9d~YW1BytaHY;h$et9Ad zXVW0cNCowaUMe6$@o)WQgIZB6(25VCsFVZ&KKDV5jW*3}v^wPfwzqO;6rb28Mi5GW zcyK?H!|`1eGST&suyPs@P4`1}=OGg<9I3CdMPke2^6t^f0h=wUjWMi1QTmbMo~`jK zAPHVc_8YqD_9D-qt;2)oP{M-+_0_N2d71xt?vZmtFp_=}Hae2T2U;oMTbSz^nGKXo z?UpGPzXiNEVnTuKM_EA4R58Tov-Z;DlsgvN@LnK1q!dmk6?V5J1i-D_SM%yJ1jlY6 zJh^})y6^Ujtrr4CEZ|1WnS9L{(d8{wmAmEYzBp-yr-P-z)6*fdN&Zd1XqX%H#FkRt zXMY8laR6G~ZwFu4`=MqyIFPjq0 vJb(#+mZB0xmMw$gI?iA-tT(08-?$aDK?WXkIInA+g7|?0DKQq! zDsD}L#yvfUtkV2Xepi l BKaI9t%p_jPg2#6Khov{Lf?+PM+um%8O^`&AworJdnr8B0(<&h zVYbzJx0Q#D)>`GBpLo9oy F9z46}Um>>K%+T~$ zX6Zfi2wQ3F?t_Vy<*X4a`R`e03&^^;D#q6af@T C!F zB~czW8#*u1@YzqR6%T4M{Py@+H0&>HT%;`{aWdbE+#+nzrG_I@a`NA9pV6n+(|qwX ztVBR0R$0<4sw1qFpU=u^%j%I(@zzP~RHN&7`Ci1O3+E(1GVIg`x0xlOk%^0vbzK7| zV7#ZY_-XMD4dN~B{s84f4$5HDDEOE~UnB{H`OhwdyL#z4YF7 d~1xU~AmoMQo z4C~8eL*>@apcGLl0DFw@iA39z{;3V(A}zMj5(W%=>9BV-4IB>x4dr{R_!EhSAtZLd zz`#^^2*YrgR>eC+m?vjTe6$dbv#0l1|53DD!&>~VegFLrq^H%5C0XdpOx1HovWyHN zDhS97uCJviH8 g2M{T1)htHACpZ3T<-RBIoOJj<@fwr$9 zb edk9%2Sn($ ziiXyIV&N_c?dP!;dj8C+%9t5a^%VSW6It%dMkrpIdDBelNQ=YL*J03p9@Cv)99-;) z;bmQGqg0B$sT@7JF$FKr`iWk$oNPi*z$xrwvO4fko4|pPEePhv07~4urjF+&`&;&} zKe<6gyUUfkObj|UZy&xk@#~p)@S73XRF9%fOwBz0JfF}ON}v%i%S?7!S6m*?os$d3 z^|NJ|wE2zNAA4oXnzlZxWV;b=Btura-SRD&3rqd${ttHUw1+}F(;3QSN41BTdiM|F zJbKNr-9gFlE6{y}f4NUQL^HTxM~`7{oZA!6xH||OeoIqS-=_Kj9PKo@F^!EL<`FV8 zIo=j4o9AqM=OR(WxMuQ^_4`i6z1f(qBQ9!vFRvjM4bYGYC-&-Sw zyE+`rATH}FVC%Z%rcBji8>|toyx`}cmSrLxkU%|}$Kz@pz#snHCF@J!0YJ+Z{{4k7 zW{sV$EOQSx2)w)zaN(t<^9K(xg+NW}A?E3BQ4L5n4BdTvJE`_|&$#M1CgM^1#k-*Z zH|>R^tQEuFx@yz>ojTVL&6gSjaq2H*SgTz`c_^Q#HR)i3 )SqFGEV*&J zrLv2h=`YLG-1mfq!;)eZTwZ?K1x=I#P3);UvCK v%Qo;Tr6r%@$cBwzR~yme3~!+@&!qOram3A6ZztN*$$l}HjJS57d& zb=9?jqS}X!&y%{zNx%D&&^ph#jCVyKZ*2Pr7cmtl19lqCn5@<{63OkPcK9Uv`75-d zNgfYYG@MTMM W*GO8ySt8sF?$IMQ-z4k ztQNC#L!tY-2lVYa`&&Dq1UYf}gtsz;YDE&3|A5`-BSPy}yHp-Ag%FxZ{^%4?H$QJ( zC~ozZDj)>9epFQbw;kl?&AR|emM=5Mz! 1Kbe~ z^}7LWAh+&6uOjo?_PV!3b=Mb9>&8{Awu#HskG##1h;Nym(+%Od?GX4@0u=+Auw{4I z%2}&k#mwMZqb*w{2B_q)>$Ub|;6|Mo%ypg^eEu56#!Er5<_t#0y`Dhex(E6q@OCM1 zwbg*Ce;%&54`TkA99o@h`?<&eVVm+vrPT&oaO}1x+ {YjM!G0EfTmNU-U9QVg124h@b4L4=kgH!`r}vusW (rs{GoBA zFa=(j3-00K3|?)c3PS9>VBGDgX?FfQkw=L0^*ZmIOsE;+Aqm@X 2gX_^^TFhBfZd%Qr?_||DLsv?d*ChK$b_EU_yfiY~C~1mz`%bo5OoC=m%_Sd- zX!)r(TvfK)zx4T3pKF(~;{oj>swX6ygp<>k$cEN;2l4Cbk4fSJ9=Q+2$cg@(CY^3z z#5cl`JZ$715uP5I=j|Bn>AAXhq*|pm^T@ZJX;!Wp@&=ND)t0Qc@XFI8=k`T&M6YcK z1|G-mw)f-eB|%qW)C&!XXUuFr_MO|`lZZA#zFU$l^~eQZ)9iqEIgYN!B8^}}JbP*^ z8F^iA7Yf>Kc&eeU&v(?iPIb{@m%30zGb3>C0+86$2fmPJk?#ImsL_p~5>ob&(O$g~ zj?etOB@bv$`&r4*xp1rc)GoKhpN@lv$@5{x<9YYHb*BxuMGNQ(0%FtMANCuIH9^7y z%PUbgmzTiybIrH`9M*qsWg-jDEOUlHwv7;{QAJOx+aBbclA0KX?g!(E~=8ZD(OlsVw)cewImtyFr7GLkJ;eP?^JPK zLoGsR2lKx2HXOPLaUKd4`Yhskf|f72%vs?0Utk8d@D&fNL%4Ay*;IA)_l_2AP)HvF zyF=3irK^~*>sP9PviFYGR^-{+{dj}1Ox1sTrBskK6=Cbb27uQFC)`bzB_0}J)oSwD zi4sWk_?O#NJT^A*Oqv2Qj-(jLVr-IrJ_t