From 2f10209b9786f94687c90084e420b97196740c3b Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 15:28:28 +0200 Subject: [PATCH 1/7] assignment finished --- week1/project/ecommerce/.gitignore | 24 + week1/project/ecommerce/README.md | 12 + week1/project/ecommerce/eslint.config.js | 33 + .../ecommerce/fake-data/all-categories.js | 6 + .../ecommerce/fake-data/all-products.js | 269 ++ week1/project/ecommerce/index.html | 13 + week1/project/ecommerce/package-lock.json | 2812 +++++++++++++++++ week1/project/ecommerce/package.json | 27 + week1/project/ecommerce/public/vite.svg | 1 + week1/project/ecommerce/src/App.css | 6 + week1/project/ecommerce/src/App.jsx | 13 + .../src/Components/CategoryButton.css | 20 + .../src/Components/CategoryButton.jsx | 13 + .../src/Composite/CategoryFilter.css | 14 + .../src/Composite/CategoryFilter.jsx | 27 + .../ecommerce/src/Composite/ProductCard.css | 30 + .../ecommerce/src/Composite/ProductCard.jsx | 15 + .../ecommerce/src/Composite/ProductList.css | 13 + .../ecommerce/src/Composite/ProductList.jsx | 13 + .../project/ecommerce/src/Pages/FeedPage.css | 15 + .../project/ecommerce/src/Pages/FeedPage.jsx | 36 + week1/project/ecommerce/src/assets/react.svg | 1 + week1/project/ecommerce/src/index.css | 14 + week1/project/ecommerce/src/main.jsx | 10 + week1/project/ecommerce/vite.config.js | 7 + 25 files changed, 3444 insertions(+) create mode 100644 week1/project/ecommerce/.gitignore create mode 100644 week1/project/ecommerce/README.md create mode 100644 week1/project/ecommerce/eslint.config.js create mode 100644 week1/project/ecommerce/fake-data/all-categories.js create mode 100644 week1/project/ecommerce/fake-data/all-products.js create mode 100644 week1/project/ecommerce/index.html create mode 100644 week1/project/ecommerce/package-lock.json create mode 100644 week1/project/ecommerce/package.json create mode 100644 week1/project/ecommerce/public/vite.svg create mode 100644 week1/project/ecommerce/src/App.css create mode 100644 week1/project/ecommerce/src/App.jsx create mode 100644 week1/project/ecommerce/src/Components/CategoryButton.css create mode 100644 week1/project/ecommerce/src/Components/CategoryButton.jsx create mode 100644 week1/project/ecommerce/src/Composite/CategoryFilter.css create mode 100644 week1/project/ecommerce/src/Composite/CategoryFilter.jsx create mode 100644 week1/project/ecommerce/src/Composite/ProductCard.css create mode 100644 week1/project/ecommerce/src/Composite/ProductCard.jsx create mode 100644 week1/project/ecommerce/src/Composite/ProductList.css create mode 100644 week1/project/ecommerce/src/Composite/ProductList.jsx create mode 100644 week1/project/ecommerce/src/Pages/FeedPage.css create mode 100644 week1/project/ecommerce/src/Pages/FeedPage.jsx create mode 100644 week1/project/ecommerce/src/assets/react.svg create mode 100644 week1/project/ecommerce/src/index.css create mode 100644 week1/project/ecommerce/src/main.jsx create mode 100644 week1/project/ecommerce/vite.config.js diff --git a/week1/project/ecommerce/.gitignore b/week1/project/ecommerce/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/week1/project/ecommerce/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/week1/project/ecommerce/README.md b/week1/project/ecommerce/README.md new file mode 100644 index 0000000000..7059a962ad --- /dev/null +++ b/week1/project/ecommerce/README.md @@ -0,0 +1,12 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/week1/project/ecommerce/eslint.config.js b/week1/project/ecommerce/eslint.config.js new file mode 100644 index 0000000000..ec2b712d30 --- /dev/null +++ b/week1/project/ecommerce/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/week1/project/ecommerce/fake-data/all-categories.js b/week1/project/ecommerce/fake-data/all-categories.js new file mode 100644 index 0000000000..c3745dfefc --- /dev/null +++ b/week1/project/ecommerce/fake-data/all-categories.js @@ -0,0 +1,6 @@ +export default [ + "FAKE: electronics", + "FAKE: jewelery", + "FAKE: men's clothing", + "FAKE: women's clothing", +]; diff --git a/week1/project/ecommerce/fake-data/all-products.js b/week1/project/ecommerce/fake-data/all-products.js new file mode 100644 index 0000000000..cd1ac1a497 --- /dev/null +++ b/week1/project/ecommerce/fake-data/all-products.js @@ -0,0 +1,269 @@ +export default [ + { + id: 1, + title: "FAKE: Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops", + price: 109.95, + description: + "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday", + category: "men's clothing", + image: "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg", + rating: { + rate: 3.9, + count: 120, + }, + }, + { + id: 2, + title: "FAKE: Mens Casual Premium Slim Fit T-Shirts ", + price: 22.3, + description: + "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.", + category: "men's clothing", + image: + "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg", + rating: { + rate: 4.1, + count: 259, + }, + }, + { + id: 3, + title: "FAKE: Mens Cotton Jacket", + price: 55.99, + description: + "great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_.jpg", + rating: { + rate: 4.7, + count: 500, + }, + }, + { + id: 4, + title: "FAKE: Mens Casual Slim Fit", + price: 15.99, + description: + "The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_.jpg", + rating: { + rate: 2.1, + count: 430, + }, + }, + { + id: 5, + title: + "John Hardy Women's Legends Naga Gold & Silver Dragon Station Chain Bracelet", + price: 695, + description: + "From our Legends Collection, the Naga was inspired by the mythical water dragon that protects the ocean's pearl. Wear facing inward to be bestowed with love and abundance, or outward for protection.", + category: "jewelery", + image: "https://fakestoreapi.com/img/71pWzhdJNwL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 4.6, + count: 400, + }, + }, + { + id: 6, + title: "FAKE: Solid Gold Petite Micropave ", + price: 168, + description: + "Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.", + category: "jewelery", + image: "https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3.9, + count: 70, + }, + }, + { + id: 7, + title: "FAKE: White Gold Plated Princess", + price: 9.99, + description: + "Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...", + category: "jewelery", + image: "https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3, + count: 400, + }, + }, + { + id: 8, + title: "FAKE: Pierced Owl Rose Gold Plated Stainless Steel Double", + price: 10.99, + description: + "Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel", + category: "jewelery", + image: "https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 1.9, + count: 100, + }, + }, + { + id: 9, + title: "FAKE: WD 2TB Elements Portable External Hard Drive - USB 3.0 ", + price: 64, + description: + "USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system", + category: "electronics", + image: "https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_.jpg", + rating: { + rate: 3.3, + count: 203, + }, + }, + { + id: 10, + title: "FAKE: SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s", + price: 109, + description: + "Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)", + category: "electronics", + image: "https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 470, + }, + }, + { + id: 11, + title: + "Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5", + price: 109, + description: + "3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.", + category: "electronics", + image: "https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 319, + }, + }, + { + id: 12, + title: + "WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive", + price: 114, + description: + "Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty", + category: "electronics", + image: "https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 400, + }, + }, + { + id: 13, + title: + "FAKE: Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin", + price: 599, + description: + "21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz", + category: "electronics", + image: "https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 250, + }, + }, + { + id: 14, + title: + "Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED ", + price: 999.99, + description: + "49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag", + category: "electronics", + image: "https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_.jpg", + rating: { + rate: 2.2, + count: 140, + }, + }, + { + id: 15, + title: "FAKE: BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats", + price: 56.99, + description: + "Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_.jpg", + rating: { + rate: 2.6, + count: 235, + }, + }, + { + id: 16, + title: + "Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket", + price: 29.95, + description: + "100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON", + category: "women's clothing", + image: "https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_.jpg", + rating: { + rate: 2.9, + count: 340, + }, + }, + { + id: 17, + title: "FAKE: Rain Jacket Women Windbreaker Striped Climbing Raincoats", + price: 39.99, + description: + "Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2.jpg", + rating: { + rate: 3.8, + count: 679, + }, + }, + { + id: 18, + title: "FAKE: MBJ Women's Solid Short Sleeve Boat Neck V ", + price: 9.85, + description: + "95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_.jpg", + rating: { + rate: 4.7, + count: 130, + }, + }, + { + id: 19, + title: "FAKE: Opna Women's Short Sleeve Moisture", + price: 7.95, + description: + "100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_.jpg", + rating: { + rate: 4.5, + count: 146, + }, + }, + { + id: 20, + title: "FAKE: DANVOUY Womens T Shirt Casual Cotton Short", + price: 12.99, + description: + "95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_.jpg", + rating: { + rate: 3.6, + count: 145, + }, + }, +]; diff --git a/week1/project/ecommerce/index.html b/week1/project/ecommerce/index.html new file mode 100644 index 0000000000..0c589eccd4 --- /dev/null +++ b/week1/project/ecommerce/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/week1/project/ecommerce/package-lock.json b/week1/project/ecommerce/package-lock.json new file mode 100644 index 0000000000..e3a3c78d14 --- /dev/null +++ b/week1/project/ecommerce/package-lock.json @@ -0,0 +1,2812 @@ +{ + "name": "ecommerce", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ecommerce", + "version": "0.0.0", + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", + "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.2.tgz", + "integrity": "sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.11", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz", + "integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/week1/project/ecommerce/package.json b/week1/project/ecommerce/package.json new file mode 100644 index 0000000000..445e479d8e --- /dev/null +++ b/week1/project/ecommerce/package.json @@ -0,0 +1,27 @@ +{ + "name": "ecommerce", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } +} diff --git a/week1/project/ecommerce/public/vite.svg b/week1/project/ecommerce/public/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week1/project/ecommerce/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week1/project/ecommerce/src/App.css b/week1/project/ecommerce/src/App.css new file mode 100644 index 0000000000..027945e42d --- /dev/null +++ b/week1/project/ecommerce/src/App.css @@ -0,0 +1,6 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/App.jsx b/week1/project/ecommerce/src/App.jsx new file mode 100644 index 0000000000..f9bd63fd7f --- /dev/null +++ b/week1/project/ecommerce/src/App.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import './App.css'; +import FeedPage from './Pages/FeedPage'; + +function App() { + return ( +
+ +
+ ); +} + +export default App; diff --git a/week1/project/ecommerce/src/Components/CategoryButton.css b/week1/project/ecommerce/src/Components/CategoryButton.css new file mode 100644 index 0000000000..e6eafb7873 --- /dev/null +++ b/week1/project/ecommerce/src/Components/CategoryButton.css @@ -0,0 +1,20 @@ +.category-button { + padding: 10px 16px; + margin: 4px; + border: 1px solid #ccc; + background-color: white !important; + color: #333; + border-radius: 6px !important; + cursor: pointer; + transition: all 0.2s ease-in-out; +} + +.category-button:hover { + background-color: #f5f5f5; +} + +.category-button.active { + background-color: #0077cc !important; + color: white; + border-color: #0077cc; +} diff --git a/week1/project/ecommerce/src/Components/CategoryButton.jsx b/week1/project/ecommerce/src/Components/CategoryButton.jsx new file mode 100644 index 0000000000..edb73c2a3c --- /dev/null +++ b/week1/project/ecommerce/src/Components/CategoryButton.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./CategoryButton.css"; + +export default function CategoryButton({ category, isActive, onClick }) { + return ( + + ); +} diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.css b/week1/project/ecommerce/src/Composite/CategoryFilter.css new file mode 100644 index 0000000000..e8e3e88c51 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/CategoryFilter.css @@ -0,0 +1,14 @@ +.category-filter { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: center; + margin: 20px 0; +} + +@media (max-width: 400px) { + .category-filter { + flex-direction: column; + align-items: stretch; + } +} diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.jsx b/week1/project/ecommerce/src/Composite/CategoryFilter.jsx new file mode 100644 index 0000000000..aadf94100e --- /dev/null +++ b/week1/project/ecommerce/src/Composite/CategoryFilter.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import "./CategoryFilter.css"; +import CategoryButton from "../Components/CategoryButton"; + + +export default function CategoryFilter({ categories, selectedCategory, onSelectCategory }) { + const handleClick = (category) => { + if (selectedCategory === category) { + onSelectCategory(null); + } else { + onSelectCategory(category); + } + }; + + return ( +
+ {categories.map((category) => ( + handleClick(category)} + /> + ))} +
+ ); +} diff --git a/week1/project/ecommerce/src/Composite/ProductCard.css b/week1/project/ecommerce/src/Composite/ProductCard.css new file mode 100644 index 0000000000..44c98b45cc --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductCard.css @@ -0,0 +1,30 @@ +.product-card { + border: 1px solid #ddd; + padding: 10px; + border-radius: 8px; + text-align: center; + color: #000; + font-size: 10px; +} + +/* .product-card img { + max-height: 250px; + width: 100%; + object-fit: contain; + display: block; + margin: 0 auto; +} */ + +.product-image { + height: 250px; + display: flex; + align-items: center; + justify-content: center; + padding: 10px; +} + +.product-image img { + max-height: 100%; + max-width: 100%; + object-fit: contain; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/Composite/ProductCard.jsx b/week1/project/ecommerce/src/Composite/ProductCard.jsx new file mode 100644 index 0000000000..1e0b18ea06 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductCard.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import "./ProductCard.css"; + +export default function ProductCard({ product }) { + console.log("PRODUCT:", product); + return ( +
+
+ {product.title} +
+

{product.title}

+

{product.price} €

+
+ ); +} diff --git a/week1/project/ecommerce/src/Composite/ProductList.css b/week1/project/ecommerce/src/Composite/ProductList.css new file mode 100644 index 0000000000..0a5f653568 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductList.css @@ -0,0 +1,13 @@ +.product-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 16px; + margin-top: 24px; +} + +@media (max-width: 600px) { + .product-list { + grid-template-columns: 1fr; + gap: 12px; + } +} diff --git a/week1/project/ecommerce/src/Composite/ProductList.jsx b/week1/project/ecommerce/src/Composite/ProductList.jsx new file mode 100644 index 0000000000..18cd7decc0 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductList.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./ProductList.css"; +import ProductCard from "./ProductCard"; + +export default function ProductList({ products }) { + return ( +
+ {products.map((product) => ( + + ))} +
+ ); +} diff --git a/week1/project/ecommerce/src/Pages/FeedPage.css b/week1/project/ecommerce/src/Pages/FeedPage.css new file mode 100644 index 0000000000..787458b3c5 --- /dev/null +++ b/week1/project/ecommerce/src/Pages/FeedPage.css @@ -0,0 +1,15 @@ +.feed-page { + max-width: 1200px; + margin: 0 auto; + padding: 16px; +} + +@media (max-width: 768px) { + .feed-page { + padding: 8px; + } +} + +h1{ + color: #000; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/Pages/FeedPage.jsx b/week1/project/ecommerce/src/Pages/FeedPage.jsx new file mode 100644 index 0000000000..8be0a41f98 --- /dev/null +++ b/week1/project/ecommerce/src/Pages/FeedPage.jsx @@ -0,0 +1,36 @@ +import React, { useState, useEffect } from "react"; +import "./FeedPage.css"; +import CategoryFilter from "../Composite/CategoryFilter"; +import ProductList from "../Composite/ProductList"; + +import categories from "../../fake-data/all-categories"; +import allProducts from "../../fake-data/all-products"; + +export default function FeedPage() { + const [selectedCategory, setSelectedCategory] = useState(null); + const [products, setProducts] = useState(allProducts); + + useEffect(() => { + if (!selectedCategory) { + setProducts(allProducts); + } else { + const cleanedCategory = selectedCategory.replace("FAKE: ", ""); + const filtered = allProducts.filter( + (product) => product.category === cleanedCategory + ); + setProducts(filtered); + } + }, [selectedCategory]); + + return ( +
+

Products

+ + +
+ ); +} diff --git a/week1/project/ecommerce/src/assets/react.svg b/week1/project/ecommerce/src/assets/react.svg new file mode 100644 index 0000000000..6c87de9bb3 --- /dev/null +++ b/week1/project/ecommerce/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week1/project/ecommerce/src/index.css b/week1/project/ecommerce/src/index.css new file mode 100644 index 0000000000..3924fb2265 --- /dev/null +++ b/week1/project/ecommerce/src/index.css @@ -0,0 +1,14 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #ffffff; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/main.jsx b/week1/project/ecommerce/src/main.jsx new file mode 100644 index 0000000000..b9a1a6deac --- /dev/null +++ b/week1/project/ecommerce/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/week1/project/ecommerce/vite.config.js b/week1/project/ecommerce/vite.config.js new file mode 100644 index 0000000000..8b0f57b91a --- /dev/null +++ b/week1/project/ecommerce/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From db220d13c92c8c6b4e0bf24609399f66b94eea09 Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 15:53:48 +0200 Subject: [PATCH 2/7] dist added --- week1/project/ecommerce/.gitignore | 2 - .../ecommerce/dist/assets/index-9zvwJ4Pe.css | 1 + .../ecommerce/dist/assets/index-Cx-n_OD2.js | 49 +++++++++++++++++++ week1/project/ecommerce/dist/index.html | 14 ++++++ week1/project/ecommerce/dist/vite.svg | 1 + 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css create mode 100644 week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js create mode 100644 week1/project/ecommerce/dist/index.html create mode 100644 week1/project/ecommerce/dist/vite.svg diff --git a/week1/project/ecommerce/.gitignore b/week1/project/ecommerce/.gitignore index a547bf36d8..234f2f1beb 100644 --- a/week1/project/ecommerce/.gitignore +++ b/week1/project/ecommerce/.gitignore @@ -8,8 +8,6 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist -dist-ssr *.local # Editor directories and files diff --git a/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css b/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css new file mode 100644 index 0000000000..ccbb16d581 --- /dev/null +++ b/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css @@ -0,0 +1 @@ +:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.feed-page{max-width:1200px;margin:0 auto;padding:16px}@media (max-width: 768px){.feed-page{padding:8px}}h1{color:#000}.category-filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:20px 0}@media (max-width: 400px){.category-filter{flex-direction:column;align-items:stretch}}.category-button{padding:10px 16px;margin:4px;border:1px solid #ccc;background-color:#fff!important;color:#333;border-radius:6px!important;cursor:pointer;transition:all .2s ease-in-out}.category-button:hover{background-color:#f5f5f5}.category-button.active{background-color:#07c!important;color:#fff;border-color:#07c}.product-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:24px}@media (max-width: 600px){.product-list{grid-template-columns:1fr;gap:12px}}.product-card{border:1px solid #ddd;padding:10px;border-radius:8px;text-align:center;color:#000;font-size:10px}.product-image{height:250px;display:flex;align-items:center;justify-content:center;padding:10px}.product-image img{max-height:100%;max-width:100%;object-fit:contain} diff --git a/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js b/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js new file mode 100644 index 0000000000..d44895c79f --- /dev/null +++ b/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js @@ -0,0 +1,49 @@ +(function(){const W=document.createElement("link").relList;if(W&&W.supports&&W.supports("modulepreload"))return;for(const C of document.querySelectorAll('link[rel="modulepreload"]'))m(C);new MutationObserver(C=>{for(const K of C)if(K.type==="childList")for(const sl of K.addedNodes)sl.tagName==="LINK"&&sl.rel==="modulepreload"&&m(sl)}).observe(document,{childList:!0,subtree:!0});function Z(C){const K={};return C.integrity&&(K.integrity=C.integrity),C.referrerPolicy&&(K.referrerPolicy=C.referrerPolicy),C.crossOrigin==="use-credentials"?K.credentials="include":C.crossOrigin==="anonymous"?K.credentials="omit":K.credentials="same-origin",K}function m(C){if(C.ep)return;C.ep=!0;const K=Z(C);fetch(C.href,K)}})();var Wc={exports:{}},ve={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Fd;function Uy(){if(Fd)return ve;Fd=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.fragment");function Z(m,C,K){var sl=null;if(K!==void 0&&(sl=""+K),C.key!==void 0&&(sl=""+C.key),"key"in C){K={};for(var Yl in C)Yl!=="key"&&(K[Yl]=C[Yl])}else K=C;return C=K.ref,{$$typeof:_,type:m,key:sl,ref:C!==void 0?C:null,props:K}}return ve.Fragment=W,ve.jsx=Z,ve.jsxs=Z,ve}var Pd;function Ry(){return Pd||(Pd=1,Wc.exports=Uy()),Wc.exports}var _l=Ry(),$c={exports:{}},j={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Id;function Hy(){if(Id)return j;Id=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.portal"),Z=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),K=Symbol.for("react.consumer"),sl=Symbol.for("react.context"),Yl=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),T=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),il=Symbol.iterator;function el(s){return s===null||typeof s!="object"?null:(s=il&&s[il]||s["@@iterator"],typeof s=="function"?s:null)}var Bl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ql=Object.assign,dt={};function Gl(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}Gl.prototype.isReactComponent={},Gl.prototype.setState=function(s,E){if(typeof s!="object"&&typeof s!="function"&&s!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,E,"setState")},Gl.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")};function da(){}da.prototype=Gl.prototype;function _t(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}var Dl=_t.prototype=new da;Dl.constructor=_t,ql(Dl,Gl.prototype),Dl.isPureReactComponent=!0;var rt=Array.isArray,J={H:null,A:null,T:null,S:null,V:null},Zl=Object.prototype.hasOwnProperty;function Vl(s,E,O,p,H,w){return O=w.ref,{$$typeof:_,type:s,key:E,ref:O!==void 0?O:null,props:w}}function Kl(s,E){return Vl(s.type,E,void 0,void 0,void 0,s.props)}function mt(s){return typeof s=="object"&&s!==null&&s.$$typeof===_}function Na(s){var E={"=":"=0",":":"=2"};return"$"+s.replace(/[=:]/g,function(O){return E[O]})}var pt=/\/+/g;function Ml(s,E){return typeof s=="object"&&s!==null&&s.key!=null?Na(""+s.key):E.toString(36)}function ra(){}function ya(s){switch(s.status){case"fulfilled":return s.value;case"rejected":throw s.reason;default:switch(typeof s.status=="string"?s.then(ra,ra):(s.status="pending",s.then(function(E){s.status==="pending"&&(s.status="fulfilled",s.value=E)},function(E){s.status==="pending"&&(s.status="rejected",s.reason=E)})),s.status){case"fulfilled":return s.value;case"rejected":throw s.reason}}throw s}function Ul(s,E,O,p,H){var w=typeof s;(w==="undefined"||w==="boolean")&&(s=null);var G=!1;if(s===null)G=!0;else switch(w){case"bigint":case"string":case"number":G=!0;break;case"object":switch(s.$$typeof){case _:case W:G=!0;break;case U:return G=s._init,Ul(G(s._payload),E,O,p,H)}}if(G)return H=H(s),G=p===""?"."+Ml(s,0):p,rt(H)?(O="",G!=null&&(O=G.replace(pt,"$&/")+"/"),Ul(H,E,O,"",function(xt){return xt})):H!=null&&(mt(H)&&(H=Kl(H,O+(H.key==null||s&&s.key===H.key?"":(""+H.key).replace(pt,"$&/")+"/")+G)),E.push(H)),1;G=0;var Jl=p===""?".":p+":";if(rt(s))for(var cl=0;cl>>1,s=S[al];if(0>>1;alC(p,B))HC(w,p)?(S[al]=w,S[H]=B,al=H):(S[al]=p,S[O]=B,al=O);else if(HC(w,B))S[al]=w,S[H]=B,al=H;else break l}}return z}function C(S,z){var B=S.sortIndex-z.sortIndex;return B!==0?B:S.id-z.id}if(_.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var K=performance;_.unstable_now=function(){return K.now()}}else{var sl=Date,Yl=sl.now();_.unstable_now=function(){return sl.now()-Yl}}var R=[],T=[],U=1,il=null,el=3,Bl=!1,ql=!1,dt=!1,Gl=!1,da=typeof setTimeout=="function"?setTimeout:null,_t=typeof clearTimeout=="function"?clearTimeout:null,Dl=typeof setImmediate<"u"?setImmediate:null;function rt(S){for(var z=Z(T);z!==null;){if(z.callback===null)m(T);else if(z.startTime<=S)m(T),z.sortIndex=z.expirationTime,W(R,z);else break;z=Z(T)}}function J(S){if(dt=!1,rt(S),!ql)if(Z(R)!==null)ql=!0,Zl||(Zl=!0,Ml());else{var z=Z(T);z!==null&&Ul(J,z.startTime-S)}}var Zl=!1,Vl=-1,Kl=5,mt=-1;function Na(){return Gl?!0:!(_.unstable_now()-mtS&&Na());){var al=il.callback;if(typeof al=="function"){il.callback=null,el=il.priorityLevel;var s=al(il.expirationTime<=S);if(S=_.unstable_now(),typeof s=="function"){il.callback=s,rt(S),z=!0;break t}il===Z(R)&&m(R),rt(S)}else m(R);il=Z(R)}if(il!==null)z=!0;else{var E=Z(T);E!==null&&Ul(J,E.startTime-S),z=!1}}break l}finally{il=null,el=B,Bl=!1}z=void 0}}finally{z?Ml():Zl=!1}}}var Ml;if(typeof Dl=="function")Ml=function(){Dl(pt)};else if(typeof MessageChannel<"u"){var ra=new MessageChannel,ya=ra.port2;ra.port1.onmessage=pt,Ml=function(){ya.postMessage(null)}}else Ml=function(){da(pt,0)};function Ul(S,z){Vl=da(function(){S(_.unstable_now())},z)}_.unstable_IdlePriority=5,_.unstable_ImmediatePriority=1,_.unstable_LowPriority=4,_.unstable_NormalPriority=3,_.unstable_Profiling=null,_.unstable_UserBlockingPriority=2,_.unstable_cancelCallback=function(S){S.callback=null},_.unstable_forceFrameRate=function(S){0>S||125al?(S.sortIndex=B,W(T,S),Z(R)===null&&S===Z(T)&&(dt?(_t(Vl),Vl=-1):dt=!0,Ul(J,B-al))):(S.sortIndex=s,W(R,S),ql||Bl||(ql=!0,Zl||(Zl=!0,Ml()))),S},_.unstable_shouldYield=Na,_.unstable_wrapCallback=function(S){var z=el;return function(){var B=el;el=z;try{return S.apply(this,arguments)}finally{el=B}}}}(Ic)),Ic}var ar;function Yy(){return ar||(ar=1,Pc.exports=Ny()),Pc.exports}var lf={exports:{}},Nl={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ur;function By(){if(ur)return Nl;ur=1;var _=af();function W(R){var T="https://react.dev/errors/"+R;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_)}catch(W){console.error(W)}}return _(),lf.exports=By(),lf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var nr;function Cy(){if(nr)return me;nr=1;var _=Yy(),W=af(),Z=qy();function m(l){var t="https://react.dev/errors/"+l;if(1s||(l.current=al[s],al[s]=null,s--)}function p(l,t){s++,al[s]=l.current,l.current=t}var H=E(null),w=E(null),G=E(null),Jl=E(null);function cl(l,t){switch(p(G,t),p(w,l),p(H,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?zd(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=zd(t),l=Od(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}O(H),p(H,l)}function xt(){O(H),O(w),O(G)}function Bn(l){l.memoizedState!==null&&p(Jl,l);var t=H.current,a=Od(t,l.type);t!==a&&(p(w,l),p(H,a))}function ge(l){w.current===l&&(O(H),O(w)),Jl.current===l&&(O(Jl),oe._currentValue=B)}var qn=Object.prototype.hasOwnProperty,Cn=_.unstable_scheduleCallback,Gn=_.unstable_cancelCallback,cr=_.unstable_shouldYield,fr=_.unstable_requestPaint,gt=_.unstable_now,sr=_.unstable_getCurrentPriorityLevel,uf=_.unstable_ImmediatePriority,ef=_.unstable_UserBlockingPriority,Se=_.unstable_NormalPriority,or=_.unstable_LowPriority,nf=_.unstable_IdlePriority,dr=_.log,rr=_.unstable_setDisableYieldValue,Su=null,wl=null;function Qt(l){if(typeof dr=="function"&&rr(l),wl&&typeof wl.setStrictMode=="function")try{wl.setStrictMode(Su,l)}catch{}}var kl=Math.clz32?Math.clz32:vr,yr=Math.log,hr=Math.LN2;function vr(l){return l>>>=0,l===0?32:31-(yr(l)/hr|0)|0}var be=256,Ae=4194304;function ha(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Ee(l,t,a){var u=l.pendingLanes;if(u===0)return 0;var e=0,n=l.suspendedLanes,i=l.pingedLanes;l=l.warmLanes;var c=u&134217727;return c!==0?(u=c&~n,u!==0?e=ha(u):(i&=c,i!==0?e=ha(i):a||(a=c&~l,a!==0&&(e=ha(a))))):(c=u&~n,c!==0?e=ha(c):i!==0?e=ha(i):a||(a=u&~l,a!==0&&(e=ha(a)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:e}function bu(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function mr(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function cf(){var l=be;return be<<=1,(be&4194048)===0&&(be=256),l}function ff(){var l=Ae;return Ae<<=1,(Ae&62914560)===0&&(Ae=4194304),l}function jn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function Au(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function gr(l,t,a,u,e,n){var i=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var c=l.entanglements,f=l.expirationTimes,y=l.hiddenUpdates;for(a=i&~a;0)":-1e||f[u]!==y[e]){var g=` +`+f[u].replace(" at new "," at ");return l.displayName&&g.includes("")&&(g=g.replace("",l.displayName)),g}while(1<=u&&0<=e);break}}}finally{Vn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?ja(a):""}function _r(l){switch(l.tag){case 26:case 27:case 5:return ja(l.type);case 16:return ja("Lazy");case 13:return ja("Suspense");case 19:return ja("SuspenseList");case 0:case 15:return Kn(l.type,!1);case 11:return Kn(l.type.render,!1);case 1:return Kn(l.type,!0);case 31:return ja("Activity");default:return""}}function Sf(l){try{var t="";do t+=_r(l),l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function at(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function bf(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function pr(l){var t=bf(l)?"checked":"value",a=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),u=""+l[t];if(!l.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var e=a.get,n=a.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(i){u=""+i,n.call(this,i)}}),Object.defineProperty(l,t,{enumerable:a.enumerable}),{getValue:function(){return u},setValue:function(i){u=""+i},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function pe(l){l._valueTracker||(l._valueTracker=pr(l))}function Af(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var a=t.getValue(),u="";return l&&(u=bf(l)?l.checked?"true":"false":l.value),l=u,l!==a?(t.setValue(l),!0):!1}function ze(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var zr=/[\n"\\]/g;function ut(l){return l.replace(zr,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Jn(l,t,a,u,e,n,i,c){l.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.type=i:l.removeAttribute("type"),t!=null?i==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+at(t)):l.value!==""+at(t)&&(l.value=""+at(t)):i!=="submit"&&i!=="reset"||l.removeAttribute("value"),t!=null?wn(l,i,at(t)):a!=null?wn(l,i,at(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+at(c):l.removeAttribute("name")}function Ef(l,t,a,u,e,n,i,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;a=a!=null?""+at(a):"",t=t!=null?""+at(t):a,c||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=c?l.checked:!!u,l.defaultChecked=!!u,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(l.name=i)}function wn(l,t,a){t==="number"&&ze(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function Xa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Pn=!1;if(Ot)try{var pu={};Object.defineProperty(pu,"passive",{get:function(){Pn=!0}}),window.addEventListener("test",pu,pu),window.removeEventListener("test",pu,pu)}catch{Pn=!1}var Zt=null,In=null,De=null;function Mf(){if(De)return De;var l,t=In,a=t.length,u,e="value"in Zt?Zt.value:Zt.textContent,n=e.length;for(l=0;l=Du),Bf=" ",qf=!1;function Cf(l,t){switch(l){case"keyup":return Ir.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gf(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Za=!1;function t0(l,t){switch(l){case"compositionend":return Gf(t);case"keypress":return t.which!==32?null:(qf=!0,Bf);case"textInput":return l=t.data,l===Bf&&qf?null:l;default:return null}}function a0(l,t){if(Za)return l==="compositionend"||!ei&&Cf(l,t)?(l=Mf(),De=In=Zt=null,Za=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=u}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=Kf(a)}}function wf(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?wf(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function kf(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=ze(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=ze(l.document)}return t}function ci(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var o0=Ot&&"documentMode"in document&&11>=document.documentMode,Va=null,fi=null,Hu=null,si=!1;function Wf(l,t,a){var u=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;si||Va==null||Va!==ze(u)||(u=Va,"selectionStart"in u&&ci(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Hu&&Ru(Hu,u)||(Hu=u,u=Sn(fi,"onSelect"),0>=i,e-=i,Mt=1<<32-kl(t)+e|a<n?n:8;var i=S.T,c={};S.T=c,ki(l,!1,t,a);try{var f=e(),y=S.S;if(y!==null&&y(c,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var g=b0(f,u);Ju(l,t,g,lt(l))}else Ju(l,t,u,lt(l))}catch(A){Ju(l,t,{then:function(){},status:"rejected",reason:A},lt())}finally{z.p=n,S.T=i}}function p0(){}function Ji(l,t,a,u){if(l.tag!==5)throw Error(m(476));var e=$s(l).queue;Ws(l,e,t,B,a===null?p0:function(){return Fs(l),a(u)})}function $s(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:B},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Fs(l){var t=$s(l).next.queue;Ju(l,t,{},lt())}function wi(){return Hl(oe)}function Ps(){return ml().memoizedState}function Is(){return ml().memoizedState}function z0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=lt();l=Jt(a);var u=wt(t,l,a);u!==null&&(tt(u,t,a),xu(u,t,a)),t={cache:_i()},l.payload=t;return}t=t.return}}function O0(l,t,a){var u=lt();a={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},Fe(l)?to(t,a):(a=yi(l,t,a,u),a!==null&&(tt(a,l,u),ao(a,t,u)))}function lo(l,t,a){var u=lt();Ju(l,t,a,u)}function Ju(l,t,a,u){var e={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(Fe(l))to(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var i=t.lastRenderedState,c=n(i,a);if(e.hasEagerState=!0,e.eagerState=c,Wl(c,i))return Be(l,t,e,0),nl===null&&Ye(),!1}catch{}finally{}if(a=yi(l,t,e,u),a!==null)return tt(a,l,u),ao(a,t,u),!0}return!1}function ki(l,t,a,u){if(u={lane:2,revertLane:Oc(),action:u,hasEagerState:!1,eagerState:null,next:null},Fe(l)){if(t)throw Error(m(479))}else t=yi(l,a,u,2),t!==null&&tt(t,l,2)}function Fe(l){var t=l.alternate;return l===X||t!==null&&t===X}function to(l,t){lu=Ke=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function ao(l,t,a){if((a&4194048)!==0){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,of(l,a)}}var Pe={readContext:Hl,use:we,useCallback:yl,useContext:yl,useEffect:yl,useImperativeHandle:yl,useLayoutEffect:yl,useInsertionEffect:yl,useMemo:yl,useReducer:yl,useRef:yl,useState:yl,useDebugValue:yl,useDeferredValue:yl,useTransition:yl,useSyncExternalStore:yl,useId:yl,useHostTransitionStatus:yl,useFormState:yl,useActionState:yl,useOptimistic:yl,useMemoCache:yl,useCacheRefresh:yl},uo={readContext:Hl,use:we,useCallback:function(l,t){return xl().memoizedState=[l,t===void 0?null:t],l},useContext:Hl,useEffect:xs,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,$e(4194308,4,Vs.bind(null,t,l),a)},useLayoutEffect:function(l,t){return $e(4194308,4,l,t)},useInsertionEffect:function(l,t){$e(4,2,l,t)},useMemo:function(l,t){var a=xl();t=t===void 0?null:t;var u=l();if(Da){Qt(!0);try{l()}finally{Qt(!1)}}return a.memoizedState=[u,t],u},useReducer:function(l,t,a){var u=xl();if(a!==void 0){var e=a(t);if(Da){Qt(!0);try{a(t)}finally{Qt(!1)}}}else e=t;return u.memoizedState=u.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},u.queue=l,l=l.dispatch=O0.bind(null,X,l),[u.memoizedState,l]},useRef:function(l){var t=xl();return l={current:l},t.memoizedState=l},useState:function(l){l=Li(l);var t=l.queue,a=lo.bind(null,X,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:Vi,useDeferredValue:function(l,t){var a=xl();return Ki(a,l,t)},useTransition:function(){var l=Li(!1);return l=Ws.bind(null,X,l.queue,!0,!1),xl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var u=X,e=xl();if($){if(a===void 0)throw Error(m(407));a=a()}else{if(a=t(),nl===null)throw Error(m(349));(V&124)!==0||ps(u,t,a)}e.memoizedState=a;var n={value:a,getSnapshot:t};return e.queue=n,xs(Os.bind(null,u,n,l),[l]),u.flags|=2048,au(9,We(),zs.bind(null,u,n,a,t),null),a},useId:function(){var l=xl(),t=nl.identifierPrefix;if($){var a=Ut,u=Mt;a=(u&~(1<<32-kl(u)-1)).toString(32)+a,t="«"+t+"R"+a,a=Je++,0Y?(Tl=M,M=null):Tl=M.sibling;var k=h(d,M,r[Y],b);if(k===null){M===null&&(M=Tl);break}l&&M&&k.alternate===null&&t(d,M),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k,M=Tl}if(Y===r.length)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;YY?(Tl=M,M=null):Tl=M.sibling;var oa=h(d,M,k.value,b);if(oa===null){M===null&&(M=Tl);break}l&&M&&oa.alternate===null&&t(d,M),o=n(oa,o,Y),x===null?D=oa:x.sibling=oa,x=oa,M=Tl}if(k.done)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;!k.done;Y++,k=r.next())k=A(d,k.value,b),k!==null&&(o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return $&&Ea(d,Y),D}for(M=u(M);!k.done;Y++,k=r.next())k=v(M,d,Y,k.value,b),k!==null&&(l&&k.alternate!==null&&M.delete(k.key===null?Y:k.key),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return l&&M.forEach(function(My){return t(d,My)}),$&&Ea(d,Y),D}function tl(d,o,r,b){if(typeof r=="object"&&r!==null&&r.type===ql&&r.key===null&&(r=r.props.children),typeof r=="object"&&r!==null){switch(r.$$typeof){case el:l:{for(var D=r.key;o!==null;){if(o.key===D){if(D=r.type,D===ql){if(o.tag===7){a(d,o.sibling),b=e(o,r.props.children),b.return=d,d=b;break l}}else if(o.elementType===D||typeof D=="object"&&D!==null&&D.$$typeof===Kl&&no(D)===o.type){a(d,o.sibling),b=e(o,r.props),ku(b,r),b.return=d,d=b;break l}a(d,o);break}else t(d,o);o=o.sibling}r.type===ql?(b=ba(r.props.children,d.mode,b,r.key),b.return=d,d=b):(b=Ce(r.type,r.key,r.props,null,d.mode,b),ku(b,r),b.return=d,d=b)}return i(d);case Bl:l:{for(D=r.key;o!==null;){if(o.key===D)if(o.tag===4&&o.stateNode.containerInfo===r.containerInfo&&o.stateNode.implementation===r.implementation){a(d,o.sibling),b=e(o,r.children||[]),b.return=d,d=b;break l}else{a(d,o);break}else t(d,o);o=o.sibling}b=mi(r,d.mode,b),b.return=d,d=b}return i(d);case Kl:return D=r._init,r=D(r._payload),tl(d,o,r,b)}if(Ul(r))return q(d,o,r,b);if(Ml(r)){if(D=Ml(r),typeof D!="function")throw Error(m(150));return r=D.call(r),N(d,o,r,b)}if(typeof r.then=="function")return tl(d,o,Ie(r),b);if(r.$$typeof===Dl)return tl(d,o,xe(d,r),b);ln(d,r)}return typeof r=="string"&&r!==""||typeof r=="number"||typeof r=="bigint"?(r=""+r,o!==null&&o.tag===6?(a(d,o.sibling),b=e(o,r),b.return=d,d=b):(a(d,o),b=vi(r,d.mode,b),b.return=d,d=b),i(d)):a(d,o)}return function(d,o,r,b){try{wu=0;var D=tl(d,o,r,b);return uu=null,D}catch(M){if(M===ju||M===Le)throw M;var x=$l(29,M,null,d.mode);return x.lanes=b,x.return=d,x}finally{}}}var eu=io(!0),co=io(!1),ft=E(null),bt=null;function Wt(l){var t=l.alternate;p(Sl,Sl.current&1),p(ft,l),bt===null&&(t===null||Ia.current!==null||t.memoizedState!==null)&&(bt=l)}function fo(l){if(l.tag===22){if(p(Sl,Sl.current),p(ft,l),bt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(bt=l)}}else $t()}function $t(){p(Sl,Sl.current),p(ft,ft.current)}function Yt(l){O(ft),bt===l&&(bt=null),O(Sl)}var Sl=E(0);function tn(l){for(var t=l;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||jc(a)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Wi(l,t,a,u){t=l.memoizedState,a=a(u,t),a=a==null?t:U({},t,a),l.memoizedState=a,l.lanes===0&&(l.updateQueue.baseState=a)}var $i={enqueueSetState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueReplaceState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.tag=1,e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var a=lt(),u=Jt(a);u.tag=2,t!=null&&(u.callback=t),t=wt(l,u,a),t!==null&&(tt(t,l,a),xu(t,l,a))}};function so(l,t,a,u,e,n,i){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(u,n,i):t.prototype&&t.prototype.isPureReactComponent?!Ru(a,u)||!Ru(e,n):!0}function oo(l,t,a,u){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,u),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,u),t.state!==l&&$i.enqueueReplaceState(t,t.state,null)}function Ma(l,t){var a=t;if("ref"in t){a={};for(var u in t)u!=="ref"&&(a[u]=t[u])}if(l=l.defaultProps){a===t&&(a=U({},a));for(var e in l)a[e]===void 0&&(a[e]=l[e])}return a}var an=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function ro(l){an(l)}function yo(l){console.error(l)}function ho(l){an(l)}function un(l,t){try{var a=l.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(u){setTimeout(function(){throw u})}}function vo(l,t,a){try{var u=l.onCaughtError;u(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Fi(l,t,a){return a=Jt(a),a.tag=3,a.payload={element:null},a.callback=function(){un(l,t)},a}function mo(l){return l=Jt(l),l.tag=3,l}function go(l,t,a,u){var e=a.type.getDerivedStateFromError;if(typeof e=="function"){var n=u.value;l.payload=function(){return e(n)},l.callback=function(){vo(t,a,u)}}var i=a.stateNode;i!==null&&typeof i.componentDidCatch=="function"&&(l.callback=function(){vo(t,a,u),typeof e!="function"&&(aa===null?aa=new Set([this]):aa.add(this));var c=u.stack;this.componentDidCatch(u.value,{componentStack:c!==null?c:""})})}function M0(l,t,a,u,e){if(a.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(t=a.alternate,t!==null&&qu(t,a,e,!0),a=ft.current,a!==null){switch(a.tag){case 13:return bt===null?Ec():a.alternate===null&&rl===0&&(rl=3),a.flags&=-257,a.flags|=65536,a.lanes=e,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([u]):t.add(u),_c(l,u,e)),!1;case 22:return a.flags|=65536,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([u])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([u]):a.add(u)),_c(l,u,e)),!1}throw Error(m(435,a.tag))}return _c(l,u,e),Ec(),!1}if($)return t=ft.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=e,u!==bi&&(l=Error(m(422),{cause:u}),Bu(et(l,a)))):(u!==bi&&(t=Error(m(423),{cause:u}),Bu(et(t,a))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,u=et(u,a),e=Fi(l.stateNode,u,e),Ui(l,e),rl!==4&&(rl=2)),!1;var n=Error(m(520),{cause:u});if(n=et(n,a),te===null?te=[n]:te.push(n),rl!==4&&(rl=2),t===null)return!0;u=et(u,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,l=e&-e,a.lanes|=l,l=Fi(a.stateNode,u,l),Ui(a,l),!1;case 1:if(t=a.type,n=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(aa===null||!aa.has(n))))return a.flags|=65536,e&=-e,a.lanes|=e,e=mo(e),go(e,l,a,u),Ui(a,e),!1}a=a.return}while(a!==null);return!1}var So=Error(m(461)),Al=!1;function pl(l,t,a,u){t.child=l===null?co(t,null,a,u):eu(t,l.child,a,u)}function bo(l,t,a,u,e){a=a.render;var n=t.ref;if("ref"in u){var i={};for(var c in u)c!=="ref"&&(i[c]=u[c])}else i=u;return za(t),u=Bi(l,t,a,i,n,e),c=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&c&&gi(t),t.flags|=1,pl(l,t,u,e),t.child)}function Ao(l,t,a,u,e){if(l===null){var n=a.type;return typeof n=="function"&&!hi(n)&&n.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=n,Eo(l,t,n,u,e)):(l=Ce(a.type,null,u,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!nc(l,e)){var i=n.memoizedProps;if(a=a.compare,a=a!==null?a:Ru,a(i,u)&&l.ref===t.ref)return Bt(l,t,e)}return t.flags|=1,l=Dt(n,u),l.ref=t.ref,l.return=t,t.child=l}function Eo(l,t,a,u,e){if(l!==null){var n=l.memoizedProps;if(Ru(n,u)&&l.ref===t.ref)if(Al=!1,t.pendingProps=u=n,nc(l,e))(l.flags&131072)!==0&&(Al=!0);else return t.lanes=l.lanes,Bt(l,t,e)}return Pi(l,t,a,u,e)}function To(l,t,a){var u=t.pendingProps,e=u.children,n=l!==null?l.memoizedState:null;if(u.mode==="hidden"){if((t.flags&128)!==0){if(u=n!==null?n.baseLanes|a:a,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~u}else t.childLanes=0,t.child=null;return _o(l,t,u,a)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Qe(t,n!==null?n.cachePool:null),n!==null?As(t,n):Hi(),fo(t);else return t.lanes=t.childLanes=536870912,_o(l,t,n!==null?n.baseLanes|a:a,a)}else n!==null?(Qe(t,n.cachePool),As(t,n),$t(),t.memoizedState=null):(l!==null&&Qe(t,null),Hi(),$t());return pl(l,t,e,a),t.child}function _o(l,t,a,u){var e=zi();return e=e===null?null:{parent:gl._currentValue,pool:e},t.memoizedState={baseLanes:a,cachePool:e},l!==null&&Qe(t,null),Hi(),fo(t),l!==null&&qu(l,t,u,!0),null}function en(l,t){var a=t.ref;if(a===null)l!==null&&l.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(m(284));(l===null||l.ref!==a)&&(t.flags|=4194816)}}function Pi(l,t,a,u,e){return za(t),a=Bi(l,t,a,u,void 0,e),u=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,e),t.child)}function po(l,t,a,u,e,n){return za(t),t.updateQueue=null,a=Ts(t,u,a,e),Es(l),u=qi(),l!==null&&!Al?(Ci(l,t,n),Bt(l,t,n)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,n),t.child)}function zo(l,t,a,u,e){if(za(t),t.stateNode===null){var n=ka,i=a.contextType;typeof i=="object"&&i!==null&&(n=Hl(i)),n=new a(u,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=$i,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=u,n.state=t.memoizedState,n.refs={},Di(t),i=a.contextType,n.context=typeof i=="object"&&i!==null?Hl(i):ka,n.state=t.memoizedState,i=a.getDerivedStateFromProps,typeof i=="function"&&(Wi(t,a,i,u),n.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(i=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),i!==n.state&&$i.enqueueReplaceState(n,n.state,null),Lu(t,u,n,e),Qu(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!0}else if(l===null){n=t.stateNode;var c=t.memoizedProps,f=Ma(a,c);n.props=f;var y=n.context,g=a.contextType;i=ka,typeof g=="object"&&g!==null&&(i=Hl(g));var A=a.getDerivedStateFromProps;g=typeof A=="function"||typeof n.getSnapshotBeforeUpdate=="function",c=t.pendingProps!==c,g||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c||y!==i)&&oo(t,n,u,i),Kt=!1;var h=t.memoizedState;n.state=h,Lu(t,u,n,e),Qu(),y=t.memoizedState,c||h!==y||Kt?(typeof A=="function"&&(Wi(t,a,A,u),y=t.memoizedState),(f=Kt||so(t,a,f,u,h,y,i))?(g||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=u,t.memoizedState=y),n.props=u,n.state=y,n.context=i,u=f):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!1)}else{n=t.stateNode,Mi(l,t),i=t.memoizedProps,g=Ma(a,i),n.props=g,A=t.pendingProps,h=n.context,y=a.contextType,f=ka,typeof y=="object"&&y!==null&&(f=Hl(y)),c=a.getDerivedStateFromProps,(y=typeof c=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(i!==A||h!==f)&&oo(t,n,u,f),Kt=!1,h=t.memoizedState,n.state=h,Lu(t,u,n,e),Qu();var v=t.memoizedState;i!==A||h!==v||Kt||l!==null&&l.dependencies!==null&&Xe(l.dependencies)?(typeof c=="function"&&(Wi(t,a,c,u),v=t.memoizedState),(g=Kt||so(t,a,g,u,h,v,f)||l!==null&&l.dependencies!==null&&Xe(l.dependencies))?(y||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(u,v,f),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(u,v,f)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),t.memoizedProps=u,t.memoizedState=v),n.props=u,n.state=v,n.context=f,u=g):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),u=!1)}return n=u,en(l,t),u=(t.flags&128)!==0,n||u?(n=t.stateNode,a=u&&typeof a.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&u?(t.child=eu(t,l.child,null,e),t.child=eu(t,null,a,e)):pl(l,t,a,e),t.memoizedState=n.state,l=t.child):l=Bt(l,t,e),l}function Oo(l,t,a,u){return Yu(),t.flags|=256,pl(l,t,a,u),t.child}var Ii={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function lc(l){return{baseLanes:l,cachePool:rs()}}function tc(l,t,a){return l=l!==null?l.childLanes&~a:0,t&&(l|=st),l}function Do(l,t,a){var u=t.pendingProps,e=!1,n=(t.flags&128)!==0,i;if((i=n)||(i=l!==null&&l.memoizedState===null?!1:(Sl.current&2)!==0),i&&(e=!0,t.flags&=-129),i=(t.flags&32)!==0,t.flags&=-33,l===null){if($){if(e?Wt(t):$t(),$){var c=dl,f;if(f=c){l:{for(f=c,c=St;f.nodeType!==8;){if(!c){c=null;break l}if(f=vt(f.nextSibling),f===null){c=null;break l}}c=f}c!==null?(t.memoizedState={dehydrated:c,treeContext:Aa!==null?{id:Mt,overflow:Ut}:null,retryLane:536870912,hydrationErrors:null},f=$l(18,null,null,0),f.stateNode=c,f.return=t,t.child=f,Cl=t,dl=null,f=!0):f=!1}f||_a(t)}if(c=t.memoizedState,c!==null&&(c=c.dehydrated,c!==null))return jc(c)?t.lanes=32:t.lanes=536870912,null;Yt(t)}return c=u.children,u=u.fallback,e?($t(),e=t.mode,c=nn({mode:"hidden",children:c},e),u=ba(u,e,a,null),c.return=t,u.return=t,c.sibling=u,t.child=c,e=t.child,e.memoizedState=lc(a),e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),ac(t,c))}if(f=l.memoizedState,f!==null&&(c=f.dehydrated,c!==null)){if(n)t.flags&256?(Wt(t),t.flags&=-257,t=uc(l,t,a)):t.memoizedState!==null?($t(),t.child=l.child,t.flags|=128,t=null):($t(),e=u.fallback,c=t.mode,u=nn({mode:"visible",children:u.children},c),e=ba(e,c,a,null),e.flags|=2,u.return=t,e.return=t,u.sibling=e,t.child=u,eu(t,l.child,null,a),u=t.child,u.memoizedState=lc(a),u.childLanes=tc(l,i,a),t.memoizedState=Ii,t=e);else if(Wt(t),jc(c)){if(i=c.nextSibling&&c.nextSibling.dataset,i)var y=i.dgst;i=y,u=Error(m(419)),u.stack="",u.digest=i,Bu({value:u,source:null,stack:null}),t=uc(l,t,a)}else if(Al||qu(l,t,a,!1),i=(a&l.childLanes)!==0,Al||i){if(i=nl,i!==null&&(u=a&-a,u=(u&42)!==0?1:Xn(u),u=(u&(i.suspendedLanes|a))!==0?0:u,u!==0&&u!==f.retryLane))throw f.retryLane=u,wa(l,u),tt(i,l,u),So;c.data==="$?"||Ec(),t=uc(l,t,a)}else c.data==="$?"?(t.flags|=192,t.child=l.child,t=null):(l=f.treeContext,dl=vt(c.nextSibling),Cl=t,$=!0,Ta=null,St=!1,l!==null&&(it[ct++]=Mt,it[ct++]=Ut,it[ct++]=Aa,Mt=l.id,Ut=l.overflow,Aa=t),t=ac(t,u.children),t.flags|=4096);return t}return e?($t(),e=u.fallback,c=t.mode,f=l.child,y=f.sibling,u=Dt(f,{mode:"hidden",children:u.children}),u.subtreeFlags=f.subtreeFlags&65011712,y!==null?e=Dt(y,e):(e=ba(e,c,a,null),e.flags|=2),e.return=t,u.return=t,u.sibling=e,t.child=u,u=e,e=t.child,c=l.child.memoizedState,c===null?c=lc(a):(f=c.cachePool,f!==null?(y=gl._currentValue,f=f.parent!==y?{parent:y,pool:y}:f):f=rs(),c={baseLanes:c.baseLanes|a,cachePool:f}),e.memoizedState=c,e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),a=l.child,l=a.sibling,a=Dt(a,{mode:"visible",children:u.children}),a.return=t,a.sibling=null,l!==null&&(i=t.deletions,i===null?(t.deletions=[l],t.flags|=16):i.push(l)),t.child=a,t.memoizedState=null,a)}function ac(l,t){return t=nn({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function nn(l,t){return l=$l(22,l,null,t),l.lanes=0,l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},l}function uc(l,t,a){return eu(t,l.child,null,a),l=ac(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function Mo(l,t,a){l.lanes|=t;var u=l.alternate;u!==null&&(u.lanes|=t),Ei(l.return,t,a)}function ec(l,t,a,u,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:u,tail:a,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=u,n.tail=a,n.tailMode=e)}function Uo(l,t,a){var u=t.pendingProps,e=u.revealOrder,n=u.tail;if(pl(l,t,u.children,a),u=Sl.current,(u&2)!==0)u=u&1|2,t.flags|=128;else{if(l!==null&&(l.flags&128)!==0)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&Mo(l,a,t);else if(l.tag===19)Mo(l,a,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}u&=1}switch(p(Sl,u),e){case"forwards":for(a=t.child,e=null;a!==null;)l=a.alternate,l!==null&&tn(l)===null&&(e=a),a=a.sibling;a=e,a===null?(e=t.child,t.child=null):(e=a.sibling,a.sibling=null),ec(t,!1,e,a,n);break;case"backwards":for(a=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&tn(l)===null){t.child=e;break}l=e.sibling,e.sibling=a,a=e,e=l}ec(t,!0,a,null,n);break;case"together":ec(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Bt(l,t,a){if(l!==null&&(t.dependencies=l.dependencies),ta|=t.lanes,(a&t.childLanes)===0)if(l!==null){if(qu(l,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(m(153));if(t.child!==null){for(l=t.child,a=Dt(l,l.pendingProps),t.child=a,a.return=t;l.sibling!==null;)l=l.sibling,a=a.sibling=Dt(l,l.pendingProps),a.return=t;a.sibling=null}return t.child}function nc(l,t){return(l.lanes&t)!==0?!0:(l=l.dependencies,!!(l!==null&&Xe(l)))}function U0(l,t,a){switch(t.tag){case 3:cl(t,t.stateNode.containerInfo),Vt(t,gl,l.memoizedState.cache),Yu();break;case 27:case 5:Bn(t);break;case 4:cl(t,t.stateNode.containerInfo);break;case 10:Vt(t,t.type,t.memoizedProps.value);break;case 13:var u=t.memoizedState;if(u!==null)return u.dehydrated!==null?(Wt(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Do(l,t,a):(Wt(t),l=Bt(l,t,a),l!==null?l.sibling:null);Wt(t);break;case 19:var e=(l.flags&128)!==0;if(u=(a&t.childLanes)!==0,u||(qu(l,t,a,!1),u=(a&t.childLanes)!==0),e){if(u)return Uo(l,t,a);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),p(Sl,Sl.current),u)break;return null;case 22:case 23:return t.lanes=0,To(l,t,a);case 24:Vt(t,gl,l.memoizedState.cache)}return Bt(l,t,a)}function Ro(l,t,a){if(l!==null)if(l.memoizedProps!==t.pendingProps)Al=!0;else{if(!nc(l,a)&&(t.flags&128)===0)return Al=!1,U0(l,t,a);Al=(l.flags&131072)!==0}else Al=!1,$&&(t.flags&1048576)!==0&&ns(t,je,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var u=t.elementType,e=u._init;if(u=e(u._payload),t.type=u,typeof u=="function")hi(u)?(l=Ma(u,l),t.tag=1,t=zo(null,t,u,l,a)):(t.tag=0,t=Pi(null,t,u,l,a));else{if(u!=null){if(e=u.$$typeof,e===rt){t.tag=11,t=bo(null,t,u,l,a);break l}else if(e===Vl){t.tag=14,t=Ao(null,t,u,l,a);break l}}throw t=ya(u)||u,Error(m(306,t,""))}}return t;case 0:return Pi(l,t,t.type,t.pendingProps,a);case 1:return u=t.type,e=Ma(u,t.pendingProps),zo(l,t,u,e,a);case 3:l:{if(cl(t,t.stateNode.containerInfo),l===null)throw Error(m(387));u=t.pendingProps;var n=t.memoizedState;e=n.element,Mi(l,t),Lu(t,u,null,a);var i=t.memoizedState;if(u=i.cache,Vt(t,gl,u),u!==n.cache&&Ti(t,[gl],a,!0),Qu(),u=i.element,n.isDehydrated)if(n={element:u,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){t=Oo(l,t,u,a);break l}else if(u!==e){e=et(Error(m(424)),t),Bu(e),t=Oo(l,t,u,a);break l}else{switch(l=t.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(dl=vt(l.firstChild),Cl=t,$=!0,Ta=null,St=!0,a=co(t,null,u,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Yu(),u===e){t=Bt(l,t,a);break l}pl(l,t,u,a)}t=t.child}return t;case 26:return en(l,t),l===null?(a=Bd(t.type,null,t.pendingProps,null))?t.memoizedState=a:$||(a=t.type,l=t.pendingProps,u=An(G.current).createElement(a),u[Rl]=t,u[jl]=l,Ol(u,a,l),bl(u),t.stateNode=u):t.memoizedState=Bd(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return Bn(t),l===null&&$&&(u=t.stateNode=Hd(t.type,t.pendingProps,G.current),Cl=t,St=!0,e=dl,na(t.type)?(Xc=e,dl=vt(u.firstChild)):dl=e),pl(l,t,t.pendingProps.children,a),en(l,t),l===null&&(t.flags|=4194304),t.child;case 5:return l===null&&$&&((e=u=dl)&&(u=uy(u,t.type,t.pendingProps,St),u!==null?(t.stateNode=u,Cl=t,dl=vt(u.firstChild),St=!1,e=!0):e=!1),e||_a(t)),Bn(t),e=t.type,n=t.pendingProps,i=l!==null?l.memoizedProps:null,u=n.children,qc(e,n)?u=null:i!==null&&qc(e,i)&&(t.flags|=32),t.memoizedState!==null&&(e=Bi(l,t,E0,null,null,a),oe._currentValue=e),en(l,t),pl(l,t,u,a),t.child;case 6:return l===null&&$&&((l=a=dl)&&(a=ey(a,t.pendingProps,St),a!==null?(t.stateNode=a,Cl=t,dl=null,l=!0):l=!1),l||_a(t)),null;case 13:return Do(l,t,a);case 4:return cl(t,t.stateNode.containerInfo),u=t.pendingProps,l===null?t.child=eu(t,null,u,a):pl(l,t,u,a),t.child;case 11:return bo(l,t,t.type,t.pendingProps,a);case 7:return pl(l,t,t.pendingProps,a),t.child;case 8:return pl(l,t,t.pendingProps.children,a),t.child;case 12:return pl(l,t,t.pendingProps.children,a),t.child;case 10:return u=t.pendingProps,Vt(t,t.type,u.value),pl(l,t,u.children,a),t.child;case 9:return e=t.type._context,u=t.pendingProps.children,za(t),e=Hl(e),u=u(e),t.flags|=1,pl(l,t,u,a),t.child;case 14:return Ao(l,t,t.type,t.pendingProps,a);case 15:return Eo(l,t,t.type,t.pendingProps,a);case 19:return Uo(l,t,a);case 31:return u=t.pendingProps,a=t.mode,u={mode:u.mode,children:u.children},l===null?(a=nn(u,a),a.ref=t.ref,t.child=a,a.return=t,t=a):(a=Dt(l.child,u),a.ref=t.ref,t.child=a,a.return=t,t=a),t;case 22:return To(l,t,a);case 24:return za(t),u=Hl(gl),l===null?(e=zi(),e===null&&(e=nl,n=_i(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=a),e=n),t.memoizedState={parent:u,cache:e},Di(t),Vt(t,gl,e)):((l.lanes&a)!==0&&(Mi(l,t),Lu(t,null,null,a),Qu()),e=l.memoizedState,n=t.memoizedState,e.parent!==u?(e={parent:u,cache:u},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Vt(t,gl,u)):(u=n.cache,Vt(t,gl,u),u!==e.cache&&Ti(t,[gl],a,!0))),pl(l,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(m(156,t.tag))}function qt(l){l.flags|=4}function Ho(l,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!Xd(t)){if(t=ft.current,t!==null&&((V&4194048)===V?bt!==null:(V&62914560)!==V&&(V&536870912)===0||t!==bt))throw Xu=Oi,ys;l.flags|=8192}}function cn(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?ff():536870912,l.lanes|=t,fu|=t)}function Wu(l,t){if(!$)switch(l.tailMode){case"hidden":t=l.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?l.tail=null:a.sibling=null;break;case"collapsed":a=l.tail;for(var u=null;a!==null;)a.alternate!==null&&(u=a),a=a.sibling;u===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:u.sibling=null}}function ol(l){var t=l.alternate!==null&&l.alternate.child===l.child,a=0,u=0;if(t)for(var e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags&65011712,u|=e.flags&65011712,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags,u|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=u,l.childLanes=a,t}function R0(l,t,a){var u=t.pendingProps;switch(Si(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ol(t),null;case 1:return ol(t),null;case 3:return a=t.stateNode,u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),Ht(gl),xt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(l===null||l.child===null)&&(Nu(t)?qt(t):l===null||l.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,fs())),ol(t),null;case 26:return a=t.memoizedState,l===null?(qt(t),a!==null?(ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217)):a?a!==l.memoizedState?(qt(t),ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217):(l.memoizedProps!==u&&qt(t),ol(t),t.flags&=-16777217),null;case 27:ge(t),a=G.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}l=H.current,Nu(t)?is(t):(l=Hd(e,u,a),t.stateNode=l,qt(t))}return ol(t),null;case 5:if(ge(t),a=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}if(l=H.current,Nu(t))is(t);else{switch(e=An(G.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":l=e.createElement("div"),l.innerHTML=" + + + +
+ + diff --git a/week1/project/ecommerce/dist/vite.svg b/week1/project/ecommerce/dist/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week1/project/ecommerce/dist/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file From f871e5a136b1d4569c3c86c6e7585eabb0c8cdcb Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 16:07:41 +0200 Subject: [PATCH 3/7] production link added --- week1/project/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/week1/project/README.md b/week1/project/README.md index ea70341f1a..6f714478e2 100644 --- a/week1/project/README.md +++ b/week1/project/README.md @@ -1,3 +1,9 @@ +Here is the link to the Production: +https://ecommerce-starshynov.netlify.app/ + + + + # Ecommerce Project I ## 1. Setup From 676a5a669073745df412cb203470315e44f26866 Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Wed, 25 Jun 2025 10:19:01 +0200 Subject: [PATCH 4/7] built added --- .../ecommerce/dist/assets/index-9zvwJ4Pe.css | 1 - .../ecommerce/dist/assets/index-Cx-n_OD2.js | 49 -------------- week1/project/ecommerce/src/App.jsx | 13 ---- .../ecommerce/src/Composite/ProductCard.jsx | 15 ----- .../project/ecommerce/src/Pages/FeedPage.css | 15 ----- .../project/ecommerce/src/Pages/FeedPage.jsx | 36 ---------- week1/project/ecommerce/src/main.jsx | 10 --- {week1/project => week2}/ecommerce/.gitignore | 0 {week1/project => week2}/ecommerce/README.md | 0 .../ecommerce/dist/assets/index-B7gF7EhP.css | 1 + week2/ecommerce/dist/assets/index-m0e1VZ4x.js | 51 +++++++++++++++ .../ecommerce/dist/index.html | 28 ++++---- .../project => week2}/ecommerce/dist/vite.svg | 0 .../ecommerce/eslint.config.js | 0 .../ecommerce/fake-data/all-categories.js | 0 .../ecommerce/fake-data/all-products.js | 0 {week1/project => week2}/ecommerce/index.html | 0 .../ecommerce/package-lock.json | 56 +++++++++++++++- .../project => week2}/ecommerce/package.json | 4 +- .../ecommerce/public/vite.svg | 0 .../project => week2}/ecommerce/src/App.css | 0 week2/ecommerce/src/App.jsx | 18 +++++ .../src/Components/CategoryButton.css | 0 .../src/Components/CategoryButton.jsx | 0 .../src/Composite/CategoryFilter.css | 0 .../src/Composite/CategoryFilter.jsx | 0 .../ecommerce/src/Composite/ProductCard.css | 19 ++++++ week2/ecommerce/src/Composite/ProductCard.jsx | 14 ++++ .../ecommerce/src/Composite/ProductList.css | 0 .../ecommerce/src/Composite/ProductList.jsx | 0 week2/ecommerce/src/Pages/FeedPage.css | 52 +++++++++++++++ week2/ecommerce/src/Pages/FeedPage.jsx | 65 +++++++++++++++++++ week2/ecommerce/src/Pages/ProductDetail.css | 60 +++++++++++++++++ week2/ecommerce/src/Pages/ProductDetail.jsx | 42 ++++++++++++ .../ecommerce/src/assets/react.svg | 0 .../project => week2}/ecommerce/src/index.css | 0 week2/ecommerce/src/main.jsx | 13 ++++ week2/ecommerce/src/utils/api.js | 20 ++++++ .../ecommerce/vite.config.js | 0 39 files changed, 427 insertions(+), 155 deletions(-) delete mode 100644 week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css delete mode 100644 week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js delete mode 100644 week1/project/ecommerce/src/App.jsx delete mode 100644 week1/project/ecommerce/src/Composite/ProductCard.jsx delete mode 100644 week1/project/ecommerce/src/Pages/FeedPage.css delete mode 100644 week1/project/ecommerce/src/Pages/FeedPage.jsx delete mode 100644 week1/project/ecommerce/src/main.jsx rename {week1/project => week2}/ecommerce/.gitignore (100%) rename {week1/project => week2}/ecommerce/README.md (100%) create mode 100644 week2/ecommerce/dist/assets/index-B7gF7EhP.css create mode 100644 week2/ecommerce/dist/assets/index-m0e1VZ4x.js rename {week1/project => week2}/ecommerce/dist/index.html (59%) rename {week1/project => week2}/ecommerce/dist/vite.svg (100%) rename {week1/project => week2}/ecommerce/eslint.config.js (100%) rename {week1/project => week2}/ecommerce/fake-data/all-categories.js (100%) rename {week1/project => week2}/ecommerce/fake-data/all-products.js (100%) rename {week1/project => week2}/ecommerce/index.html (100%) rename {week1/project => week2}/ecommerce/package-lock.json (98%) rename {week1/project => week2}/ecommerce/package.json (86%) rename {week1/project => week2}/ecommerce/public/vite.svg (100%) rename {week1/project => week2}/ecommerce/src/App.css (100%) create mode 100644 week2/ecommerce/src/App.jsx rename {week1/project => week2}/ecommerce/src/Components/CategoryButton.css (100%) rename {week1/project => week2}/ecommerce/src/Components/CategoryButton.jsx (100%) rename {week1/project => week2}/ecommerce/src/Composite/CategoryFilter.css (100%) rename {week1/project => week2}/ecommerce/src/Composite/CategoryFilter.jsx (100%) rename {week1/project => week2}/ecommerce/src/Composite/ProductCard.css (67%) create mode 100644 week2/ecommerce/src/Composite/ProductCard.jsx rename {week1/project => week2}/ecommerce/src/Composite/ProductList.css (100%) rename {week1/project => week2}/ecommerce/src/Composite/ProductList.jsx (100%) create mode 100644 week2/ecommerce/src/Pages/FeedPage.css create mode 100644 week2/ecommerce/src/Pages/FeedPage.jsx create mode 100644 week2/ecommerce/src/Pages/ProductDetail.css create mode 100644 week2/ecommerce/src/Pages/ProductDetail.jsx rename {week1/project => week2}/ecommerce/src/assets/react.svg (100%) rename {week1/project => week2}/ecommerce/src/index.css (100%) create mode 100644 week2/ecommerce/src/main.jsx create mode 100644 week2/ecommerce/src/utils/api.js rename {week1/project => week2}/ecommerce/vite.config.js (100%) diff --git a/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css b/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css deleted file mode 100644 index ccbb16d581..0000000000 --- a/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.feed-page{max-width:1200px;margin:0 auto;padding:16px}@media (max-width: 768px){.feed-page{padding:8px}}h1{color:#000}.category-filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:20px 0}@media (max-width: 400px){.category-filter{flex-direction:column;align-items:stretch}}.category-button{padding:10px 16px;margin:4px;border:1px solid #ccc;background-color:#fff!important;color:#333;border-radius:6px!important;cursor:pointer;transition:all .2s ease-in-out}.category-button:hover{background-color:#f5f5f5}.category-button.active{background-color:#07c!important;color:#fff;border-color:#07c}.product-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:24px}@media (max-width: 600px){.product-list{grid-template-columns:1fr;gap:12px}}.product-card{border:1px solid #ddd;padding:10px;border-radius:8px;text-align:center;color:#000;font-size:10px}.product-image{height:250px;display:flex;align-items:center;justify-content:center;padding:10px}.product-image img{max-height:100%;max-width:100%;object-fit:contain} diff --git a/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js b/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js deleted file mode 100644 index d44895c79f..0000000000 --- a/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js +++ /dev/null @@ -1,49 +0,0 @@ -(function(){const W=document.createElement("link").relList;if(W&&W.supports&&W.supports("modulepreload"))return;for(const C of document.querySelectorAll('link[rel="modulepreload"]'))m(C);new MutationObserver(C=>{for(const K of C)if(K.type==="childList")for(const sl of K.addedNodes)sl.tagName==="LINK"&&sl.rel==="modulepreload"&&m(sl)}).observe(document,{childList:!0,subtree:!0});function Z(C){const K={};return C.integrity&&(K.integrity=C.integrity),C.referrerPolicy&&(K.referrerPolicy=C.referrerPolicy),C.crossOrigin==="use-credentials"?K.credentials="include":C.crossOrigin==="anonymous"?K.credentials="omit":K.credentials="same-origin",K}function m(C){if(C.ep)return;C.ep=!0;const K=Z(C);fetch(C.href,K)}})();var Wc={exports:{}},ve={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Fd;function Uy(){if(Fd)return ve;Fd=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.fragment");function Z(m,C,K){var sl=null;if(K!==void 0&&(sl=""+K),C.key!==void 0&&(sl=""+C.key),"key"in C){K={};for(var Yl in C)Yl!=="key"&&(K[Yl]=C[Yl])}else K=C;return C=K.ref,{$$typeof:_,type:m,key:sl,ref:C!==void 0?C:null,props:K}}return ve.Fragment=W,ve.jsx=Z,ve.jsxs=Z,ve}var Pd;function Ry(){return Pd||(Pd=1,Wc.exports=Uy()),Wc.exports}var _l=Ry(),$c={exports:{}},j={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Id;function Hy(){if(Id)return j;Id=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.portal"),Z=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),K=Symbol.for("react.consumer"),sl=Symbol.for("react.context"),Yl=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),T=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),il=Symbol.iterator;function el(s){return s===null||typeof s!="object"?null:(s=il&&s[il]||s["@@iterator"],typeof s=="function"?s:null)}var Bl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ql=Object.assign,dt={};function Gl(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}Gl.prototype.isReactComponent={},Gl.prototype.setState=function(s,E){if(typeof s!="object"&&typeof s!="function"&&s!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,E,"setState")},Gl.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")};function da(){}da.prototype=Gl.prototype;function _t(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}var Dl=_t.prototype=new da;Dl.constructor=_t,ql(Dl,Gl.prototype),Dl.isPureReactComponent=!0;var rt=Array.isArray,J={H:null,A:null,T:null,S:null,V:null},Zl=Object.prototype.hasOwnProperty;function Vl(s,E,O,p,H,w){return O=w.ref,{$$typeof:_,type:s,key:E,ref:O!==void 0?O:null,props:w}}function Kl(s,E){return Vl(s.type,E,void 0,void 0,void 0,s.props)}function mt(s){return typeof s=="object"&&s!==null&&s.$$typeof===_}function Na(s){var E={"=":"=0",":":"=2"};return"$"+s.replace(/[=:]/g,function(O){return E[O]})}var pt=/\/+/g;function Ml(s,E){return typeof s=="object"&&s!==null&&s.key!=null?Na(""+s.key):E.toString(36)}function ra(){}function ya(s){switch(s.status){case"fulfilled":return s.value;case"rejected":throw s.reason;default:switch(typeof s.status=="string"?s.then(ra,ra):(s.status="pending",s.then(function(E){s.status==="pending"&&(s.status="fulfilled",s.value=E)},function(E){s.status==="pending"&&(s.status="rejected",s.reason=E)})),s.status){case"fulfilled":return s.value;case"rejected":throw s.reason}}throw s}function Ul(s,E,O,p,H){var w=typeof s;(w==="undefined"||w==="boolean")&&(s=null);var G=!1;if(s===null)G=!0;else switch(w){case"bigint":case"string":case"number":G=!0;break;case"object":switch(s.$$typeof){case _:case W:G=!0;break;case U:return G=s._init,Ul(G(s._payload),E,O,p,H)}}if(G)return H=H(s),G=p===""?"."+Ml(s,0):p,rt(H)?(O="",G!=null&&(O=G.replace(pt,"$&/")+"/"),Ul(H,E,O,"",function(xt){return xt})):H!=null&&(mt(H)&&(H=Kl(H,O+(H.key==null||s&&s.key===H.key?"":(""+H.key).replace(pt,"$&/")+"/")+G)),E.push(H)),1;G=0;var Jl=p===""?".":p+":";if(rt(s))for(var cl=0;cl>>1,s=S[al];if(0>>1;alC(p,B))HC(w,p)?(S[al]=w,S[H]=B,al=H):(S[al]=p,S[O]=B,al=O);else if(HC(w,B))S[al]=w,S[H]=B,al=H;else break l}}return z}function C(S,z){var B=S.sortIndex-z.sortIndex;return B!==0?B:S.id-z.id}if(_.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var K=performance;_.unstable_now=function(){return K.now()}}else{var sl=Date,Yl=sl.now();_.unstable_now=function(){return sl.now()-Yl}}var R=[],T=[],U=1,il=null,el=3,Bl=!1,ql=!1,dt=!1,Gl=!1,da=typeof setTimeout=="function"?setTimeout:null,_t=typeof clearTimeout=="function"?clearTimeout:null,Dl=typeof setImmediate<"u"?setImmediate:null;function rt(S){for(var z=Z(T);z!==null;){if(z.callback===null)m(T);else if(z.startTime<=S)m(T),z.sortIndex=z.expirationTime,W(R,z);else break;z=Z(T)}}function J(S){if(dt=!1,rt(S),!ql)if(Z(R)!==null)ql=!0,Zl||(Zl=!0,Ml());else{var z=Z(T);z!==null&&Ul(J,z.startTime-S)}}var Zl=!1,Vl=-1,Kl=5,mt=-1;function Na(){return Gl?!0:!(_.unstable_now()-mtS&&Na());){var al=il.callback;if(typeof al=="function"){il.callback=null,el=il.priorityLevel;var s=al(il.expirationTime<=S);if(S=_.unstable_now(),typeof s=="function"){il.callback=s,rt(S),z=!0;break t}il===Z(R)&&m(R),rt(S)}else m(R);il=Z(R)}if(il!==null)z=!0;else{var E=Z(T);E!==null&&Ul(J,E.startTime-S),z=!1}}break l}finally{il=null,el=B,Bl=!1}z=void 0}}finally{z?Ml():Zl=!1}}}var Ml;if(typeof Dl=="function")Ml=function(){Dl(pt)};else if(typeof MessageChannel<"u"){var ra=new MessageChannel,ya=ra.port2;ra.port1.onmessage=pt,Ml=function(){ya.postMessage(null)}}else Ml=function(){da(pt,0)};function Ul(S,z){Vl=da(function(){S(_.unstable_now())},z)}_.unstable_IdlePriority=5,_.unstable_ImmediatePriority=1,_.unstable_LowPriority=4,_.unstable_NormalPriority=3,_.unstable_Profiling=null,_.unstable_UserBlockingPriority=2,_.unstable_cancelCallback=function(S){S.callback=null},_.unstable_forceFrameRate=function(S){0>S||125al?(S.sortIndex=B,W(T,S),Z(R)===null&&S===Z(T)&&(dt?(_t(Vl),Vl=-1):dt=!0,Ul(J,B-al))):(S.sortIndex=s,W(R,S),ql||Bl||(ql=!0,Zl||(Zl=!0,Ml()))),S},_.unstable_shouldYield=Na,_.unstable_wrapCallback=function(S){var z=el;return function(){var B=el;el=z;try{return S.apply(this,arguments)}finally{el=B}}}}(Ic)),Ic}var ar;function Yy(){return ar||(ar=1,Pc.exports=Ny()),Pc.exports}var lf={exports:{}},Nl={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var ur;function By(){if(ur)return Nl;ur=1;var _=af();function W(R){var T="https://react.dev/errors/"+R;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_)}catch(W){console.error(W)}}return _(),lf.exports=By(),lf.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var nr;function Cy(){if(nr)return me;nr=1;var _=Yy(),W=af(),Z=qy();function m(l){var t="https://react.dev/errors/"+l;if(1s||(l.current=al[s],al[s]=null,s--)}function p(l,t){s++,al[s]=l.current,l.current=t}var H=E(null),w=E(null),G=E(null),Jl=E(null);function cl(l,t){switch(p(G,t),p(w,l),p(H,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?zd(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=zd(t),l=Od(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}O(H),p(H,l)}function xt(){O(H),O(w),O(G)}function Bn(l){l.memoizedState!==null&&p(Jl,l);var t=H.current,a=Od(t,l.type);t!==a&&(p(w,l),p(H,a))}function ge(l){w.current===l&&(O(H),O(w)),Jl.current===l&&(O(Jl),oe._currentValue=B)}var qn=Object.prototype.hasOwnProperty,Cn=_.unstable_scheduleCallback,Gn=_.unstable_cancelCallback,cr=_.unstable_shouldYield,fr=_.unstable_requestPaint,gt=_.unstable_now,sr=_.unstable_getCurrentPriorityLevel,uf=_.unstable_ImmediatePriority,ef=_.unstable_UserBlockingPriority,Se=_.unstable_NormalPriority,or=_.unstable_LowPriority,nf=_.unstable_IdlePriority,dr=_.log,rr=_.unstable_setDisableYieldValue,Su=null,wl=null;function Qt(l){if(typeof dr=="function"&&rr(l),wl&&typeof wl.setStrictMode=="function")try{wl.setStrictMode(Su,l)}catch{}}var kl=Math.clz32?Math.clz32:vr,yr=Math.log,hr=Math.LN2;function vr(l){return l>>>=0,l===0?32:31-(yr(l)/hr|0)|0}var be=256,Ae=4194304;function ha(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Ee(l,t,a){var u=l.pendingLanes;if(u===0)return 0;var e=0,n=l.suspendedLanes,i=l.pingedLanes;l=l.warmLanes;var c=u&134217727;return c!==0?(u=c&~n,u!==0?e=ha(u):(i&=c,i!==0?e=ha(i):a||(a=c&~l,a!==0&&(e=ha(a))))):(c=u&~n,c!==0?e=ha(c):i!==0?e=ha(i):a||(a=u&~l,a!==0&&(e=ha(a)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:e}function bu(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function mr(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function cf(){var l=be;return be<<=1,(be&4194048)===0&&(be=256),l}function ff(){var l=Ae;return Ae<<=1,(Ae&62914560)===0&&(Ae=4194304),l}function jn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function Au(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function gr(l,t,a,u,e,n){var i=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var c=l.entanglements,f=l.expirationTimes,y=l.hiddenUpdates;for(a=i&~a;0)":-1e||f[u]!==y[e]){var g=` -`+f[u].replace(" at new "," at ");return l.displayName&&g.includes("")&&(g=g.replace("",l.displayName)),g}while(1<=u&&0<=e);break}}}finally{Vn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?ja(a):""}function _r(l){switch(l.tag){case 26:case 27:case 5:return ja(l.type);case 16:return ja("Lazy");case 13:return ja("Suspense");case 19:return ja("SuspenseList");case 0:case 15:return Kn(l.type,!1);case 11:return Kn(l.type.render,!1);case 1:return Kn(l.type,!0);case 31:return ja("Activity");default:return""}}function Sf(l){try{var t="";do t+=_r(l),l=l.return;while(l);return t}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}function at(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function bf(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function pr(l){var t=bf(l)?"checked":"value",a=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),u=""+l[t];if(!l.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var e=a.get,n=a.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(i){u=""+i,n.call(this,i)}}),Object.defineProperty(l,t,{enumerable:a.enumerable}),{getValue:function(){return u},setValue:function(i){u=""+i},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function pe(l){l._valueTracker||(l._valueTracker=pr(l))}function Af(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var a=t.getValue(),u="";return l&&(u=bf(l)?l.checked?"true":"false":l.value),l=u,l!==a?(t.setValue(l),!0):!1}function ze(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var zr=/[\n"\\]/g;function ut(l){return l.replace(zr,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Jn(l,t,a,u,e,n,i,c){l.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.type=i:l.removeAttribute("type"),t!=null?i==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+at(t)):l.value!==""+at(t)&&(l.value=""+at(t)):i!=="submit"&&i!=="reset"||l.removeAttribute("value"),t!=null?wn(l,i,at(t)):a!=null?wn(l,i,at(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+at(c):l.removeAttribute("name")}function Ef(l,t,a,u,e,n,i,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;a=a!=null?""+at(a):"",t=t!=null?""+at(t):a,c||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=c?l.checked:!!u,l.defaultChecked=!!u,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(l.name=i)}function wn(l,t,a){t==="number"&&ze(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function Xa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Pn=!1;if(Ot)try{var pu={};Object.defineProperty(pu,"passive",{get:function(){Pn=!0}}),window.addEventListener("test",pu,pu),window.removeEventListener("test",pu,pu)}catch{Pn=!1}var Zt=null,In=null,De=null;function Mf(){if(De)return De;var l,t=In,a=t.length,u,e="value"in Zt?Zt.value:Zt.textContent,n=e.length;for(l=0;l=Du),Bf=" ",qf=!1;function Cf(l,t){switch(l){case"keyup":return Ir.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gf(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Za=!1;function t0(l,t){switch(l){case"compositionend":return Gf(t);case"keypress":return t.which!==32?null:(qf=!0,Bf);case"textInput":return l=t.data,l===Bf&&qf?null:l;default:return null}}function a0(l,t){if(Za)return l==="compositionend"||!ei&&Cf(l,t)?(l=Mf(),De=In=Zt=null,Za=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=u}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=Kf(a)}}function wf(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?wf(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function kf(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=ze(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=ze(l.document)}return t}function ci(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var o0=Ot&&"documentMode"in document&&11>=document.documentMode,Va=null,fi=null,Hu=null,si=!1;function Wf(l,t,a){var u=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;si||Va==null||Va!==ze(u)||(u=Va,"selectionStart"in u&&ci(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Hu&&Ru(Hu,u)||(Hu=u,u=Sn(fi,"onSelect"),0>=i,e-=i,Mt=1<<32-kl(t)+e|a<n?n:8;var i=S.T,c={};S.T=c,ki(l,!1,t,a);try{var f=e(),y=S.S;if(y!==null&&y(c,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var g=b0(f,u);Ju(l,t,g,lt(l))}else Ju(l,t,u,lt(l))}catch(A){Ju(l,t,{then:function(){},status:"rejected",reason:A},lt())}finally{z.p=n,S.T=i}}function p0(){}function Ji(l,t,a,u){if(l.tag!==5)throw Error(m(476));var e=$s(l).queue;Ws(l,e,t,B,a===null?p0:function(){return Fs(l),a(u)})}function $s(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:B},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Fs(l){var t=$s(l).next.queue;Ju(l,t,{},lt())}function wi(){return Hl(oe)}function Ps(){return ml().memoizedState}function Is(){return ml().memoizedState}function z0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=lt();l=Jt(a);var u=wt(t,l,a);u!==null&&(tt(u,t,a),xu(u,t,a)),t={cache:_i()},l.payload=t;return}t=t.return}}function O0(l,t,a){var u=lt();a={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},Fe(l)?to(t,a):(a=yi(l,t,a,u),a!==null&&(tt(a,l,u),ao(a,t,u)))}function lo(l,t,a){var u=lt();Ju(l,t,a,u)}function Ju(l,t,a,u){var e={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(Fe(l))to(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var i=t.lastRenderedState,c=n(i,a);if(e.hasEagerState=!0,e.eagerState=c,Wl(c,i))return Be(l,t,e,0),nl===null&&Ye(),!1}catch{}finally{}if(a=yi(l,t,e,u),a!==null)return tt(a,l,u),ao(a,t,u),!0}return!1}function ki(l,t,a,u){if(u={lane:2,revertLane:Oc(),action:u,hasEagerState:!1,eagerState:null,next:null},Fe(l)){if(t)throw Error(m(479))}else t=yi(l,a,u,2),t!==null&&tt(t,l,2)}function Fe(l){var t=l.alternate;return l===X||t!==null&&t===X}function to(l,t){lu=Ke=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function ao(l,t,a){if((a&4194048)!==0){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,of(l,a)}}var Pe={readContext:Hl,use:we,useCallback:yl,useContext:yl,useEffect:yl,useImperativeHandle:yl,useLayoutEffect:yl,useInsertionEffect:yl,useMemo:yl,useReducer:yl,useRef:yl,useState:yl,useDebugValue:yl,useDeferredValue:yl,useTransition:yl,useSyncExternalStore:yl,useId:yl,useHostTransitionStatus:yl,useFormState:yl,useActionState:yl,useOptimistic:yl,useMemoCache:yl,useCacheRefresh:yl},uo={readContext:Hl,use:we,useCallback:function(l,t){return xl().memoizedState=[l,t===void 0?null:t],l},useContext:Hl,useEffect:xs,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,$e(4194308,4,Vs.bind(null,t,l),a)},useLayoutEffect:function(l,t){return $e(4194308,4,l,t)},useInsertionEffect:function(l,t){$e(4,2,l,t)},useMemo:function(l,t){var a=xl();t=t===void 0?null:t;var u=l();if(Da){Qt(!0);try{l()}finally{Qt(!1)}}return a.memoizedState=[u,t],u},useReducer:function(l,t,a){var u=xl();if(a!==void 0){var e=a(t);if(Da){Qt(!0);try{a(t)}finally{Qt(!1)}}}else e=t;return u.memoizedState=u.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},u.queue=l,l=l.dispatch=O0.bind(null,X,l),[u.memoizedState,l]},useRef:function(l){var t=xl();return l={current:l},t.memoizedState=l},useState:function(l){l=Li(l);var t=l.queue,a=lo.bind(null,X,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:Vi,useDeferredValue:function(l,t){var a=xl();return Ki(a,l,t)},useTransition:function(){var l=Li(!1);return l=Ws.bind(null,X,l.queue,!0,!1),xl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var u=X,e=xl();if($){if(a===void 0)throw Error(m(407));a=a()}else{if(a=t(),nl===null)throw Error(m(349));(V&124)!==0||ps(u,t,a)}e.memoizedState=a;var n={value:a,getSnapshot:t};return e.queue=n,xs(Os.bind(null,u,n,l),[l]),u.flags|=2048,au(9,We(),zs.bind(null,u,n,a,t),null),a},useId:function(){var l=xl(),t=nl.identifierPrefix;if($){var a=Ut,u=Mt;a=(u&~(1<<32-kl(u)-1)).toString(32)+a,t="«"+t+"R"+a,a=Je++,0Y?(Tl=M,M=null):Tl=M.sibling;var k=h(d,M,r[Y],b);if(k===null){M===null&&(M=Tl);break}l&&M&&k.alternate===null&&t(d,M),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k,M=Tl}if(Y===r.length)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;YY?(Tl=M,M=null):Tl=M.sibling;var oa=h(d,M,k.value,b);if(oa===null){M===null&&(M=Tl);break}l&&M&&oa.alternate===null&&t(d,M),o=n(oa,o,Y),x===null?D=oa:x.sibling=oa,x=oa,M=Tl}if(k.done)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;!k.done;Y++,k=r.next())k=A(d,k.value,b),k!==null&&(o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return $&&Ea(d,Y),D}for(M=u(M);!k.done;Y++,k=r.next())k=v(M,d,Y,k.value,b),k!==null&&(l&&k.alternate!==null&&M.delete(k.key===null?Y:k.key),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return l&&M.forEach(function(My){return t(d,My)}),$&&Ea(d,Y),D}function tl(d,o,r,b){if(typeof r=="object"&&r!==null&&r.type===ql&&r.key===null&&(r=r.props.children),typeof r=="object"&&r!==null){switch(r.$$typeof){case el:l:{for(var D=r.key;o!==null;){if(o.key===D){if(D=r.type,D===ql){if(o.tag===7){a(d,o.sibling),b=e(o,r.props.children),b.return=d,d=b;break l}}else if(o.elementType===D||typeof D=="object"&&D!==null&&D.$$typeof===Kl&&no(D)===o.type){a(d,o.sibling),b=e(o,r.props),ku(b,r),b.return=d,d=b;break l}a(d,o);break}else t(d,o);o=o.sibling}r.type===ql?(b=ba(r.props.children,d.mode,b,r.key),b.return=d,d=b):(b=Ce(r.type,r.key,r.props,null,d.mode,b),ku(b,r),b.return=d,d=b)}return i(d);case Bl:l:{for(D=r.key;o!==null;){if(o.key===D)if(o.tag===4&&o.stateNode.containerInfo===r.containerInfo&&o.stateNode.implementation===r.implementation){a(d,o.sibling),b=e(o,r.children||[]),b.return=d,d=b;break l}else{a(d,o);break}else t(d,o);o=o.sibling}b=mi(r,d.mode,b),b.return=d,d=b}return i(d);case Kl:return D=r._init,r=D(r._payload),tl(d,o,r,b)}if(Ul(r))return q(d,o,r,b);if(Ml(r)){if(D=Ml(r),typeof D!="function")throw Error(m(150));return r=D.call(r),N(d,o,r,b)}if(typeof r.then=="function")return tl(d,o,Ie(r),b);if(r.$$typeof===Dl)return tl(d,o,xe(d,r),b);ln(d,r)}return typeof r=="string"&&r!==""||typeof r=="number"||typeof r=="bigint"?(r=""+r,o!==null&&o.tag===6?(a(d,o.sibling),b=e(o,r),b.return=d,d=b):(a(d,o),b=vi(r,d.mode,b),b.return=d,d=b),i(d)):a(d,o)}return function(d,o,r,b){try{wu=0;var D=tl(d,o,r,b);return uu=null,D}catch(M){if(M===ju||M===Le)throw M;var x=$l(29,M,null,d.mode);return x.lanes=b,x.return=d,x}finally{}}}var eu=io(!0),co=io(!1),ft=E(null),bt=null;function Wt(l){var t=l.alternate;p(Sl,Sl.current&1),p(ft,l),bt===null&&(t===null||Ia.current!==null||t.memoizedState!==null)&&(bt=l)}function fo(l){if(l.tag===22){if(p(Sl,Sl.current),p(ft,l),bt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(bt=l)}}else $t()}function $t(){p(Sl,Sl.current),p(ft,ft.current)}function Yt(l){O(ft),bt===l&&(bt=null),O(Sl)}var Sl=E(0);function tn(l){for(var t=l;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||jc(a)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Wi(l,t,a,u){t=l.memoizedState,a=a(u,t),a=a==null?t:U({},t,a),l.memoizedState=a,l.lanes===0&&(l.updateQueue.baseState=a)}var $i={enqueueSetState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueReplaceState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.tag=1,e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var a=lt(),u=Jt(a);u.tag=2,t!=null&&(u.callback=t),t=wt(l,u,a),t!==null&&(tt(t,l,a),xu(t,l,a))}};function so(l,t,a,u,e,n,i){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(u,n,i):t.prototype&&t.prototype.isPureReactComponent?!Ru(a,u)||!Ru(e,n):!0}function oo(l,t,a,u){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,u),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,u),t.state!==l&&$i.enqueueReplaceState(t,t.state,null)}function Ma(l,t){var a=t;if("ref"in t){a={};for(var u in t)u!=="ref"&&(a[u]=t[u])}if(l=l.defaultProps){a===t&&(a=U({},a));for(var e in l)a[e]===void 0&&(a[e]=l[e])}return a}var an=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function ro(l){an(l)}function yo(l){console.error(l)}function ho(l){an(l)}function un(l,t){try{var a=l.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(u){setTimeout(function(){throw u})}}function vo(l,t,a){try{var u=l.onCaughtError;u(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Fi(l,t,a){return a=Jt(a),a.tag=3,a.payload={element:null},a.callback=function(){un(l,t)},a}function mo(l){return l=Jt(l),l.tag=3,l}function go(l,t,a,u){var e=a.type.getDerivedStateFromError;if(typeof e=="function"){var n=u.value;l.payload=function(){return e(n)},l.callback=function(){vo(t,a,u)}}var i=a.stateNode;i!==null&&typeof i.componentDidCatch=="function"&&(l.callback=function(){vo(t,a,u),typeof e!="function"&&(aa===null?aa=new Set([this]):aa.add(this));var c=u.stack;this.componentDidCatch(u.value,{componentStack:c!==null?c:""})})}function M0(l,t,a,u,e){if(a.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(t=a.alternate,t!==null&&qu(t,a,e,!0),a=ft.current,a!==null){switch(a.tag){case 13:return bt===null?Ec():a.alternate===null&&rl===0&&(rl=3),a.flags&=-257,a.flags|=65536,a.lanes=e,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([u]):t.add(u),_c(l,u,e)),!1;case 22:return a.flags|=65536,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([u])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([u]):a.add(u)),_c(l,u,e)),!1}throw Error(m(435,a.tag))}return _c(l,u,e),Ec(),!1}if($)return t=ft.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=e,u!==bi&&(l=Error(m(422),{cause:u}),Bu(et(l,a)))):(u!==bi&&(t=Error(m(423),{cause:u}),Bu(et(t,a))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,u=et(u,a),e=Fi(l.stateNode,u,e),Ui(l,e),rl!==4&&(rl=2)),!1;var n=Error(m(520),{cause:u});if(n=et(n,a),te===null?te=[n]:te.push(n),rl!==4&&(rl=2),t===null)return!0;u=et(u,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,l=e&-e,a.lanes|=l,l=Fi(a.stateNode,u,l),Ui(a,l),!1;case 1:if(t=a.type,n=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(aa===null||!aa.has(n))))return a.flags|=65536,e&=-e,a.lanes|=e,e=mo(e),go(e,l,a,u),Ui(a,e),!1}a=a.return}while(a!==null);return!1}var So=Error(m(461)),Al=!1;function pl(l,t,a,u){t.child=l===null?co(t,null,a,u):eu(t,l.child,a,u)}function bo(l,t,a,u,e){a=a.render;var n=t.ref;if("ref"in u){var i={};for(var c in u)c!=="ref"&&(i[c]=u[c])}else i=u;return za(t),u=Bi(l,t,a,i,n,e),c=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&c&&gi(t),t.flags|=1,pl(l,t,u,e),t.child)}function Ao(l,t,a,u,e){if(l===null){var n=a.type;return typeof n=="function"&&!hi(n)&&n.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=n,Eo(l,t,n,u,e)):(l=Ce(a.type,null,u,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!nc(l,e)){var i=n.memoizedProps;if(a=a.compare,a=a!==null?a:Ru,a(i,u)&&l.ref===t.ref)return Bt(l,t,e)}return t.flags|=1,l=Dt(n,u),l.ref=t.ref,l.return=t,t.child=l}function Eo(l,t,a,u,e){if(l!==null){var n=l.memoizedProps;if(Ru(n,u)&&l.ref===t.ref)if(Al=!1,t.pendingProps=u=n,nc(l,e))(l.flags&131072)!==0&&(Al=!0);else return t.lanes=l.lanes,Bt(l,t,e)}return Pi(l,t,a,u,e)}function To(l,t,a){var u=t.pendingProps,e=u.children,n=l!==null?l.memoizedState:null;if(u.mode==="hidden"){if((t.flags&128)!==0){if(u=n!==null?n.baseLanes|a:a,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~u}else t.childLanes=0,t.child=null;return _o(l,t,u,a)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Qe(t,n!==null?n.cachePool:null),n!==null?As(t,n):Hi(),fo(t);else return t.lanes=t.childLanes=536870912,_o(l,t,n!==null?n.baseLanes|a:a,a)}else n!==null?(Qe(t,n.cachePool),As(t,n),$t(),t.memoizedState=null):(l!==null&&Qe(t,null),Hi(),$t());return pl(l,t,e,a),t.child}function _o(l,t,a,u){var e=zi();return e=e===null?null:{parent:gl._currentValue,pool:e},t.memoizedState={baseLanes:a,cachePool:e},l!==null&&Qe(t,null),Hi(),fo(t),l!==null&&qu(l,t,u,!0),null}function en(l,t){var a=t.ref;if(a===null)l!==null&&l.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(m(284));(l===null||l.ref!==a)&&(t.flags|=4194816)}}function Pi(l,t,a,u,e){return za(t),a=Bi(l,t,a,u,void 0,e),u=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,e),t.child)}function po(l,t,a,u,e,n){return za(t),t.updateQueue=null,a=Ts(t,u,a,e),Es(l),u=qi(),l!==null&&!Al?(Ci(l,t,n),Bt(l,t,n)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,n),t.child)}function zo(l,t,a,u,e){if(za(t),t.stateNode===null){var n=ka,i=a.contextType;typeof i=="object"&&i!==null&&(n=Hl(i)),n=new a(u,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=$i,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=u,n.state=t.memoizedState,n.refs={},Di(t),i=a.contextType,n.context=typeof i=="object"&&i!==null?Hl(i):ka,n.state=t.memoizedState,i=a.getDerivedStateFromProps,typeof i=="function"&&(Wi(t,a,i,u),n.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(i=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),i!==n.state&&$i.enqueueReplaceState(n,n.state,null),Lu(t,u,n,e),Qu(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!0}else if(l===null){n=t.stateNode;var c=t.memoizedProps,f=Ma(a,c);n.props=f;var y=n.context,g=a.contextType;i=ka,typeof g=="object"&&g!==null&&(i=Hl(g));var A=a.getDerivedStateFromProps;g=typeof A=="function"||typeof n.getSnapshotBeforeUpdate=="function",c=t.pendingProps!==c,g||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c||y!==i)&&oo(t,n,u,i),Kt=!1;var h=t.memoizedState;n.state=h,Lu(t,u,n,e),Qu(),y=t.memoizedState,c||h!==y||Kt?(typeof A=="function"&&(Wi(t,a,A,u),y=t.memoizedState),(f=Kt||so(t,a,f,u,h,y,i))?(g||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=u,t.memoizedState=y),n.props=u,n.state=y,n.context=i,u=f):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!1)}else{n=t.stateNode,Mi(l,t),i=t.memoizedProps,g=Ma(a,i),n.props=g,A=t.pendingProps,h=n.context,y=a.contextType,f=ka,typeof y=="object"&&y!==null&&(f=Hl(y)),c=a.getDerivedStateFromProps,(y=typeof c=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(i!==A||h!==f)&&oo(t,n,u,f),Kt=!1,h=t.memoizedState,n.state=h,Lu(t,u,n,e),Qu();var v=t.memoizedState;i!==A||h!==v||Kt||l!==null&&l.dependencies!==null&&Xe(l.dependencies)?(typeof c=="function"&&(Wi(t,a,c,u),v=t.memoizedState),(g=Kt||so(t,a,g,u,h,v,f)||l!==null&&l.dependencies!==null&&Xe(l.dependencies))?(y||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(u,v,f),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(u,v,f)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),t.memoizedProps=u,t.memoizedState=v),n.props=u,n.state=v,n.context=f,u=g):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),u=!1)}return n=u,en(l,t),u=(t.flags&128)!==0,n||u?(n=t.stateNode,a=u&&typeof a.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&u?(t.child=eu(t,l.child,null,e),t.child=eu(t,null,a,e)):pl(l,t,a,e),t.memoizedState=n.state,l=t.child):l=Bt(l,t,e),l}function Oo(l,t,a,u){return Yu(),t.flags|=256,pl(l,t,a,u),t.child}var Ii={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function lc(l){return{baseLanes:l,cachePool:rs()}}function tc(l,t,a){return l=l!==null?l.childLanes&~a:0,t&&(l|=st),l}function Do(l,t,a){var u=t.pendingProps,e=!1,n=(t.flags&128)!==0,i;if((i=n)||(i=l!==null&&l.memoizedState===null?!1:(Sl.current&2)!==0),i&&(e=!0,t.flags&=-129),i=(t.flags&32)!==0,t.flags&=-33,l===null){if($){if(e?Wt(t):$t(),$){var c=dl,f;if(f=c){l:{for(f=c,c=St;f.nodeType!==8;){if(!c){c=null;break l}if(f=vt(f.nextSibling),f===null){c=null;break l}}c=f}c!==null?(t.memoizedState={dehydrated:c,treeContext:Aa!==null?{id:Mt,overflow:Ut}:null,retryLane:536870912,hydrationErrors:null},f=$l(18,null,null,0),f.stateNode=c,f.return=t,t.child=f,Cl=t,dl=null,f=!0):f=!1}f||_a(t)}if(c=t.memoizedState,c!==null&&(c=c.dehydrated,c!==null))return jc(c)?t.lanes=32:t.lanes=536870912,null;Yt(t)}return c=u.children,u=u.fallback,e?($t(),e=t.mode,c=nn({mode:"hidden",children:c},e),u=ba(u,e,a,null),c.return=t,u.return=t,c.sibling=u,t.child=c,e=t.child,e.memoizedState=lc(a),e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),ac(t,c))}if(f=l.memoizedState,f!==null&&(c=f.dehydrated,c!==null)){if(n)t.flags&256?(Wt(t),t.flags&=-257,t=uc(l,t,a)):t.memoizedState!==null?($t(),t.child=l.child,t.flags|=128,t=null):($t(),e=u.fallback,c=t.mode,u=nn({mode:"visible",children:u.children},c),e=ba(e,c,a,null),e.flags|=2,u.return=t,e.return=t,u.sibling=e,t.child=u,eu(t,l.child,null,a),u=t.child,u.memoizedState=lc(a),u.childLanes=tc(l,i,a),t.memoizedState=Ii,t=e);else if(Wt(t),jc(c)){if(i=c.nextSibling&&c.nextSibling.dataset,i)var y=i.dgst;i=y,u=Error(m(419)),u.stack="",u.digest=i,Bu({value:u,source:null,stack:null}),t=uc(l,t,a)}else if(Al||qu(l,t,a,!1),i=(a&l.childLanes)!==0,Al||i){if(i=nl,i!==null&&(u=a&-a,u=(u&42)!==0?1:Xn(u),u=(u&(i.suspendedLanes|a))!==0?0:u,u!==0&&u!==f.retryLane))throw f.retryLane=u,wa(l,u),tt(i,l,u),So;c.data==="$?"||Ec(),t=uc(l,t,a)}else c.data==="$?"?(t.flags|=192,t.child=l.child,t=null):(l=f.treeContext,dl=vt(c.nextSibling),Cl=t,$=!0,Ta=null,St=!1,l!==null&&(it[ct++]=Mt,it[ct++]=Ut,it[ct++]=Aa,Mt=l.id,Ut=l.overflow,Aa=t),t=ac(t,u.children),t.flags|=4096);return t}return e?($t(),e=u.fallback,c=t.mode,f=l.child,y=f.sibling,u=Dt(f,{mode:"hidden",children:u.children}),u.subtreeFlags=f.subtreeFlags&65011712,y!==null?e=Dt(y,e):(e=ba(e,c,a,null),e.flags|=2),e.return=t,u.return=t,u.sibling=e,t.child=u,u=e,e=t.child,c=l.child.memoizedState,c===null?c=lc(a):(f=c.cachePool,f!==null?(y=gl._currentValue,f=f.parent!==y?{parent:y,pool:y}:f):f=rs(),c={baseLanes:c.baseLanes|a,cachePool:f}),e.memoizedState=c,e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),a=l.child,l=a.sibling,a=Dt(a,{mode:"visible",children:u.children}),a.return=t,a.sibling=null,l!==null&&(i=t.deletions,i===null?(t.deletions=[l],t.flags|=16):i.push(l)),t.child=a,t.memoizedState=null,a)}function ac(l,t){return t=nn({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function nn(l,t){return l=$l(22,l,null,t),l.lanes=0,l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},l}function uc(l,t,a){return eu(t,l.child,null,a),l=ac(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function Mo(l,t,a){l.lanes|=t;var u=l.alternate;u!==null&&(u.lanes|=t),Ei(l.return,t,a)}function ec(l,t,a,u,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:u,tail:a,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=u,n.tail=a,n.tailMode=e)}function Uo(l,t,a){var u=t.pendingProps,e=u.revealOrder,n=u.tail;if(pl(l,t,u.children,a),u=Sl.current,(u&2)!==0)u=u&1|2,t.flags|=128;else{if(l!==null&&(l.flags&128)!==0)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&Mo(l,a,t);else if(l.tag===19)Mo(l,a,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}u&=1}switch(p(Sl,u),e){case"forwards":for(a=t.child,e=null;a!==null;)l=a.alternate,l!==null&&tn(l)===null&&(e=a),a=a.sibling;a=e,a===null?(e=t.child,t.child=null):(e=a.sibling,a.sibling=null),ec(t,!1,e,a,n);break;case"backwards":for(a=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&tn(l)===null){t.child=e;break}l=e.sibling,e.sibling=a,a=e,e=l}ec(t,!0,a,null,n);break;case"together":ec(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Bt(l,t,a){if(l!==null&&(t.dependencies=l.dependencies),ta|=t.lanes,(a&t.childLanes)===0)if(l!==null){if(qu(l,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(m(153));if(t.child!==null){for(l=t.child,a=Dt(l,l.pendingProps),t.child=a,a.return=t;l.sibling!==null;)l=l.sibling,a=a.sibling=Dt(l,l.pendingProps),a.return=t;a.sibling=null}return t.child}function nc(l,t){return(l.lanes&t)!==0?!0:(l=l.dependencies,!!(l!==null&&Xe(l)))}function U0(l,t,a){switch(t.tag){case 3:cl(t,t.stateNode.containerInfo),Vt(t,gl,l.memoizedState.cache),Yu();break;case 27:case 5:Bn(t);break;case 4:cl(t,t.stateNode.containerInfo);break;case 10:Vt(t,t.type,t.memoizedProps.value);break;case 13:var u=t.memoizedState;if(u!==null)return u.dehydrated!==null?(Wt(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Do(l,t,a):(Wt(t),l=Bt(l,t,a),l!==null?l.sibling:null);Wt(t);break;case 19:var e=(l.flags&128)!==0;if(u=(a&t.childLanes)!==0,u||(qu(l,t,a,!1),u=(a&t.childLanes)!==0),e){if(u)return Uo(l,t,a);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),p(Sl,Sl.current),u)break;return null;case 22:case 23:return t.lanes=0,To(l,t,a);case 24:Vt(t,gl,l.memoizedState.cache)}return Bt(l,t,a)}function Ro(l,t,a){if(l!==null)if(l.memoizedProps!==t.pendingProps)Al=!0;else{if(!nc(l,a)&&(t.flags&128)===0)return Al=!1,U0(l,t,a);Al=(l.flags&131072)!==0}else Al=!1,$&&(t.flags&1048576)!==0&&ns(t,je,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var u=t.elementType,e=u._init;if(u=e(u._payload),t.type=u,typeof u=="function")hi(u)?(l=Ma(u,l),t.tag=1,t=zo(null,t,u,l,a)):(t.tag=0,t=Pi(null,t,u,l,a));else{if(u!=null){if(e=u.$$typeof,e===rt){t.tag=11,t=bo(null,t,u,l,a);break l}else if(e===Vl){t.tag=14,t=Ao(null,t,u,l,a);break l}}throw t=ya(u)||u,Error(m(306,t,""))}}return t;case 0:return Pi(l,t,t.type,t.pendingProps,a);case 1:return u=t.type,e=Ma(u,t.pendingProps),zo(l,t,u,e,a);case 3:l:{if(cl(t,t.stateNode.containerInfo),l===null)throw Error(m(387));u=t.pendingProps;var n=t.memoizedState;e=n.element,Mi(l,t),Lu(t,u,null,a);var i=t.memoizedState;if(u=i.cache,Vt(t,gl,u),u!==n.cache&&Ti(t,[gl],a,!0),Qu(),u=i.element,n.isDehydrated)if(n={element:u,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){t=Oo(l,t,u,a);break l}else if(u!==e){e=et(Error(m(424)),t),Bu(e),t=Oo(l,t,u,a);break l}else{switch(l=t.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(dl=vt(l.firstChild),Cl=t,$=!0,Ta=null,St=!0,a=co(t,null,u,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Yu(),u===e){t=Bt(l,t,a);break l}pl(l,t,u,a)}t=t.child}return t;case 26:return en(l,t),l===null?(a=Bd(t.type,null,t.pendingProps,null))?t.memoizedState=a:$||(a=t.type,l=t.pendingProps,u=An(G.current).createElement(a),u[Rl]=t,u[jl]=l,Ol(u,a,l),bl(u),t.stateNode=u):t.memoizedState=Bd(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return Bn(t),l===null&&$&&(u=t.stateNode=Hd(t.type,t.pendingProps,G.current),Cl=t,St=!0,e=dl,na(t.type)?(Xc=e,dl=vt(u.firstChild)):dl=e),pl(l,t,t.pendingProps.children,a),en(l,t),l===null&&(t.flags|=4194304),t.child;case 5:return l===null&&$&&((e=u=dl)&&(u=uy(u,t.type,t.pendingProps,St),u!==null?(t.stateNode=u,Cl=t,dl=vt(u.firstChild),St=!1,e=!0):e=!1),e||_a(t)),Bn(t),e=t.type,n=t.pendingProps,i=l!==null?l.memoizedProps:null,u=n.children,qc(e,n)?u=null:i!==null&&qc(e,i)&&(t.flags|=32),t.memoizedState!==null&&(e=Bi(l,t,E0,null,null,a),oe._currentValue=e),en(l,t),pl(l,t,u,a),t.child;case 6:return l===null&&$&&((l=a=dl)&&(a=ey(a,t.pendingProps,St),a!==null?(t.stateNode=a,Cl=t,dl=null,l=!0):l=!1),l||_a(t)),null;case 13:return Do(l,t,a);case 4:return cl(t,t.stateNode.containerInfo),u=t.pendingProps,l===null?t.child=eu(t,null,u,a):pl(l,t,u,a),t.child;case 11:return bo(l,t,t.type,t.pendingProps,a);case 7:return pl(l,t,t.pendingProps,a),t.child;case 8:return pl(l,t,t.pendingProps.children,a),t.child;case 12:return pl(l,t,t.pendingProps.children,a),t.child;case 10:return u=t.pendingProps,Vt(t,t.type,u.value),pl(l,t,u.children,a),t.child;case 9:return e=t.type._context,u=t.pendingProps.children,za(t),e=Hl(e),u=u(e),t.flags|=1,pl(l,t,u,a),t.child;case 14:return Ao(l,t,t.type,t.pendingProps,a);case 15:return Eo(l,t,t.type,t.pendingProps,a);case 19:return Uo(l,t,a);case 31:return u=t.pendingProps,a=t.mode,u={mode:u.mode,children:u.children},l===null?(a=nn(u,a),a.ref=t.ref,t.child=a,a.return=t,t=a):(a=Dt(l.child,u),a.ref=t.ref,t.child=a,a.return=t,t=a),t;case 22:return To(l,t,a);case 24:return za(t),u=Hl(gl),l===null?(e=zi(),e===null&&(e=nl,n=_i(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=a),e=n),t.memoizedState={parent:u,cache:e},Di(t),Vt(t,gl,e)):((l.lanes&a)!==0&&(Mi(l,t),Lu(t,null,null,a),Qu()),e=l.memoizedState,n=t.memoizedState,e.parent!==u?(e={parent:u,cache:u},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Vt(t,gl,u)):(u=n.cache,Vt(t,gl,u),u!==e.cache&&Ti(t,[gl],a,!0))),pl(l,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(m(156,t.tag))}function qt(l){l.flags|=4}function Ho(l,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!Xd(t)){if(t=ft.current,t!==null&&((V&4194048)===V?bt!==null:(V&62914560)!==V&&(V&536870912)===0||t!==bt))throw Xu=Oi,ys;l.flags|=8192}}function cn(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?ff():536870912,l.lanes|=t,fu|=t)}function Wu(l,t){if(!$)switch(l.tailMode){case"hidden":t=l.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?l.tail=null:a.sibling=null;break;case"collapsed":a=l.tail;for(var u=null;a!==null;)a.alternate!==null&&(u=a),a=a.sibling;u===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:u.sibling=null}}function ol(l){var t=l.alternate!==null&&l.alternate.child===l.child,a=0,u=0;if(t)for(var e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags&65011712,u|=e.flags&65011712,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags,u|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=u,l.childLanes=a,t}function R0(l,t,a){var u=t.pendingProps;switch(Si(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ol(t),null;case 1:return ol(t),null;case 3:return a=t.stateNode,u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),Ht(gl),xt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(l===null||l.child===null)&&(Nu(t)?qt(t):l===null||l.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,fs())),ol(t),null;case 26:return a=t.memoizedState,l===null?(qt(t),a!==null?(ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217)):a?a!==l.memoizedState?(qt(t),ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217):(l.memoizedProps!==u&&qt(t),ol(t),t.flags&=-16777217),null;case 27:ge(t),a=G.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}l=H.current,Nu(t)?is(t):(l=Hd(e,u,a),t.stateNode=l,qt(t))}return ol(t),null;case 5:if(ge(t),a=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}if(l=H.current,Nu(t))is(t);else{switch(e=An(G.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":l=e.createElement("div"),l.innerHTML=" - - - -
- - + + + + + + + Vite + React + + + + +
+ + diff --git a/week1/project/ecommerce/dist/vite.svg b/week2/ecommerce/dist/vite.svg similarity index 100% rename from week1/project/ecommerce/dist/vite.svg rename to week2/ecommerce/dist/vite.svg diff --git a/week1/project/ecommerce/eslint.config.js b/week2/ecommerce/eslint.config.js similarity index 100% rename from week1/project/ecommerce/eslint.config.js rename to week2/ecommerce/eslint.config.js diff --git a/week1/project/ecommerce/fake-data/all-categories.js b/week2/ecommerce/fake-data/all-categories.js similarity index 100% rename from week1/project/ecommerce/fake-data/all-categories.js rename to week2/ecommerce/fake-data/all-categories.js diff --git a/week1/project/ecommerce/fake-data/all-products.js b/week2/ecommerce/fake-data/all-products.js similarity index 100% rename from week1/project/ecommerce/fake-data/all-products.js rename to week2/ecommerce/fake-data/all-products.js diff --git a/week1/project/ecommerce/index.html b/week2/ecommerce/index.html similarity index 100% rename from week1/project/ecommerce/index.html rename to week2/ecommerce/index.html diff --git a/week1/project/ecommerce/package-lock.json b/week2/ecommerce/package-lock.json similarity index 98% rename from week1/project/ecommerce/package-lock.json rename to week2/ecommerce/package-lock.json index e3a3c78d14..2ad006621c 100644 --- a/week1/project/ecommerce/package-lock.json +++ b/week2/ecommerce/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.0", "dependencies": { "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.2" }, "devDependencies": { "@eslint/js": "^9.25.0", @@ -1613,6 +1614,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2484,6 +2494,44 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz", + "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz", + "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==", + "license": "MIT", + "dependencies": { + "react-router": "7.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2557,6 +2605,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/week1/project/ecommerce/package.json b/week2/ecommerce/package.json similarity index 86% rename from week1/project/ecommerce/package.json rename to week2/ecommerce/package.json index 445e479d8e..22095b537e 100644 --- a/week1/project/ecommerce/package.json +++ b/week2/ecommerce/package.json @@ -4,6 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { + "start": "npm run dev", "dev": "vite", "build": "vite build", "lint": "eslint .", @@ -11,7 +12,8 @@ }, "dependencies": { "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.2" }, "devDependencies": { "@eslint/js": "^9.25.0", diff --git a/week1/project/ecommerce/public/vite.svg b/week2/ecommerce/public/vite.svg similarity index 100% rename from week1/project/ecommerce/public/vite.svg rename to week2/ecommerce/public/vite.svg diff --git a/week1/project/ecommerce/src/App.css b/week2/ecommerce/src/App.css similarity index 100% rename from week1/project/ecommerce/src/App.css rename to week2/ecommerce/src/App.css diff --git a/week2/ecommerce/src/App.jsx b/week2/ecommerce/src/App.jsx new file mode 100644 index 0000000000..0299a0cab2 --- /dev/null +++ b/week2/ecommerce/src/App.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Routes, Route } from 'react-router-dom'; +import './App.css'; +import FeedPage from './Pages/FeedPage'; +import ProductDetail from './Pages/ProductDetail'; + +function App() { + return ( +
+ + } /> + } /> + +
+ ); +} + +export default App; diff --git a/week1/project/ecommerce/src/Components/CategoryButton.css b/week2/ecommerce/src/Components/CategoryButton.css similarity index 100% rename from week1/project/ecommerce/src/Components/CategoryButton.css rename to week2/ecommerce/src/Components/CategoryButton.css diff --git a/week1/project/ecommerce/src/Components/CategoryButton.jsx b/week2/ecommerce/src/Components/CategoryButton.jsx similarity index 100% rename from week1/project/ecommerce/src/Components/CategoryButton.jsx rename to week2/ecommerce/src/Components/CategoryButton.jsx diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.css b/week2/ecommerce/src/Composite/CategoryFilter.css similarity index 100% rename from week1/project/ecommerce/src/Composite/CategoryFilter.css rename to week2/ecommerce/src/Composite/CategoryFilter.css diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.jsx b/week2/ecommerce/src/Composite/CategoryFilter.jsx similarity index 100% rename from week1/project/ecommerce/src/Composite/CategoryFilter.jsx rename to week2/ecommerce/src/Composite/CategoryFilter.jsx diff --git a/week1/project/ecommerce/src/Composite/ProductCard.css b/week2/ecommerce/src/Composite/ProductCard.css similarity index 67% rename from week1/project/ecommerce/src/Composite/ProductCard.css rename to week2/ecommerce/src/Composite/ProductCard.css index 44c98b45cc..fe0a4fff06 100644 --- a/week1/project/ecommerce/src/Composite/ProductCard.css +++ b/week2/ecommerce/src/Composite/ProductCard.css @@ -27,4 +27,23 @@ max-height: 100%; max-width: 100%; object-fit: contain; +} + +.product-card img { + width: 100%; + max-width: 200px; + height: auto; + object-fit: contain; +} + +.loading { + text-align: center; + margin: 2rem 0; + font-size: 1.2rem; +} + +.error { + color: red; + text-align: center; + margin: 2rem 0; } \ No newline at end of file diff --git a/week2/ecommerce/src/Composite/ProductCard.jsx b/week2/ecommerce/src/Composite/ProductCard.jsx new file mode 100644 index 0000000000..4f16ea6e13 --- /dev/null +++ b/week2/ecommerce/src/Composite/ProductCard.jsx @@ -0,0 +1,14 @@ +import { Link } from 'react-router-dom'; +import "./ProductCard.css"; + +export default function ProductCard({ product }) { + return ( + +
+ {product.title} +
+

{product.title}

+

{product.price} €

+ + ); +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/Composite/ProductList.css b/week2/ecommerce/src/Composite/ProductList.css similarity index 100% rename from week1/project/ecommerce/src/Composite/ProductList.css rename to week2/ecommerce/src/Composite/ProductList.css diff --git a/week1/project/ecommerce/src/Composite/ProductList.jsx b/week2/ecommerce/src/Composite/ProductList.jsx similarity index 100% rename from week1/project/ecommerce/src/Composite/ProductList.jsx rename to week2/ecommerce/src/Composite/ProductList.jsx diff --git a/week2/ecommerce/src/Pages/FeedPage.css b/week2/ecommerce/src/Pages/FeedPage.css new file mode 100644 index 0000000000..3e91f010d8 --- /dev/null +++ b/week2/ecommerce/src/Pages/FeedPage.css @@ -0,0 +1,52 @@ +.feed-page { + max-width: 1200px; + margin: 0 auto; + padding: 16px; +} + +.loading { + text-align: center; + margin: 2rem 0; + font-size: 1.2rem; +} +.error { + color: red; + text-align: center; + margin: 2rem 0; +} + +@media (max-width: 768px) { + .feed-page { + padding: 8px; + } +} + +h1{ + color: #000; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 4rem 0; +} + +.spinner { + width: 48px; + height: 48px; + border: 5px solid rgba(0,0,0,0.1); + border-top-color: #333; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 1rem; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.loading-container p { + font-size: 1.2rem; +} \ No newline at end of file diff --git a/week2/ecommerce/src/Pages/FeedPage.jsx b/week2/ecommerce/src/Pages/FeedPage.jsx new file mode 100644 index 0000000000..ed4b7d50e7 --- /dev/null +++ b/week2/ecommerce/src/Pages/FeedPage.jsx @@ -0,0 +1,65 @@ +import React, { useState, useEffect } from "react"; +import "./FeedPage.css"; +import { fetchCategories, fetchProducts } from "../utils/api"; +import CategoryFilter from "../Composite/CategoryFilter"; +import ProductList from "../Composite/ProductList"; + +export default function FeedPage() { + const [categories, setCategories] = useState([]); + const [selectedCategory, setSelectedCategory] = useState(null); + const [products, setProducts] = useState([]); + + const [loadingCategories, setLoadingCategories] = useState(true); + const [loadingProducts, setLoadingProducts] = useState(false); + const [error, setError] = useState(null); + + // Category loading + useEffect(() => { + fetchCategories() + .then((cats) => { + setCategories(cats); + setError(null); + }) + .catch((err) => setError(err.message)) + .finally(() => setLoadingCategories(false)); + }, []); + + // Loading products when changing filter + useEffect(() => { + setLoadingProducts(true); + fetchProducts(selectedCategory) + .then((prods) => { + setProducts(prods); + setError(null); + }) + .catch((err) => setError(err.message)) + .finally(() => setLoadingProducts(false)); + }, [selectedCategory]); + + const loading = loadingCategories || loadingProducts; + + if (loading) { + return ( +
+
+

Загрузка…

+
+ ); + } + + if (error) { + return

Ошибка: {error}

; + } + + return ( +
+

Products

+ + +
+ ); +} \ No newline at end of file diff --git a/week2/ecommerce/src/Pages/ProductDetail.css b/week2/ecommerce/src/Pages/ProductDetail.css new file mode 100644 index 0000000000..c86c96f7ef --- /dev/null +++ b/week2/ecommerce/src/Pages/ProductDetail.css @@ -0,0 +1,60 @@ +.product-detail { + max-width: 600px; + margin: 2rem auto; + padding: 1rem; + text-align: center; +} + +.product-detail img { + display: block; + width: 100%; + max-width: 400px; + height: auto; + object-fit: contain; + margin: 0 auto 1rem; +} + +.product-detail h1 { + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.product-detail p { + color: #333; +} + +.product-detail .error { + color: red; +} + +.error { + color: red; + text-align: center; + margin: 2rem 0; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + margin: 4rem 0; +} + +.loading-container p { + font-size: 1.2rem; + margin: 0; +} + +.spinner { + width: 48px; + height: 48px; + border: 5px solid rgba(0,0,0,0.1); + border-top-color: #333; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 1rem; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/week2/ecommerce/src/Pages/ProductDetail.jsx b/week2/ecommerce/src/Pages/ProductDetail.jsx new file mode 100644 index 0000000000..0217b36975 --- /dev/null +++ b/week2/ecommerce/src/Pages/ProductDetail.jsx @@ -0,0 +1,42 @@ +import React, { useEffect, useState } from 'react'; +import { useParams } from 'react-router-dom'; +import { fetchProductById } from '../utils/api'; +import './ProductDetail.css'; + +export default function ProductDetail() { + const { id } = useParams(); + const [product, setProduct] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + setLoading(true); + fetchProductById(id) + .then(data => { + setProduct(data); + setError(null); + }) + .catch(err => { + console.error(err); + setError(err.message); + }) + .finally(() => setLoading(false)); + }, [id]); + + if (loading) return

Loading…

; + if (error) return

Error: {error}

; + if (!product) return

Product not found

; + + console.log("PRODUCT DETAIL DATA:", product); + + return ( +
+ {product.title} +

{product.title}

+ +

Category: {product.category}

+

Price: {product.price} €

+

Description: {product.description}

+
+ ); +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/assets/react.svg b/week2/ecommerce/src/assets/react.svg similarity index 100% rename from week1/project/ecommerce/src/assets/react.svg rename to week2/ecommerce/src/assets/react.svg diff --git a/week1/project/ecommerce/src/index.css b/week2/ecommerce/src/index.css similarity index 100% rename from week1/project/ecommerce/src/index.css rename to week2/ecommerce/src/index.css diff --git a/week2/ecommerce/src/main.jsx b/week2/ecommerce/src/main.jsx new file mode 100644 index 0000000000..8dde25cffd --- /dev/null +++ b/week2/ecommerce/src/main.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; +import './index.css'; +import App from './App.jsx'; + +createRoot(document.getElementById('root')).render( + + + + + +); diff --git a/week2/ecommerce/src/utils/api.js b/week2/ecommerce/src/utils/api.js new file mode 100644 index 0000000000..ff1ea43465 --- /dev/null +++ b/week2/ecommerce/src/utils/api.js @@ -0,0 +1,20 @@ +export const fetchCategories = async () => { + const res = await fetch("https://fakestoreapi.com/products/categories"); + if (!res.ok) throw new Error("Error getting categories"); + return await res.json(); +}; + +export const fetchProducts = async (category = null) => { + const url = category + ? `https://fakestoreapi.com/products/category/${encodeURIComponent(category)}` + : "https://fakestoreapi.com/products"; + const res = await fetch(url); + if (!res.ok) throw new Error("Error while receiving products"); + return await res.json(); +}; + +export const fetchProductById = async (id) => { + const res = await fetch(`https://fakestoreapi.com/products/${id}`); + if (!res.ok) throw new Error("Error retrieving product data"); + return await res.json(); +}; \ No newline at end of file diff --git a/week1/project/ecommerce/vite.config.js b/week2/ecommerce/vite.config.js similarity index 100% rename from week1/project/ecommerce/vite.config.js rename to week2/ecommerce/vite.config.js From 876d2465ee98dfe2ea8f49e47b99bec4b502d66b Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 30 Jun 2025 18:51:40 +0200 Subject: [PATCH 5/7] starshynov week3 finished --- week3/ecommerce/.gitignore | 22 + week3/ecommerce/README.md | 12 + week3/ecommerce/dist/assets/index-BlIIyDh1.js | 51 + .../ecommerce/dist/assets/index-C8v8ImfG.css | 1 + week3/ecommerce/dist/index.html | 14 + week3/ecommerce/dist/vite.svg | 1 + week3/ecommerce/eslint.config.js | 33 + week3/ecommerce/fake-data/all-categories.js | 6 + week3/ecommerce/fake-data/all-products.js | 269 ++ week3/ecommerce/index.html | 13 + week3/ecommerce/package-lock.json | 2866 +++++++++++++++++ week3/ecommerce/package.json | 29 + week3/ecommerce/public/vite.svg | 1 + week3/ecommerce/src/App.css | 6 + week3/ecommerce/src/App.jsx | 22 + .../src/Components/CategoryButton.css | 20 + .../src/Components/CategoryButton.jsx | 13 + .../src/Composite/CategoryFilter.css | 14 + .../src/Composite/CategoryFilter.jsx | 27 + week3/ecommerce/src/Composite/Navbar.css | 17 + week3/ecommerce/src/Composite/Navbar.jsx | 12 + week3/ecommerce/src/Composite/ProductCard.css | 71 + week3/ecommerce/src/Composite/ProductCard.jsx | 52 + week3/ecommerce/src/Composite/ProductList.css | 13 + week3/ecommerce/src/Composite/ProductList.jsx | 13 + week3/ecommerce/src/Pages/FavouritesPage.css | 37 + week3/ecommerce/src/Pages/FavouritesPage.jsx | 46 + week3/ecommerce/src/Pages/FeedPage.css | 52 + week3/ecommerce/src/Pages/FeedPage.jsx | 65 + week3/ecommerce/src/Pages/ProductDetail.css | 81 + week3/ecommerce/src/Pages/ProductDetail.jsx | 72 + week3/ecommerce/src/assets/react.svg | 1 + .../src/context/FavoritesContext.jsx | 38 + week3/ecommerce/src/hooks/useFetch.js | 57 + week3/ecommerce/src/index.css | 14 + week3/ecommerce/src/main.jsx | 16 + week3/ecommerce/src/utils/api.js | 20 + week3/ecommerce/vite.config.js | 7 + 38 files changed, 4104 insertions(+) create mode 100644 week3/ecommerce/.gitignore create mode 100644 week3/ecommerce/README.md create mode 100644 week3/ecommerce/dist/assets/index-BlIIyDh1.js create mode 100644 week3/ecommerce/dist/assets/index-C8v8ImfG.css create mode 100644 week3/ecommerce/dist/index.html create mode 100644 week3/ecommerce/dist/vite.svg create mode 100644 week3/ecommerce/eslint.config.js create mode 100644 week3/ecommerce/fake-data/all-categories.js create mode 100644 week3/ecommerce/fake-data/all-products.js create mode 100644 week3/ecommerce/index.html create mode 100644 week3/ecommerce/package-lock.json create mode 100644 week3/ecommerce/package.json create mode 100644 week3/ecommerce/public/vite.svg create mode 100644 week3/ecommerce/src/App.css create mode 100644 week3/ecommerce/src/App.jsx create mode 100644 week3/ecommerce/src/Components/CategoryButton.css create mode 100644 week3/ecommerce/src/Components/CategoryButton.jsx create mode 100644 week3/ecommerce/src/Composite/CategoryFilter.css create mode 100644 week3/ecommerce/src/Composite/CategoryFilter.jsx create mode 100644 week3/ecommerce/src/Composite/Navbar.css create mode 100644 week3/ecommerce/src/Composite/Navbar.jsx create mode 100644 week3/ecommerce/src/Composite/ProductCard.css create mode 100644 week3/ecommerce/src/Composite/ProductCard.jsx create mode 100644 week3/ecommerce/src/Composite/ProductList.css create mode 100644 week3/ecommerce/src/Composite/ProductList.jsx create mode 100644 week3/ecommerce/src/Pages/FavouritesPage.css create mode 100644 week3/ecommerce/src/Pages/FavouritesPage.jsx create mode 100644 week3/ecommerce/src/Pages/FeedPage.css create mode 100644 week3/ecommerce/src/Pages/FeedPage.jsx create mode 100644 week3/ecommerce/src/Pages/ProductDetail.css create mode 100644 week3/ecommerce/src/Pages/ProductDetail.jsx create mode 100644 week3/ecommerce/src/assets/react.svg create mode 100644 week3/ecommerce/src/context/FavoritesContext.jsx create mode 100644 week3/ecommerce/src/hooks/useFetch.js create mode 100644 week3/ecommerce/src/index.css create mode 100644 week3/ecommerce/src/main.jsx create mode 100644 week3/ecommerce/src/utils/api.js create mode 100644 week3/ecommerce/vite.config.js diff --git a/week3/ecommerce/.gitignore b/week3/ecommerce/.gitignore new file mode 100644 index 0000000000..234f2f1beb --- /dev/null +++ b/week3/ecommerce/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/week3/ecommerce/README.md b/week3/ecommerce/README.md new file mode 100644 index 0000000000..7059a962ad --- /dev/null +++ b/week3/ecommerce/README.md @@ -0,0 +1,12 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/week3/ecommerce/dist/assets/index-BlIIyDh1.js b/week3/ecommerce/dist/assets/index-BlIIyDh1.js new file mode 100644 index 0000000000..6b6954c4e2 --- /dev/null +++ b/week3/ecommerce/dist/assets/index-BlIIyDh1.js @@ -0,0 +1,51 @@ +(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))r(d);new MutationObserver(d=>{for(const v of d)if(v.type==="childList")for(const R of v.addedNodes)R.tagName==="LINK"&&R.rel==="modulepreload"&&r(R)}).observe(document,{childList:!0,subtree:!0});function s(d){const v={};return d.integrity&&(v.integrity=d.integrity),d.referrerPolicy&&(v.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?v.credentials="include":d.crossOrigin==="anonymous"?v.credentials="omit":v.credentials="same-origin",v}function r(d){if(d.ep)return;d.ep=!0;const v=s(d);fetch(d.href,v)}})();function Nm(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var pf={exports:{}},zu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _d;function Cm(){if(_d)return zu;_d=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function s(r,d,v){var R=null;if(v!==void 0&&(R=""+v),d.key!==void 0&&(R=""+d.key),"key"in d){v={};for(var M in d)M!=="key"&&(v[M]=d[M])}else v=d;return d=v.ref,{$$typeof:i,type:r,key:R,ref:d!==void 0?d:null,props:v}}return zu.Fragment=o,zu.jsx=s,zu.jsxs=s,zu}var xd;function Hm(){return xd||(xd=1,pf.exports=Cm()),pf.exports}var G=Hm(),bf={exports:{}},et={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ud;function Bm(){if(Ud)return et;Ud=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),R=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),B=Symbol.iterator;function _(y){return y===null||typeof y!="object"?null:(y=B&&y[B]||y["@@iterator"],typeof y=="function"?y:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,Q={};function V(y,H,X){this.props=y,this.context=H,this.refs=Q,this.updater=X||j}V.prototype.isReactComponent={},V.prototype.setState=function(y,H){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,H,"setState")},V.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function q(){}q.prototype=V.prototype;function w(y,H,X){this.props=y,this.context=H,this.refs=Q,this.updater=X||j}var P=w.prototype=new q;P.constructor=w,C(P,V.prototype),P.isPureReactComponent=!0;var ct=Array.isArray,I={H:null,A:null,T:null,S:null,V:null},xt=Object.prototype.hasOwnProperty;function Rt(y,H,X,Y,J,ft){return X=ft.ref,{$$typeof:i,type:y,key:H,ref:X!==void 0?X:null,props:ft}}function Mt(y,H){return Rt(y.type,H,void 0,void 0,void 0,y.props)}function pt(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function Jt(y){var H={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(X){return H[X]})}var oe=/\/+/g;function Qt(y,H){return typeof y=="object"&&y!==null&&y.key!=null?Jt(""+y.key):H.toString(36)}function bl(){}function El(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(bl,bl):(y.status="pending",y.then(function(H){y.status==="pending"&&(y.status="fulfilled",y.value=H)},function(H){y.status==="pending"&&(y.status="rejected",y.reason=H)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function Zt(y,H,X,Y,J){var ft=typeof y;(ft==="undefined"||ft==="boolean")&&(y=null);var tt=!1;if(y===null)tt=!0;else switch(ft){case"bigint":case"string":case"number":tt=!0;break;case"object":switch(y.$$typeof){case i:case o:tt=!0;break;case z:return tt=y._init,Zt(tt(y._payload),H,X,Y,J)}}if(tt)return J=J(y),tt=Y===""?"."+Qt(y,0):Y,ct(J)?(X="",tt!=null&&(X=tt.replace(oe,"$&/")+"/"),Zt(J,H,X,"",function(ke){return ke})):J!=null&&(pt(J)&&(J=Mt(J,X+(J.key==null||y&&y.key===J.key?"":(""+J.key).replace(oe,"$&/")+"/")+tt)),H.push(J)),1;tt=0;var te=Y===""?".":Y+":";if(ct(y))for(var bt=0;bt>>1,y=x[yt];if(0>>1;ytd(Y,W))Jd(ft,Y)?(x[yt]=ft,x[J]=W,yt=J):(x[yt]=Y,x[X]=W,yt=X);else if(Jd(ft,W))x[yt]=ft,x[J]=W,yt=J;else break t}}return L}function d(x,L){var W=x.sortIndex-L.sortIndex;return W!==0?W:x.id-L.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var v=performance;i.unstable_now=function(){return v.now()}}else{var R=Date,M=R.now();i.unstable_now=function(){return R.now()-M}}var p=[],m=[],z=1,B=null,_=3,j=!1,C=!1,Q=!1,V=!1,q=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,P=typeof setImmediate<"u"?setImmediate:null;function ct(x){for(var L=s(m);L!==null;){if(L.callback===null)r(m);else if(L.startTime<=x)r(m),L.sortIndex=L.expirationTime,o(p,L);else break;L=s(m)}}function I(x){if(Q=!1,ct(x),!C)if(s(p)!==null)C=!0,xt||(xt=!0,Qt());else{var L=s(m);L!==null&&Zt(I,L.startTime-x)}}var xt=!1,Rt=-1,Mt=5,pt=-1;function Jt(){return V?!0:!(i.unstable_now()-ptx&&Jt());){var yt=B.callback;if(typeof yt=="function"){B.callback=null,_=B.priorityLevel;var y=yt(B.expirationTime<=x);if(x=i.unstable_now(),typeof y=="function"){B.callback=y,ct(x),L=!0;break e}B===s(p)&&r(p),ct(x)}else r(p);B=s(p)}if(B!==null)L=!0;else{var H=s(m);H!==null&&Zt(I,H.startTime-x),L=!1}}break t}finally{B=null,_=W,j=!1}L=void 0}}finally{L?Qt():xt=!1}}}var Qt;if(typeof P=="function")Qt=function(){P(oe)};else if(typeof MessageChannel<"u"){var bl=new MessageChannel,El=bl.port2;bl.port1.onmessage=oe,Qt=function(){El.postMessage(null)}}else Qt=function(){q(oe,0)};function Zt(x,L){Rt=q(function(){x(i.unstable_now())},L)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(x){x.callback=null},i.unstable_forceFrameRate=function(x){0>x||125yt?(x.sortIndex=W,o(m,x),s(p)===null&&x===s(m)&&(Q?(w(Rt),Rt=-1):Q=!0,Zt(I,W-yt))):(x.sortIndex=y,o(p,x),C||j||(C=!0,xt||(xt=!0,Qt()))),x},i.unstable_shouldYield=Jt,i.unstable_wrapCallback=function(x){var L=_;return function(){var W=_;_=L;try{return x.apply(this,arguments)}finally{_=W}}}}(Af)),Af}var Hd;function Ym(){return Hd||(Hd=1,Tf.exports=jm()),Tf.exports}var Rf={exports:{}},Kt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Bd;function Lm(){if(Bd)return Kt;Bd=1;var i=_f();function o(p){var m="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(o){console.error(o)}}return i(),Rf.exports=Lm(),Rf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var jd;function Xm(){if(jd)return Ou;jd=1;var i=Ym(),o=_f(),s=Gm();function r(t){var e="https://react.dev/errors/"+t;if(1y||(t.current=yt[y],yt[y]=null,y--)}function Y(t,e){y++,yt[y]=t.current,t.current=e}var J=H(null),ft=H(null),tt=H(null),te=H(null);function bt(t,e){switch(Y(tt,e),Y(ft,t),Y(J,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?ad(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=ad(e),t=ud(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}X(J),Y(J,t)}function ke(){X(J),X(ft),X(tt)}function ai(t){t.memoizedState!==null&&Y(te,t);var e=J.current,l=ud(e,t.type);e!==l&&(Y(ft,t),Y(J,l))}function Hu(t){ft.current===t&&(X(J),X(ft)),te.current===t&&(X(te),bu._currentValue=W)}var ui=Object.prototype.hasOwnProperty,ni=i.unstable_scheduleCallback,ii=i.unstable_cancelCallback,oh=i.unstable_shouldYield,sh=i.unstable_requestPaint,Ae=i.unstable_now,dh=i.unstable_getCurrentPriorityLevel,qf=i.unstable_ImmediatePriority,jf=i.unstable_UserBlockingPriority,Bu=i.unstable_NormalPriority,hh=i.unstable_LowPriority,Yf=i.unstable_IdlePriority,mh=i.log,vh=i.unstable_setDisableYieldValue,Da=null,ee=null;function We(t){if(typeof mh=="function"&&vh(t),ee&&typeof ee.setStrictMode=="function")try{ee.setStrictMode(Da,t)}catch{}}var le=Math.clz32?Math.clz32:Sh,yh=Math.log,gh=Math.LN2;function Sh(t){return t>>>=0,t===0?32:31-(yh(t)/gh|0)|0}var qu=256,ju=4194304;function Tl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Yu(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~n,a!==0?u=Tl(a):(c&=f,c!==0?u=Tl(c):l||(l=f&~t,l!==0&&(u=Tl(l))))):(f=a&~n,f!==0?u=Tl(f):c!==0?u=Tl(c):l||(l=a&~t,l!==0&&(u=Tl(l)))),u===0?0:e!==0&&e!==u&&(e&n)===0&&(n=u&-u,l=e&-e,n>=l||n===32&&(l&4194048)!==0)?e:u}function _a(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function ph(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lf(){var t=qu;return qu<<=1,(qu&4194048)===0&&(qu=256),t}function Gf(){var t=ju;return ju<<=1,(ju&62914560)===0&&(ju=4194304),t}function ci(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function xa(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function bh(t,e,l,a,u,n){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,h=t.expirationTimes,E=t.hiddenUpdates;for(l=c&~l;0)":-1u||h[a]!==E[u]){var D=` +`+h[a].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=a&&0<=u);break}}}finally{hi=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?Kl(l):""}function Oh(t){switch(t.tag){case 26:case 27:case 5:return Kl(t.type);case 16:return Kl("Lazy");case 13:return Kl("Suspense");case 19:return Kl("SuspenseList");case 0:case 15:return mi(t.type,!1);case 11:return mi(t.type.render,!1);case 1:return mi(t.type,!0);case 31:return Kl("Activity");default:return""}}function Wf(t){try{var e="";do e+=Oh(t),t=t.return;while(t);return e}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}function se(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Ff(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Mh(t){var e=Ff(t)?"checked":"value",l=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),a=""+t[e];if(!t.hasOwnProperty(e)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var u=l.get,n=l.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return u.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(t,e,{enumerable:l.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Xu(t){t._valueTracker||(t._valueTracker=Mh(t))}function Pf(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var l=e.getValue(),a="";return t&&(a=Ff(t)?t.checked?"true":"false":t.value),t=a,t!==l?(e.setValue(t),!0):!1}function Qu(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Dh=/[\n"\\]/g;function de(t){return t.replace(Dh,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function vi(t,e,l,a,u,n,c,f){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),e!=null?c==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+se(e)):t.value!==""+se(e)&&(t.value=""+se(e)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),e!=null?yi(t,c,se(e)):l!=null?yi(t,c,se(l)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+se(f):t.removeAttribute("name")}function If(t,e,l,a,u,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),e!=null||l!=null){if(!(n!=="submit"&&n!=="reset"||e!=null))return;l=l!=null?""+se(l):"",e=e!=null?""+se(e):l,f||e===t.value||(t.value=e),t.defaultValue=e}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=f?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c)}function yi(t,e,l){e==="number"&&Qu(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function Jl(t,e,l,a){if(t=t.options,e){e={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ei=!1;if(Ce)try{var Ha={};Object.defineProperty(Ha,"passive",{get:function(){Ei=!0}}),window.addEventListener("test",Ha,Ha),window.removeEventListener("test",Ha,Ha)}catch{Ei=!1}var Pe=null,Ti=null,wu=null;function ir(){if(wu)return wu;var t,e=Ti,l=e.length,a,u="value"in Pe?Pe.value:Pe.textContent,n=u.length;for(t=0;t=ja),dr=" ",hr=!1;function mr(t,e){switch(t){case"keyup":return l0.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function vr(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Fl=!1;function u0(t,e){switch(t){case"compositionend":return vr(e);case"keypress":return e.which!==32?null:(hr=!0,dr);case"textInput":return t=e.data,t===dr&&hr?null:t;default:return null}}function n0(t,e){if(Fl)return t==="compositionend"||!Mi&&mr(t,e)?(t=ir(),wu=Ti=Pe=null,Fl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=Ar(l)}}function zr(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?zr(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Or(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=Qu(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=Qu(t.document)}return e}function xi(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var h0=Ce&&"documentMode"in document&&11>=document.documentMode,Pl=null,Ui=null,Xa=null,Ni=!1;function Mr(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Ni||Pl==null||Pl!==Qu(a)||(a=Pl,"selectionStart"in a&&xi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Xa&&Ga(Xa,a)||(Xa=a,a=Bn(Ui,"onSelect"),0>=c,u-=c,Be=1<<32-le(e)+u|l<n?n:8;var c=x.T,f={};x.T=f,gc(t,!1,e,l);try{var h=u(),E=x.S;if(E!==null&&E(f,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var D=T0(h,a);lu(t,e,D,fe(t))}else lu(t,e,a,fe(t))}catch(N){lu(t,e,{then:function(){},status:"rejected",reason:N},fe())}finally{L.p=n,x.T=c}}function M0(){}function vc(t,e,l,a){if(t.tag!==5)throw Error(r(476));var u=_o(t).queue;Do(t,u,e,W,l===null?M0:function(){return xo(t),l(a)})}function _o(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Le,lastRenderedState:W},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Le,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function xo(t){var e=_o(t).next.queue;lu(t,e,{},fe())}function yc(){return Vt(bu)}function Uo(){return Nt().memoizedState}function No(){return Nt().memoizedState}function D0(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=fe();t=el(l);var a=ll(e,t,l);a!==null&&(re(a,e,l),Wa(a,e,l)),e={cache:Ki()},t.payload=e;return}e=e.return}}function _0(t,e,l){var a=fe();l={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null},vn(t)?Ho(e,l):(l=qi(t,e,l,a),l!==null&&(re(l,t,a),Bo(l,e,a)))}function Co(t,e,l){var a=fe();lu(t,e,l,a)}function lu(t,e,l,a){var u={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null};if(vn(t))Ho(e,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=e.lastRenderedReducer,n!==null))try{var c=e.lastRenderedState,f=n(c,l);if(u.hasEagerState=!0,u.eagerState=f,ae(f,c))return Fu(t,e,u,0),St===null&&Wu(),!1}catch{}finally{}if(l=qi(t,e,u,a),l!==null)return re(l,t,a),Bo(l,e,a),!0}return!1}function gc(t,e,l,a){if(a={lane:2,revertLane:kc(),action:a,hasEagerState:!1,eagerState:null,next:null},vn(t)){if(e)throw Error(r(479))}else e=qi(t,l,a,2),e!==null&&re(e,t,2)}function vn(t){var e=t.alternate;return t===lt||e!==null&&e===lt}function Ho(t,e){fa=rn=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function Bo(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,Qf(t,l)}}var yn={readContext:Vt,use:sn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt},qo={readContext:Vt,use:sn,useCallback:function(t,e){return Ft().memoizedState=[t,e===void 0?null:e],t},useContext:Vt,useEffect:po,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,mn(4194308,4,Ao.bind(null,e,t),l)},useLayoutEffect:function(t,e){return mn(4194308,4,t,e)},useInsertionEffect:function(t,e){mn(4,2,t,e)},useMemo:function(t,e){var l=Ft();e=e===void 0?null:e;var a=t();if(Bl){We(!0);try{t()}finally{We(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=Ft();if(l!==void 0){var u=l(e);if(Bl){We(!0);try{l(e)}finally{We(!1)}}}else u=e;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=_0.bind(null,lt,t),[a.memoizedState,t]},useRef:function(t){var e=Ft();return t={current:t},e.memoizedState=t},useState:function(t){t=sc(t);var e=t.queue,l=Co.bind(null,lt,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:hc,useDeferredValue:function(t,e){var l=Ft();return mc(l,t,e)},useTransition:function(){var t=sc(!1);return t=Do.bind(null,lt,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=lt,u=Ft();if(ot){if(l===void 0)throw Error(r(407));l=l()}else{if(l=e(),St===null)throw Error(r(349));(it&124)!==0||lo(a,e,l)}u.memoizedState=l;var n={value:l,getSnapshot:e};return u.queue=n,po(uo.bind(null,a,n,t),[t]),a.flags|=2048,oa(9,hn(),ao.bind(null,a,n,l,e),null),l},useId:function(){var t=Ft(),e=St.identifierPrefix;if(ot){var l=qe,a=Be;l=(a&~(1<<32-le(a)-1)).toString(32)+l,e="«"+e+"R"+l,l=on++,0k?(Yt=K,K=null):Yt=K.sibling;var rt=T(S,K,b[k],U);if(rt===null){K===null&&(K=Yt);break}t&&K&&rt.alternate===null&&e(S,K),g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt,K=Yt}if(k===b.length)return l(S,K),ot&&_l(S,k),Z;if(K===null){for(;kk?(Yt=K,K=null):Yt=K.sibling;var pl=T(S,K,rt.value,U);if(pl===null){K===null&&(K=Yt);break}t&&K&&pl.alternate===null&&e(S,K),g=n(pl,g,k),at===null?Z=pl:at.sibling=pl,at=pl,K=Yt}if(rt.done)return l(S,K),ot&&_l(S,k),Z;if(K===null){for(;!rt.done;k++,rt=b.next())rt=N(S,rt.value,U),rt!==null&&(g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt);return ot&&_l(S,k),Z}for(K=a(K);!rt.done;k++,rt=b.next())rt=A(K,S,k,rt.value,U),rt!==null&&(t&&rt.alternate!==null&&K.delete(rt.key===null?k:rt.key),g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt);return t&&K.forEach(function(Um){return e(S,Um)}),ot&&_l(S,k),Z}function vt(S,g,b,U){if(typeof b=="object"&&b!==null&&b.type===C&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case _:t:{for(var Z=b.key;g!==null;){if(g.key===Z){if(Z=b.type,Z===C){if(g.tag===7){l(S,g.sibling),U=u(g,b.props.children),U.return=S,S=U;break t}}else if(g.elementType===Z||typeof Z=="object"&&Z!==null&&Z.$$typeof===Mt&&Yo(Z)===g.type){l(S,g.sibling),U=u(g,b.props),uu(U,b),U.return=S,S=U;break t}l(S,g);break}else e(S,g);g=g.sibling}b.type===C?(U=Ml(b.props.children,S.mode,U,b.key),U.return=S,S=U):(U=Iu(b.type,b.key,b.props,null,S.mode,U),uu(U,b),U.return=S,S=U)}return c(S);case j:t:{for(Z=b.key;g!==null;){if(g.key===Z)if(g.tag===4&&g.stateNode.containerInfo===b.containerInfo&&g.stateNode.implementation===b.implementation){l(S,g.sibling),U=u(g,b.children||[]),U.return=S,S=U;break t}else{l(S,g);break}else e(S,g);g=g.sibling}U=Li(b,S.mode,U),U.return=S,S=U}return c(S);case Mt:return Z=b._init,b=Z(b._payload),vt(S,g,b,U)}if(Zt(b))return F(S,g,b,U);if(Qt(b)){if(Z=Qt(b),typeof Z!="function")throw Error(r(150));return b=Z.call(b),$(S,g,b,U)}if(typeof b.then=="function")return vt(S,g,gn(b),U);if(b.$$typeof===P)return vt(S,g,an(S,b),U);Sn(S,b)}return typeof b=="string"&&b!==""||typeof b=="number"||typeof b=="bigint"?(b=""+b,g!==null&&g.tag===6?(l(S,g.sibling),U=u(g,b),U.return=S,S=U):(l(S,g),U=Yi(b,S.mode,U),U.return=S,S=U),c(S)):l(S,g)}return function(S,g,b,U){try{au=0;var Z=vt(S,g,b,U);return sa=null,Z}catch(K){if(K===$a||K===nn)throw K;var at=ue(29,K,null,S.mode);return at.lanes=U,at.return=S,at}finally{}}}var da=Lo(!0),Go=Lo(!1),ge=H(null),ze=null;function ul(t){var e=t.alternate;Y(Ht,Ht.current&1),Y(ge,t),ze===null&&(e===null||ca.current!==null||e.memoizedState!==null)&&(ze=t)}function Xo(t){if(t.tag===22){if(Y(Ht,Ht.current),Y(ge,t),ze===null){var e=t.alternate;e!==null&&e.memoizedState!==null&&(ze=t)}}else nl()}function nl(){Y(Ht,Ht.current),Y(ge,ge.current)}function Ge(t){X(ge),ze===t&&(ze=null),X(Ht)}var Ht=H(0);function pn(t){for(var e=t;e!==null;){if(e.tag===13){var l=e.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||ff(l)))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}function Sc(t,e,l,a){e=t.memoizedState,l=l(a,e),l=l==null?e:z({},e,l),t.memoizedState=l,t.lanes===0&&(t.updateQueue.baseState=l)}var pc={enqueueSetState:function(t,e,l){t=t._reactInternals;var a=fe(),u=el(a);u.payload=e,l!=null&&(u.callback=l),e=ll(t,u,a),e!==null&&(re(e,t,a),Wa(e,t,a))},enqueueReplaceState:function(t,e,l){t=t._reactInternals;var a=fe(),u=el(a);u.tag=1,u.payload=e,l!=null&&(u.callback=l),e=ll(t,u,a),e!==null&&(re(e,t,a),Wa(e,t,a))},enqueueForceUpdate:function(t,e){t=t._reactInternals;var l=fe(),a=el(l);a.tag=2,e!=null&&(a.callback=e),e=ll(t,a,l),e!==null&&(re(e,t,l),Wa(e,t,l))}};function Qo(t,e,l,a,u,n,c){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(a,n,c):e.prototype&&e.prototype.isPureReactComponent?!Ga(l,a)||!Ga(u,n):!0}function Zo(t,e,l,a){t=e.state,typeof e.componentWillReceiveProps=="function"&&e.componentWillReceiveProps(l,a),typeof e.UNSAFE_componentWillReceiveProps=="function"&&e.UNSAFE_componentWillReceiveProps(l,a),e.state!==t&&pc.enqueueReplaceState(e,e.state,null)}function ql(t,e){var l=e;if("ref"in e){l={};for(var a in e)a!=="ref"&&(l[a]=e[a])}if(t=t.defaultProps){l===e&&(l=z({},l));for(var u in t)l[u]===void 0&&(l[u]=t[u])}return l}var bn=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var e=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(e))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function wo(t){bn(t)}function Vo(t){console.error(t)}function Ko(t){bn(t)}function En(t,e){try{var l=t.onUncaughtError;l(e.value,{componentStack:e.stack})}catch(a){setTimeout(function(){throw a})}}function Jo(t,e,l){try{var a=t.onCaughtError;a(l.value,{componentStack:l.stack,errorBoundary:e.tag===1?e.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function bc(t,e,l){return l=el(l),l.tag=3,l.payload={element:null},l.callback=function(){En(t,e)},l}function $o(t){return t=el(t),t.tag=3,t}function ko(t,e,l,a){var u=l.type.getDerivedStateFromError;if(typeof u=="function"){var n=a.value;t.payload=function(){return u(n)},t.callback=function(){Jo(e,l,a)}}var c=l.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(t.callback=function(){Jo(e,l,a),typeof u!="function"&&(sl===null?sl=new Set([this]):sl.add(this));var f=a.stack;this.componentDidCatch(a.value,{componentStack:f!==null?f:""})})}function U0(t,e,l,a,u){if(l.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(e=l.alternate,e!==null&&Va(e,l,u,!0),l=ge.current,l!==null){switch(l.tag){case 13:return ze===null?wc():l.alternate===null&&Ot===0&&(Ot=3),l.flags&=-257,l.flags|=65536,l.lanes=u,a===ki?l.flags|=16384:(e=l.updateQueue,e===null?l.updateQueue=new Set([a]):e.add(a),Kc(t,a,u)),!1;case 22:return l.flags|=65536,a===ki?l.flags|=16384:(e=l.updateQueue,e===null?(e={transitions:null,markerInstances:null,retryQueue:new Set([a])},l.updateQueue=e):(l=e.retryQueue,l===null?e.retryQueue=new Set([a]):l.add(a)),Kc(t,a,u)),!1}throw Error(r(435,l.tag))}return Kc(t,a,u),wc(),!1}if(ot)return e=ge.current,e!==null?((e.flags&65536)===0&&(e.flags|=256),e.flags|=65536,e.lanes=u,a!==Qi&&(t=Error(r(422),{cause:a}),wa(he(t,l)))):(a!==Qi&&(e=Error(r(423),{cause:a}),wa(he(e,l))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,a=he(a,l),u=bc(t.stateNode,a,u),Pi(t,u),Ot!==4&&(Ot=2)),!1;var n=Error(r(520),{cause:a});if(n=he(n,l),su===null?su=[n]:su.push(n),Ot!==4&&(Ot=2),e===null)return!0;a=he(a,l),l=e;do{switch(l.tag){case 3:return l.flags|=65536,t=u&-u,l.lanes|=t,t=bc(l.stateNode,a,t),Pi(l,t),!1;case 1:if(e=l.type,n=l.stateNode,(l.flags&128)===0&&(typeof e.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(sl===null||!sl.has(n))))return l.flags|=65536,u&=-u,l.lanes|=u,u=$o(u),ko(u,t,l,a),Pi(l,u),!1}l=l.return}while(l!==null);return!1}var Wo=Error(r(461)),qt=!1;function Lt(t,e,l,a){e.child=t===null?Go(e,null,l,a):da(e,t.child,l,a)}function Fo(t,e,l,a,u){l=l.render;var n=e.ref;if("ref"in a){var c={};for(var f in a)f!=="ref"&&(c[f]=a[f])}else c=a;return Cl(e),a=ac(t,e,l,c,n,u),f=uc(),t!==null&&!qt?(nc(t,e,u),Xe(t,e,u)):(ot&&f&&Gi(e),e.flags|=1,Lt(t,e,a,u),e.child)}function Po(t,e,l,a,u){if(t===null){var n=l.type;return typeof n=="function"&&!ji(n)&&n.defaultProps===void 0&&l.compare===null?(e.tag=15,e.type=n,Io(t,e,n,a,u)):(t=Iu(l.type,null,a,e,e.mode,u),t.ref=e.ref,t.return=e,e.child=t)}if(n=t.child,!Dc(t,u)){var c=n.memoizedProps;if(l=l.compare,l=l!==null?l:Ga,l(c,a)&&t.ref===e.ref)return Xe(t,e,u)}return e.flags|=1,t=He(n,a),t.ref=e.ref,t.return=e,e.child=t}function Io(t,e,l,a,u){if(t!==null){var n=t.memoizedProps;if(Ga(n,a)&&t.ref===e.ref)if(qt=!1,e.pendingProps=a=n,Dc(t,u))(t.flags&131072)!==0&&(qt=!0);else return e.lanes=t.lanes,Xe(t,e,u)}return Ec(t,e,l,a,u)}function ts(t,e,l){var a=e.pendingProps,u=a.children,n=t!==null?t.memoizedState:null;if(a.mode==="hidden"){if((e.flags&128)!==0){if(a=n!==null?n.baseLanes|l:l,t!==null){for(u=e.child=t.child,n=0;u!==null;)n=n|u.lanes|u.childLanes,u=u.sibling;e.childLanes=n&~a}else e.childLanes=0,e.child=null;return es(t,e,a,l)}if((l&536870912)!==0)e.memoizedState={baseLanes:0,cachePool:null},t!==null&&un(e,n!==null?n.cachePool:null),n!==null?Pr(e,n):tc(),Xo(e);else return e.lanes=e.childLanes=536870912,es(t,e,n!==null?n.baseLanes|l:l,l)}else n!==null?(un(e,n.cachePool),Pr(e,n),nl(),e.memoizedState=null):(t!==null&&un(e,null),tc(),nl());return Lt(t,e,u,l),e.child}function es(t,e,l,a){var u=$i();return u=u===null?null:{parent:Ct._currentValue,pool:u},e.memoizedState={baseLanes:l,cachePool:u},t!==null&&un(e,null),tc(),Xo(e),t!==null&&Va(t,e,a,!0),null}function Tn(t,e){var l=e.ref;if(l===null)t!==null&&t.ref!==null&&(e.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(r(284));(t===null||t.ref!==l)&&(e.flags|=4194816)}}function Ec(t,e,l,a,u){return Cl(e),l=ac(t,e,l,a,void 0,u),a=uc(),t!==null&&!qt?(nc(t,e,u),Xe(t,e,u)):(ot&&a&&Gi(e),e.flags|=1,Lt(t,e,l,u),e.child)}function ls(t,e,l,a,u,n){return Cl(e),e.updateQueue=null,l=to(e,a,l,u),Ir(t),a=uc(),t!==null&&!qt?(nc(t,e,n),Xe(t,e,n)):(ot&&a&&Gi(e),e.flags|=1,Lt(t,e,l,n),e.child)}function as(t,e,l,a,u){if(Cl(e),e.stateNode===null){var n=la,c=l.contextType;typeof c=="object"&&c!==null&&(n=Vt(c)),n=new l(a,n),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=pc,e.stateNode=n,n._reactInternals=e,n=e.stateNode,n.props=a,n.state=e.memoizedState,n.refs={},Wi(e),c=l.contextType,n.context=typeof c=="object"&&c!==null?Vt(c):la,n.state=e.memoizedState,c=l.getDerivedStateFromProps,typeof c=="function"&&(Sc(e,l,c,a),n.state=e.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&pc.enqueueReplaceState(n,n.state,null),Pa(e,a,n,u),Fa(),n.state=e.memoizedState),typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!0}else if(t===null){n=e.stateNode;var f=e.memoizedProps,h=ql(l,f);n.props=h;var E=n.context,D=l.contextType;c=la,typeof D=="object"&&D!==null&&(c=Vt(D));var N=l.getDerivedStateFromProps;D=typeof N=="function"||typeof n.getSnapshotBeforeUpdate=="function",f=e.pendingProps!==f,D||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f||E!==c)&&Zo(e,n,a,c),tl=!1;var T=e.memoizedState;n.state=T,Pa(e,a,n,u),Fa(),E=e.memoizedState,f||T!==E||tl?(typeof N=="function"&&(Sc(e,l,N,a),E=e.memoizedState),(h=tl||Qo(e,l,h,a,T,E,c))?(D||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(e.flags|=4194308)):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=a,e.memoizedState=E),n.props=a,n.state=E,n.context=c,a=h):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!1)}else{n=e.stateNode,Fi(t,e),c=e.memoizedProps,D=ql(l,c),n.props=D,N=e.pendingProps,T=n.context,E=l.contextType,h=la,typeof E=="object"&&E!==null&&(h=Vt(E)),f=l.getDerivedStateFromProps,(E=typeof f=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==N||T!==h)&&Zo(e,n,a,h),tl=!1,T=e.memoizedState,n.state=T,Pa(e,a,n,u),Fa();var A=e.memoizedState;c!==N||T!==A||tl||t!==null&&t.dependencies!==null&&ln(t.dependencies)?(typeof f=="function"&&(Sc(e,l,f,a),A=e.memoizedState),(D=tl||Qo(e,l,D,a,T,A,h)||t!==null&&t.dependencies!==null&&ln(t.dependencies))?(E||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,A,h),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,A,h)),typeof n.componentDidUpdate=="function"&&(e.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=1024),e.memoizedProps=a,e.memoizedState=A),n.props=a,n.state=A,n.context=h,a=D):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=1024),a=!1)}return n=a,Tn(t,e),a=(e.flags&128)!==0,n||a?(n=e.stateNode,l=a&&typeof l.getDerivedStateFromError!="function"?null:n.render(),e.flags|=1,t!==null&&a?(e.child=da(e,t.child,null,u),e.child=da(e,null,l,u)):Lt(t,e,l,u),e.memoizedState=n.state,t=e.child):t=Xe(t,e,u),t}function us(t,e,l,a){return Za(),e.flags|=256,Lt(t,e,l,a),e.child}var Tc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Ac(t){return{baseLanes:t,cachePool:wr()}}function Rc(t,e,l){return t=t!==null?t.childLanes&~l:0,e&&(t|=Se),t}function ns(t,e,l){var a=e.pendingProps,u=!1,n=(e.flags&128)!==0,c;if((c=n)||(c=t!==null&&t.memoizedState===null?!1:(Ht.current&2)!==0),c&&(u=!0,e.flags&=-129),c=(e.flags&32)!==0,e.flags&=-33,t===null){if(ot){if(u?ul(e):nl(),ot){var f=zt,h;if(h=f){t:{for(h=f,f=Re;h.nodeType!==8;){if(!f){f=null;break t}if(h=Te(h.nextSibling),h===null){f=null;break t}}f=h}f!==null?(e.memoizedState={dehydrated:f,treeContext:Dl!==null?{id:Be,overflow:qe}:null,retryLane:536870912,hydrationErrors:null},h=ue(18,null,null,0),h.stateNode=f,h.return=e,e.child=h,$t=e,zt=null,h=!0):h=!1}h||Ul(e)}if(f=e.memoizedState,f!==null&&(f=f.dehydrated,f!==null))return ff(f)?e.lanes=32:e.lanes=536870912,null;Ge(e)}return f=a.children,a=a.fallback,u?(nl(),u=e.mode,f=An({mode:"hidden",children:f},u),a=Ml(a,u,l,null),f.return=e,a.return=e,f.sibling=a,e.child=f,u=e.child,u.memoizedState=Ac(l),u.childLanes=Rc(t,c,l),e.memoizedState=Tc,a):(ul(e),zc(e,f))}if(h=t.memoizedState,h!==null&&(f=h.dehydrated,f!==null)){if(n)e.flags&256?(ul(e),e.flags&=-257,e=Oc(t,e,l)):e.memoizedState!==null?(nl(),e.child=t.child,e.flags|=128,e=null):(nl(),u=a.fallback,f=e.mode,a=An({mode:"visible",children:a.children},f),u=Ml(u,f,l,null),u.flags|=2,a.return=e,u.return=e,a.sibling=u,e.child=a,da(e,t.child,null,l),a=e.child,a.memoizedState=Ac(l),a.childLanes=Rc(t,c,l),e.memoizedState=Tc,e=u);else if(ul(e),ff(f)){if(c=f.nextSibling&&f.nextSibling.dataset,c)var E=c.dgst;c=E,a=Error(r(419)),a.stack="",a.digest=c,wa({value:a,source:null,stack:null}),e=Oc(t,e,l)}else if(qt||Va(t,e,l,!1),c=(l&t.childLanes)!==0,qt||c){if(c=St,c!==null&&(a=l&-l,a=(a&42)!==0?1:fi(a),a=(a&(c.suspendedLanes|l))!==0?0:a,a!==0&&a!==h.retryLane))throw h.retryLane=a,ea(t,a),re(c,t,a),Wo;f.data==="$?"||wc(),e=Oc(t,e,l)}else f.data==="$?"?(e.flags|=192,e.child=t.child,e=null):(t=h.treeContext,zt=Te(f.nextSibling),$t=e,ot=!0,xl=null,Re=!1,t!==null&&(ve[ye++]=Be,ve[ye++]=qe,ve[ye++]=Dl,Be=t.id,qe=t.overflow,Dl=e),e=zc(e,a.children),e.flags|=4096);return e}return u?(nl(),u=a.fallback,f=e.mode,h=t.child,E=h.sibling,a=He(h,{mode:"hidden",children:a.children}),a.subtreeFlags=h.subtreeFlags&65011712,E!==null?u=He(E,u):(u=Ml(u,f,l,null),u.flags|=2),u.return=e,a.return=e,a.sibling=u,e.child=a,a=u,u=e.child,f=t.child.memoizedState,f===null?f=Ac(l):(h=f.cachePool,h!==null?(E=Ct._currentValue,h=h.parent!==E?{parent:E,pool:E}:h):h=wr(),f={baseLanes:f.baseLanes|l,cachePool:h}),u.memoizedState=f,u.childLanes=Rc(t,c,l),e.memoizedState=Tc,a):(ul(e),l=t.child,t=l.sibling,l=He(l,{mode:"visible",children:a.children}),l.return=e,l.sibling=null,t!==null&&(c=e.deletions,c===null?(e.deletions=[t],e.flags|=16):c.push(t)),e.child=l,e.memoizedState=null,l)}function zc(t,e){return e=An({mode:"visible",children:e},t.mode),e.return=t,t.child=e}function An(t,e){return t=ue(22,t,null,e),t.lanes=0,t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},t}function Oc(t,e,l){return da(e,t.child,null,l),t=zc(e,e.pendingProps.children),t.flags|=2,e.memoizedState=null,t}function is(t,e,l){t.lanes|=e;var a=t.alternate;a!==null&&(a.lanes|=e),wi(t.return,e,l)}function Mc(t,e,l,a,u){var n=t.memoizedState;n===null?t.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:a,tail:l,tailMode:u}:(n.isBackwards=e,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=l,n.tailMode=u)}function cs(t,e,l){var a=e.pendingProps,u=a.revealOrder,n=a.tail;if(Lt(t,e,a.children,l),a=Ht.current,(a&2)!==0)a=a&1|2,e.flags|=128;else{if(t!==null&&(t.flags&128)!==0)t:for(t=e.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&is(t,l,e);else if(t.tag===19)is(t,l,e);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break t;for(;t.sibling===null;){if(t.return===null||t.return===e)break t;t=t.return}t.sibling.return=t.return,t=t.sibling}a&=1}switch(Y(Ht,a),u){case"forwards":for(l=e.child,u=null;l!==null;)t=l.alternate,t!==null&&pn(t)===null&&(u=l),l=l.sibling;l=u,l===null?(u=e.child,e.child=null):(u=l.sibling,l.sibling=null),Mc(e,!1,u,l,n);break;case"backwards":for(l=null,u=e.child,e.child=null;u!==null;){if(t=u.alternate,t!==null&&pn(t)===null){e.child=u;break}t=u.sibling,u.sibling=l,l=u,u=t}Mc(e,!0,l,null,n);break;case"together":Mc(e,!1,null,null,void 0);break;default:e.memoizedState=null}return e.child}function Xe(t,e,l){if(t!==null&&(e.dependencies=t.dependencies),ol|=e.lanes,(l&e.childLanes)===0)if(t!==null){if(Va(t,e,l,!1),(l&e.childLanes)===0)return null}else return null;if(t!==null&&e.child!==t.child)throw Error(r(153));if(e.child!==null){for(t=e.child,l=He(t,t.pendingProps),e.child=l,l.return=e;t.sibling!==null;)t=t.sibling,l=l.sibling=He(t,t.pendingProps),l.return=e;l.sibling=null}return e.child}function Dc(t,e){return(t.lanes&e)!==0?!0:(t=t.dependencies,!!(t!==null&&ln(t)))}function N0(t,e,l){switch(e.tag){case 3:bt(e,e.stateNode.containerInfo),Ie(e,Ct,t.memoizedState.cache),Za();break;case 27:case 5:ai(e);break;case 4:bt(e,e.stateNode.containerInfo);break;case 10:Ie(e,e.type,e.memoizedProps.value);break;case 13:var a=e.memoizedState;if(a!==null)return a.dehydrated!==null?(ul(e),e.flags|=128,null):(l&e.child.childLanes)!==0?ns(t,e,l):(ul(e),t=Xe(t,e,l),t!==null?t.sibling:null);ul(e);break;case 19:var u=(t.flags&128)!==0;if(a=(l&e.childLanes)!==0,a||(Va(t,e,l,!1),a=(l&e.childLanes)!==0),u){if(a)return cs(t,e,l);e.flags|=128}if(u=e.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),Y(Ht,Ht.current),a)break;return null;case 22:case 23:return e.lanes=0,ts(t,e,l);case 24:Ie(e,Ct,t.memoizedState.cache)}return Xe(t,e,l)}function fs(t,e,l){if(t!==null)if(t.memoizedProps!==e.pendingProps)qt=!0;else{if(!Dc(t,l)&&(e.flags&128)===0)return qt=!1,N0(t,e,l);qt=(t.flags&131072)!==0}else qt=!1,ot&&(e.flags&1048576)!==0&&jr(e,en,e.index);switch(e.lanes=0,e.tag){case 16:t:{t=e.pendingProps;var a=e.elementType,u=a._init;if(a=u(a._payload),e.type=a,typeof a=="function")ji(a)?(t=ql(a,t),e.tag=1,e=as(null,e,a,t,l)):(e.tag=0,e=Ec(null,e,a,t,l));else{if(a!=null){if(u=a.$$typeof,u===ct){e.tag=11,e=Fo(null,e,a,t,l);break t}else if(u===Rt){e.tag=14,e=Po(null,e,a,t,l);break t}}throw e=El(a)||a,Error(r(306,e,""))}}return e;case 0:return Ec(t,e,e.type,e.pendingProps,l);case 1:return a=e.type,u=ql(a,e.pendingProps),as(t,e,a,u,l);case 3:t:{if(bt(e,e.stateNode.containerInfo),t===null)throw Error(r(387));a=e.pendingProps;var n=e.memoizedState;u=n.element,Fi(t,e),Pa(e,a,null,l);var c=e.memoizedState;if(a=c.cache,Ie(e,Ct,a),a!==n.cache&&Vi(e,[Ct],l,!0),Fa(),a=c.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:c.cache},e.updateQueue.baseState=n,e.memoizedState=n,e.flags&256){e=us(t,e,a,l);break t}else if(a!==u){u=he(Error(r(424)),e),wa(u),e=us(t,e,a,l);break t}else{switch(t=e.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(zt=Te(t.firstChild),$t=e,ot=!0,xl=null,Re=!0,l=Go(e,null,a,l),e.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling}else{if(Za(),a===u){e=Xe(t,e,l);break t}Lt(t,e,a,l)}e=e.child}return e;case 26:return Tn(t,e),t===null?(l=dd(e.type,null,e.pendingProps,null))?e.memoizedState=l:ot||(l=e.type,t=e.pendingProps,a=jn(tt.current).createElement(l),a[wt]=e,a[kt]=t,Xt(a,l,t),Bt(a),e.stateNode=a):e.memoizedState=dd(e.type,t.memoizedProps,e.pendingProps,t.memoizedState),null;case 27:return ai(e),t===null&&ot&&(a=e.stateNode=rd(e.type,e.pendingProps,tt.current),$t=e,Re=!0,u=zt,ml(e.type)?(rf=u,zt=Te(a.firstChild)):zt=u),Lt(t,e,e.pendingProps.children,l),Tn(t,e),t===null&&(e.flags|=4194304),e.child;case 5:return t===null&&ot&&((u=a=zt)&&(a=im(a,e.type,e.pendingProps,Re),a!==null?(e.stateNode=a,$t=e,zt=Te(a.firstChild),Re=!1,u=!0):u=!1),u||Ul(e)),ai(e),u=e.type,n=e.pendingProps,c=t!==null?t.memoizedProps:null,a=n.children,uf(u,n)?a=null:c!==null&&uf(u,c)&&(e.flags|=32),e.memoizedState!==null&&(u=ac(t,e,R0,null,null,l),bu._currentValue=u),Tn(t,e),Lt(t,e,a,l),e.child;case 6:return t===null&&ot&&((t=l=zt)&&(l=cm(l,e.pendingProps,Re),l!==null?(e.stateNode=l,$t=e,zt=null,t=!0):t=!1),t||Ul(e)),null;case 13:return ns(t,e,l);case 4:return bt(e,e.stateNode.containerInfo),a=e.pendingProps,t===null?e.child=da(e,null,a,l):Lt(t,e,a,l),e.child;case 11:return Fo(t,e,e.type,e.pendingProps,l);case 7:return Lt(t,e,e.pendingProps,l),e.child;case 8:return Lt(t,e,e.pendingProps.children,l),e.child;case 12:return Lt(t,e,e.pendingProps.children,l),e.child;case 10:return a=e.pendingProps,Ie(e,e.type,a.value),Lt(t,e,a.children,l),e.child;case 9:return u=e.type._context,a=e.pendingProps.children,Cl(e),u=Vt(u),a=a(u),e.flags|=1,Lt(t,e,a,l),e.child;case 14:return Po(t,e,e.type,e.pendingProps,l);case 15:return Io(t,e,e.type,e.pendingProps,l);case 19:return cs(t,e,l);case 31:return a=e.pendingProps,l=e.mode,a={mode:a.mode,children:a.children},t===null?(l=An(a,l),l.ref=e.ref,e.child=l,l.return=e,e=l):(l=He(t.child,a),l.ref=e.ref,e.child=l,l.return=e,e=l),e;case 22:return ts(t,e,l);case 24:return Cl(e),a=Vt(Ct),t===null?(u=$i(),u===null&&(u=St,n=Ki(),u.pooledCache=n,n.refCount++,n!==null&&(u.pooledCacheLanes|=l),u=n),e.memoizedState={parent:a,cache:u},Wi(e),Ie(e,Ct,u)):((t.lanes&l)!==0&&(Fi(t,e),Pa(e,null,null,l),Fa()),u=t.memoizedState,n=e.memoizedState,u.parent!==a?(u={parent:a,cache:a},e.memoizedState=u,e.lanes===0&&(e.memoizedState=e.updateQueue.baseState=u),Ie(e,Ct,a)):(a=n.cache,Ie(e,Ct,a),a!==u.cache&&Vi(e,[Ct],l,!0))),Lt(t,e,e.pendingProps.children,l),e.child;case 29:throw e.pendingProps}throw Error(r(156,e.tag))}function Qe(t){t.flags|=4}function rs(t,e){if(e.type!=="stylesheet"||(e.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!gd(e)){if(e=ge.current,e!==null&&((it&4194048)===it?ze!==null:(it&62914560)!==it&&(it&536870912)===0||e!==ze))throw ka=ki,Vr;t.flags|=8192}}function Rn(t,e){e!==null&&(t.flags|=4),t.flags&16384&&(e=t.tag!==22?Gf():536870912,t.lanes|=e,ya|=e)}function nu(t,e){if(!ot)switch(t.tailMode){case"hidden":e=t.tail;for(var l=null;e!==null;)e.alternate!==null&&(l=e),e=e.sibling;l===null?t.tail=null:l.sibling=null;break;case"collapsed":l=t.tail;for(var a=null;l!==null;)l.alternate!==null&&(a=l),l=l.sibling;a===null?e||t.tail===null?t.tail=null:t.tail.sibling=null:a.sibling=null}}function Tt(t){var e=t.alternate!==null&&t.alternate.child===t.child,l=0,a=0;if(e)for(var u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags&65011712,a|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=a,t.childLanes=l,e}function C0(t,e,l){var a=e.pendingProps;switch(Xi(e),e.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Tt(e),null;case 1:return Tt(e),null;case 3:return l=e.stateNode,a=null,t!==null&&(a=t.memoizedState.cache),e.memoizedState.cache!==a&&(e.flags|=2048),Ye(Ct),ke(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(t===null||t.child===null)&&(Qa(e)?Qe(e):t===null||t.memoizedState.isDehydrated&&(e.flags&256)===0||(e.flags|=1024,Gr())),Tt(e),null;case 26:return l=e.memoizedState,t===null?(Qe(e),l!==null?(Tt(e),rs(e,l)):(Tt(e),e.flags&=-16777217)):l?l!==t.memoizedState?(Qe(e),Tt(e),rs(e,l)):(Tt(e),e.flags&=-16777217):(t.memoizedProps!==a&&Qe(e),Tt(e),e.flags&=-16777217),null;case 27:Hu(e),l=tt.current;var u=e.type;if(t!==null&&e.stateNode!=null)t.memoizedProps!==a&&Qe(e);else{if(!a){if(e.stateNode===null)throw Error(r(166));return Tt(e),null}t=J.current,Qa(e)?Yr(e):(t=rd(u,a,l),e.stateNode=t,Qe(e))}return Tt(e),null;case 5:if(Hu(e),l=e.type,t!==null&&e.stateNode!=null)t.memoizedProps!==a&&Qe(e);else{if(!a){if(e.stateNode===null)throw Error(r(166));return Tt(e),null}if(t=J.current,Qa(e))Yr(e);else{switch(u=jn(tt.current),t){case 1:t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":t=u.createElement("div"),t.innerHTML=" + + + +
+ + diff --git a/week3/ecommerce/dist/vite.svg b/week3/ecommerce/dist/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week3/ecommerce/dist/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week3/ecommerce/eslint.config.js b/week3/ecommerce/eslint.config.js new file mode 100644 index 0000000000..ec2b712d30 --- /dev/null +++ b/week3/ecommerce/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/week3/ecommerce/fake-data/all-categories.js b/week3/ecommerce/fake-data/all-categories.js new file mode 100644 index 0000000000..c3745dfefc --- /dev/null +++ b/week3/ecommerce/fake-data/all-categories.js @@ -0,0 +1,6 @@ +export default [ + "FAKE: electronics", + "FAKE: jewelery", + "FAKE: men's clothing", + "FAKE: women's clothing", +]; diff --git a/week3/ecommerce/fake-data/all-products.js b/week3/ecommerce/fake-data/all-products.js new file mode 100644 index 0000000000..cd1ac1a497 --- /dev/null +++ b/week3/ecommerce/fake-data/all-products.js @@ -0,0 +1,269 @@ +export default [ + { + id: 1, + title: "FAKE: Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops", + price: 109.95, + description: + "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday", + category: "men's clothing", + image: "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg", + rating: { + rate: 3.9, + count: 120, + }, + }, + { + id: 2, + title: "FAKE: Mens Casual Premium Slim Fit T-Shirts ", + price: 22.3, + description: + "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.", + category: "men's clothing", + image: + "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg", + rating: { + rate: 4.1, + count: 259, + }, + }, + { + id: 3, + title: "FAKE: Mens Cotton Jacket", + price: 55.99, + description: + "great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_.jpg", + rating: { + rate: 4.7, + count: 500, + }, + }, + { + id: 4, + title: "FAKE: Mens Casual Slim Fit", + price: 15.99, + description: + "The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_.jpg", + rating: { + rate: 2.1, + count: 430, + }, + }, + { + id: 5, + title: + "John Hardy Women's Legends Naga Gold & Silver Dragon Station Chain Bracelet", + price: 695, + description: + "From our Legends Collection, the Naga was inspired by the mythical water dragon that protects the ocean's pearl. Wear facing inward to be bestowed with love and abundance, or outward for protection.", + category: "jewelery", + image: "https://fakestoreapi.com/img/71pWzhdJNwL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 4.6, + count: 400, + }, + }, + { + id: 6, + title: "FAKE: Solid Gold Petite Micropave ", + price: 168, + description: + "Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.", + category: "jewelery", + image: "https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3.9, + count: 70, + }, + }, + { + id: 7, + title: "FAKE: White Gold Plated Princess", + price: 9.99, + description: + "Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...", + category: "jewelery", + image: "https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3, + count: 400, + }, + }, + { + id: 8, + title: "FAKE: Pierced Owl Rose Gold Plated Stainless Steel Double", + price: 10.99, + description: + "Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel", + category: "jewelery", + image: "https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 1.9, + count: 100, + }, + }, + { + id: 9, + title: "FAKE: WD 2TB Elements Portable External Hard Drive - USB 3.0 ", + price: 64, + description: + "USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system", + category: "electronics", + image: "https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_.jpg", + rating: { + rate: 3.3, + count: 203, + }, + }, + { + id: 10, + title: "FAKE: SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s", + price: 109, + description: + "Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)", + category: "electronics", + image: "https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 470, + }, + }, + { + id: 11, + title: + "Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5", + price: 109, + description: + "3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.", + category: "electronics", + image: "https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 319, + }, + }, + { + id: 12, + title: + "WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive", + price: 114, + description: + "Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty", + category: "electronics", + image: "https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 400, + }, + }, + { + id: 13, + title: + "FAKE: Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin", + price: 599, + description: + "21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz", + category: "electronics", + image: "https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 250, + }, + }, + { + id: 14, + title: + "Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED ", + price: 999.99, + description: + "49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag", + category: "electronics", + image: "https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_.jpg", + rating: { + rate: 2.2, + count: 140, + }, + }, + { + id: 15, + title: "FAKE: BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats", + price: 56.99, + description: + "Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_.jpg", + rating: { + rate: 2.6, + count: 235, + }, + }, + { + id: 16, + title: + "Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket", + price: 29.95, + description: + "100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON", + category: "women's clothing", + image: "https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_.jpg", + rating: { + rate: 2.9, + count: 340, + }, + }, + { + id: 17, + title: "FAKE: Rain Jacket Women Windbreaker Striped Climbing Raincoats", + price: 39.99, + description: + "Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2.jpg", + rating: { + rate: 3.8, + count: 679, + }, + }, + { + id: 18, + title: "FAKE: MBJ Women's Solid Short Sleeve Boat Neck V ", + price: 9.85, + description: + "95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_.jpg", + rating: { + rate: 4.7, + count: 130, + }, + }, + { + id: 19, + title: "FAKE: Opna Women's Short Sleeve Moisture", + price: 7.95, + description: + "100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_.jpg", + rating: { + rate: 4.5, + count: 146, + }, + }, + { + id: 20, + title: "FAKE: DANVOUY Womens T Shirt Casual Cotton Short", + price: 12.99, + description: + "95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_.jpg", + rating: { + rate: 3.6, + count: 145, + }, + }, +]; diff --git a/week3/ecommerce/index.html b/week3/ecommerce/index.html new file mode 100644 index 0000000000..0c589eccd4 --- /dev/null +++ b/week3/ecommerce/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/week3/ecommerce/package-lock.json b/week3/ecommerce/package-lock.json new file mode 100644 index 0000000000..2ad006621c --- /dev/null +++ b/week3/ecommerce/package-lock.json @@ -0,0 +1,2866 @@ +{ + "name": "ecommerce", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ecommerce", + "version": "0.0.0", + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.2" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", + "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.2.tgz", + "integrity": "sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.11", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz", + "integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz", + "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz", + "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==", + "license": "MIT", + "dependencies": { + "react-router": "7.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/week3/ecommerce/package.json b/week3/ecommerce/package.json new file mode 100644 index 0000000000..22095b537e --- /dev/null +++ b/week3/ecommerce/package.json @@ -0,0 +1,29 @@ +{ + "name": "ecommerce", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "npm run dev", + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.2" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } +} diff --git a/week3/ecommerce/public/vite.svg b/week3/ecommerce/public/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week3/ecommerce/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week3/ecommerce/src/App.css b/week3/ecommerce/src/App.css new file mode 100644 index 0000000000..027945e42d --- /dev/null +++ b/week3/ecommerce/src/App.css @@ -0,0 +1,6 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} \ No newline at end of file diff --git a/week3/ecommerce/src/App.jsx b/week3/ecommerce/src/App.jsx new file mode 100644 index 0000000000..ccf2036304 --- /dev/null +++ b/week3/ecommerce/src/App.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Routes, Route } from 'react-router-dom'; +import './App.css'; +import FeedPage from './Pages/FeedPage'; +import ProductDetail from './Pages/ProductDetail'; +import Navbar from './Composite/Navbar'; +import FavouritesPage from './Pages/FavouritesPage'; + +function App() { + return ( +
+ + + } /> + } /> + } /> + +
+ ); +} + +export default App; diff --git a/week3/ecommerce/src/Components/CategoryButton.css b/week3/ecommerce/src/Components/CategoryButton.css new file mode 100644 index 0000000000..e6eafb7873 --- /dev/null +++ b/week3/ecommerce/src/Components/CategoryButton.css @@ -0,0 +1,20 @@ +.category-button { + padding: 10px 16px; + margin: 4px; + border: 1px solid #ccc; + background-color: white !important; + color: #333; + border-radius: 6px !important; + cursor: pointer; + transition: all 0.2s ease-in-out; +} + +.category-button:hover { + background-color: #f5f5f5; +} + +.category-button.active { + background-color: #0077cc !important; + color: white; + border-color: #0077cc; +} diff --git a/week3/ecommerce/src/Components/CategoryButton.jsx b/week3/ecommerce/src/Components/CategoryButton.jsx new file mode 100644 index 0000000000..edb73c2a3c --- /dev/null +++ b/week3/ecommerce/src/Components/CategoryButton.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./CategoryButton.css"; + +export default function CategoryButton({ category, isActive, onClick }) { + return ( + + ); +} diff --git a/week3/ecommerce/src/Composite/CategoryFilter.css b/week3/ecommerce/src/Composite/CategoryFilter.css new file mode 100644 index 0000000000..e8e3e88c51 --- /dev/null +++ b/week3/ecommerce/src/Composite/CategoryFilter.css @@ -0,0 +1,14 @@ +.category-filter { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: center; + margin: 20px 0; +} + +@media (max-width: 400px) { + .category-filter { + flex-direction: column; + align-items: stretch; + } +} diff --git a/week3/ecommerce/src/Composite/CategoryFilter.jsx b/week3/ecommerce/src/Composite/CategoryFilter.jsx new file mode 100644 index 0000000000..aadf94100e --- /dev/null +++ b/week3/ecommerce/src/Composite/CategoryFilter.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import "./CategoryFilter.css"; +import CategoryButton from "../Components/CategoryButton"; + + +export default function CategoryFilter({ categories, selectedCategory, onSelectCategory }) { + const handleClick = (category) => { + if (selectedCategory === category) { + onSelectCategory(null); + } else { + onSelectCategory(category); + } + }; + + return ( +
+ {categories.map((category) => ( + handleClick(category)} + /> + ))} +
+ ); +} diff --git a/week3/ecommerce/src/Composite/Navbar.css b/week3/ecommerce/src/Composite/Navbar.css new file mode 100644 index 0000000000..d1b2a663f0 --- /dev/null +++ b/week3/ecommerce/src/Composite/Navbar.css @@ -0,0 +1,17 @@ +.navbar { + display: flex; + gap: 1rem; + padding: 1rem; + background-color: #fafafa; + border-bottom: 1px solid #ddd; +} + +.navbar-link { + text-decoration: none; + color: #333; + font-weight: bold; +} + +.navbar-link:hover { + text-decoration: underline; +} diff --git a/week3/ecommerce/src/Composite/Navbar.jsx b/week3/ecommerce/src/Composite/Navbar.jsx new file mode 100644 index 0000000000..a4f3d7617d --- /dev/null +++ b/week3/ecommerce/src/Composite/Navbar.jsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import './Navbar.css'; + +export default function Navbar() { + return ( + + ); +} diff --git a/week3/ecommerce/src/Composite/ProductCard.css b/week3/ecommerce/src/Composite/ProductCard.css new file mode 100644 index 0000000000..65ad276c8a --- /dev/null +++ b/week3/ecommerce/src/Composite/ProductCard.css @@ -0,0 +1,71 @@ +.product-card { + border: 1px solid #ddd; + padding: 10px; + border-radius: 8px; + text-align: center; + color: #000; + font-size: 10px; + position: relative; +} + +.product-image { + height: 250px; + display: flex; + align-items: center; + justify-content: center; + padding: 10px; + position: relative; +} + +.product-image img { + max-height: 100%; + max-width: 100%; + object-fit: contain; +} + +.product-card img { + width: 100%; + max-width: 200px; + height: auto; + object-fit: contain; +} + +.favorite-btn { + position: absolute; + top: 8px; + right: 8px; + background: transparent; + border: none; + cursor: pointer; + padding: 4px; + display: flex; + align-items: center; + justify-content: center; +} + +.favorite-btn svg { + width: 24px; + height: 24px; +} + +.favorite-btn.favorited svg path { + fill: red; +} + +.favorite-btn:not(.favorited) svg path { + fill: none; + stroke: red; + stroke-width: 2; +} + +.loading { + text-align: center; + margin: 2rem 0; + font-size: 1.2rem; +} + +.error { + color: red; + text-align: center; + margin: 2rem 0; +} diff --git a/week3/ecommerce/src/Composite/ProductCard.jsx b/week3/ecommerce/src/Composite/ProductCard.jsx new file mode 100644 index 0000000000..b7681e90c8 --- /dev/null +++ b/week3/ecommerce/src/Composite/ProductCard.jsx @@ -0,0 +1,52 @@ +// src/Composite/ProductCard.jsx +import React from 'react'; +import { Link } from 'react-router-dom'; +import { useFavorites } from '../context/FavoritesContext'; +import './ProductCard.css'; + +export default function ProductCard({ product }) { + const { favorites, addFavorite, removeFavorite } = useFavorites(); + const isFav = favorites.includes(product.id); + + const toggleFavorite = (e) => { + e.preventDefault(); // чтобы не сломать переход по Link + e.stopPropagation(); + if (isFav) { + removeFavorite(product.id); + } else { + addFavorite(product.id); + } + }; + + return ( + +
+ {product.title} + +
+

{product.title}

+

{product.price} €

+ + ); +} diff --git a/week3/ecommerce/src/Composite/ProductList.css b/week3/ecommerce/src/Composite/ProductList.css new file mode 100644 index 0000000000..0a5f653568 --- /dev/null +++ b/week3/ecommerce/src/Composite/ProductList.css @@ -0,0 +1,13 @@ +.product-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 16px; + margin-top: 24px; +} + +@media (max-width: 600px) { + .product-list { + grid-template-columns: 1fr; + gap: 12px; + } +} diff --git a/week3/ecommerce/src/Composite/ProductList.jsx b/week3/ecommerce/src/Composite/ProductList.jsx new file mode 100644 index 0000000000..18cd7decc0 --- /dev/null +++ b/week3/ecommerce/src/Composite/ProductList.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./ProductList.css"; +import ProductCard from "./ProductCard"; + +export default function ProductList({ products }) { + return ( +
+ {products.map((product) => ( + + ))} +
+ ); +} diff --git a/week3/ecommerce/src/Pages/FavouritesPage.css b/week3/ecommerce/src/Pages/FavouritesPage.css new file mode 100644 index 0000000000..9f9a80904c --- /dev/null +++ b/week3/ecommerce/src/Pages/FavouritesPage.css @@ -0,0 +1,37 @@ +.favourites-page { + max-width: 800px; + margin: 2rem auto; + padding: 1rem; +} + +.refresh-button { + margin-bottom: 1rem; + padding: 0.5rem 1rem; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + margin: 4rem 0; +} + +.spinner { + width: 48px; + height: 48px; + border: 5px solid rgba(0,0,0,0.1); + border-top-color: #333; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 1rem; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.error { + color: red; + text-align: center; + margin: 2rem 0; +} diff --git a/week3/ecommerce/src/Pages/FavouritesPage.jsx b/week3/ecommerce/src/Pages/FavouritesPage.jsx new file mode 100644 index 0000000000..fec9bcb5e2 --- /dev/null +++ b/week3/ecommerce/src/Pages/FavouritesPage.jsx @@ -0,0 +1,46 @@ +import React from 'react'; +import './FavouritesPage.css'; +import { useFavorites } from '../context/FavoritesContext'; +import { useFetch } from '../hooks/useFetch'; +import ProductList from '../Composite/ProductList'; + +export default function FavouritesPage() { + const { favorites } = useFavorites(); + + const productUrls = favorites.map( + (id) => `https://fakestoreapi.com/products/${id}` + ); + + const { + data: products, + loading, + error, + refetch, + } = useFetch(productUrls); + + const handleRefresh = () => refetch(productUrls); + + if (loading) { + return ( +
+
+

Загрузка избранного…

+
+ ); + } + + if (error) { + return

Ошибка: {String(error)}

; + } + + if (!favorites.length) { + return

У вас нет избранных товаров.

; + } + + return ( +
+

Favourites

+ +
+ ); +} diff --git a/week3/ecommerce/src/Pages/FeedPage.css b/week3/ecommerce/src/Pages/FeedPage.css new file mode 100644 index 0000000000..3e91f010d8 --- /dev/null +++ b/week3/ecommerce/src/Pages/FeedPage.css @@ -0,0 +1,52 @@ +.feed-page { + max-width: 1200px; + margin: 0 auto; + padding: 16px; +} + +.loading { + text-align: center; + margin: 2rem 0; + font-size: 1.2rem; +} +.error { + color: red; + text-align: center; + margin: 2rem 0; +} + +@media (max-width: 768px) { + .feed-page { + padding: 8px; + } +} + +h1{ + color: #000; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 4rem 0; +} + +.spinner { + width: 48px; + height: 48px; + border: 5px solid rgba(0,0,0,0.1); + border-top-color: #333; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 1rem; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.loading-container p { + font-size: 1.2rem; +} \ No newline at end of file diff --git a/week3/ecommerce/src/Pages/FeedPage.jsx b/week3/ecommerce/src/Pages/FeedPage.jsx new file mode 100644 index 0000000000..ed4b7d50e7 --- /dev/null +++ b/week3/ecommerce/src/Pages/FeedPage.jsx @@ -0,0 +1,65 @@ +import React, { useState, useEffect } from "react"; +import "./FeedPage.css"; +import { fetchCategories, fetchProducts } from "../utils/api"; +import CategoryFilter from "../Composite/CategoryFilter"; +import ProductList from "../Composite/ProductList"; + +export default function FeedPage() { + const [categories, setCategories] = useState([]); + const [selectedCategory, setSelectedCategory] = useState(null); + const [products, setProducts] = useState([]); + + const [loadingCategories, setLoadingCategories] = useState(true); + const [loadingProducts, setLoadingProducts] = useState(false); + const [error, setError] = useState(null); + + // Category loading + useEffect(() => { + fetchCategories() + .then((cats) => { + setCategories(cats); + setError(null); + }) + .catch((err) => setError(err.message)) + .finally(() => setLoadingCategories(false)); + }, []); + + // Loading products when changing filter + useEffect(() => { + setLoadingProducts(true); + fetchProducts(selectedCategory) + .then((prods) => { + setProducts(prods); + setError(null); + }) + .catch((err) => setError(err.message)) + .finally(() => setLoadingProducts(false)); + }, [selectedCategory]); + + const loading = loadingCategories || loadingProducts; + + if (loading) { + return ( +
+
+

Загрузка…

+
+ ); + } + + if (error) { + return

Ошибка: {error}

; + } + + return ( +
+

Products

+ + +
+ ); +} \ No newline at end of file diff --git a/week3/ecommerce/src/Pages/ProductDetail.css b/week3/ecommerce/src/Pages/ProductDetail.css new file mode 100644 index 0000000000..1ba3ccb2e0 --- /dev/null +++ b/week3/ecommerce/src/Pages/ProductDetail.css @@ -0,0 +1,81 @@ +.detail-image-container { + position: relative; + display: inline-block; + margin-bottom: 1.5rem; +} + +.product-detail { + max-width: 800px; + margin: 2rem auto; + padding: 1rem; + text-align: left; + color: #333; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0,0,0,0.1); +} + +.product-detail h1 { + font-size: 2rem; + margin-bottom: 1rem; + color: #222; +} + +.product-detail p { + margin-bottom: 1rem; + line-height: 1.5; + color: #444; +} + +.product-detail p strong { + display: inline-block; + width: 100px; + font-weight: 600; + color: #000; +} + +.favorite-btn { + position: absolute; + top: 8px; + right: 8px; + background: transparent; + border: none; + padding: 4px; + cursor: pointer; +} + +.favorite-btn svg { + width: 24px; + height: 24px; +} + +.favorite-btn.favorited svg path { + fill: red; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + margin: 4rem 0; +} + +.spinner { + width: 48px; + height: 48px; + border: 5px solid rgba(0,0,0,0.1); + border-top-color: #333; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 1rem; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.error { + color: red; + text-align: center; + margin: 2rem 0; +} diff --git a/week3/ecommerce/src/Pages/ProductDetail.jsx b/week3/ecommerce/src/Pages/ProductDetail.jsx new file mode 100644 index 0000000000..8089ee81b1 --- /dev/null +++ b/week3/ecommerce/src/Pages/ProductDetail.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import { useParams } from 'react-router-dom'; +import { useFetch } from '../hooks/useFetch'; +import { useFavorites } from '../context/FavoritesContext'; +import './ProductDetail.css'; + +export default function ProductDetail() { + const { id } = useParams(); + + const { data: product, loading, error } = + useFetch(`https://fakestoreapi.com/products/${id}`); + + const { favorites, addFavorite, removeFavorite } = useFavorites(); + const isFav = product && favorites.includes(product.id); + + const toggleFavorite = (e) => { + e.preventDefault(); + if (!product) return; + isFav ? removeFavorite(product.id) : addFavorite(product.id); + }; + + if (loading) { + return ( +
+
+

Загрузка…

+
+ ); + } + + if (error) { + return

Ошибка: {String(error)}

; + } + + if (!product) { + return

Продукт не найден

; + } + + return ( +
+
+ {product.title} + +
+

{product.title}

+

Категория: {product.category}

+

Цена: {product.price} €

+

Описание: {product.description}

+
+ ); +} diff --git a/week3/ecommerce/src/assets/react.svg b/week3/ecommerce/src/assets/react.svg new file mode 100644 index 0000000000..6c87de9bb3 --- /dev/null +++ b/week3/ecommerce/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week3/ecommerce/src/context/FavoritesContext.jsx b/week3/ecommerce/src/context/FavoritesContext.jsx new file mode 100644 index 0000000000..296b2801e8 --- /dev/null +++ b/week3/ecommerce/src/context/FavoritesContext.jsx @@ -0,0 +1,38 @@ +import React, { createContext, useContext, useState, useEffect } from 'react'; + +const FavoritesContext = createContext(); + +export const FavoritesProvider = ({ children }) => { + const [favorites, setFavorites] = useState(() => { + try { + const stored = localStorage.getItem('favorites'); + return stored ? JSON.parse(stored) : []; + } catch { + return []; + } + }); + + useEffect(() => { + try { + localStorage.setItem('favorites', JSON.stringify(favorites)); + } catch {} + }, [favorites]); + + const addFavorite = (id) => { + setFavorites((prev) => + prev.includes(id) ? prev : [...prev, id] + ); + }; + + const removeFavorite = (id) => { + setFavorites((prev) => prev.filter((favId) => favId !== id)); + }; + + return ( + + {children} + + ); +}; + +export const useFavorites = () => useContext(FavoritesContext); diff --git a/week3/ecommerce/src/hooks/useFetch.js b/week3/ecommerce/src/hooks/useFetch.js new file mode 100644 index 0000000000..5ac95a0cb1 --- /dev/null +++ b/week3/ecommerce/src/hooks/useFetch.js @@ -0,0 +1,57 @@ +import { useState, useEffect, useCallback } from 'react'; + +export function useFetch(inputUrl, options) { + const [urls, setUrls] = useState( + Array.isArray(inputUrl) ? inputUrl : inputUrl ? [inputUrl] : [] + ); + const [data, setData] = useState( + Array.isArray(inputUrl) ? [] : null + ); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const fetchData = useCallback(async () => { + if (urls.length === 0) { + setData([]); + setLoading(false); + return; + } + + setLoading(true); + setError(null); + try { + if (urls.length > 1) { + const results = await Promise.all( + urls.map((url) => + fetch(url, options).then((r) => { + if (!r.ok) throw new Error(r.statusText); + return r.json(); + }) + ) + ); + setData(results); + } else { + const r = await fetch(urls[0], options); + if (!r.ok) throw new Error(r.statusText); + const json = await r.json(); + setData(json); + } + } catch (err) { + setError(err); + } finally { + setLoading(false); + } + }, [urls, options]); + + useEffect(() => { + fetchData(); + }, [fetchData]); + + const refetch = useCallback((newUrl) => { + setUrls( + Array.isArray(newUrl) ? newUrl : newUrl ? [newUrl] : [] + ); + }, []); + + return { data, loading, error, refetch }; +} diff --git a/week3/ecommerce/src/index.css b/week3/ecommerce/src/index.css new file mode 100644 index 0000000000..3924fb2265 --- /dev/null +++ b/week3/ecommerce/src/index.css @@ -0,0 +1,14 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #ffffff; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/week3/ecommerce/src/main.jsx b/week3/ecommerce/src/main.jsx new file mode 100644 index 0000000000..b0d3d1a58f --- /dev/null +++ b/week3/ecommerce/src/main.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; +import './index.css'; +import App from './App.jsx'; +import { FavoritesProvider } from './context/FavoritesContext'; + +createRoot(document.getElementById('root')).render( + + + + + + + +); diff --git a/week3/ecommerce/src/utils/api.js b/week3/ecommerce/src/utils/api.js new file mode 100644 index 0000000000..ff1ea43465 --- /dev/null +++ b/week3/ecommerce/src/utils/api.js @@ -0,0 +1,20 @@ +export const fetchCategories = async () => { + const res = await fetch("https://fakestoreapi.com/products/categories"); + if (!res.ok) throw new Error("Error getting categories"); + return await res.json(); +}; + +export const fetchProducts = async (category = null) => { + const url = category + ? `https://fakestoreapi.com/products/category/${encodeURIComponent(category)}` + : "https://fakestoreapi.com/products"; + const res = await fetch(url); + if (!res.ok) throw new Error("Error while receiving products"); + return await res.json(); +}; + +export const fetchProductById = async (id) => { + const res = await fetch(`https://fakestoreapi.com/products/${id}`); + if (!res.ok) throw new Error("Error retrieving product data"); + return await res.json(); +}; \ No newline at end of file diff --git a/week3/ecommerce/vite.config.js b/week3/ecommerce/vite.config.js new file mode 100644 index 0000000000..8b0f57b91a --- /dev/null +++ b/week3/ecommerce/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From b38620b89e2e6054aef8fa450a672e00d280d332 Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 30 Jun 2025 19:27:00 +0200 Subject: [PATCH 6/7] bug with one product in favorites fixed --- week3/ecommerce/src/Composite/ProductCard.jsx | 2 +- week3/ecommerce/src/Pages/FavouritesPage.jsx | 21 +++++++++---------- week3/ecommerce/src/Pages/FeedPage.jsx | 6 ++---- week3/ecommerce/src/Pages/ProductDetail.jsx | 12 +++++------ 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/week3/ecommerce/src/Composite/ProductCard.jsx b/week3/ecommerce/src/Composite/ProductCard.jsx index b7681e90c8..0635c7ead9 100644 --- a/week3/ecommerce/src/Composite/ProductCard.jsx +++ b/week3/ecommerce/src/Composite/ProductCard.jsx @@ -9,7 +9,7 @@ export default function ProductCard({ product }) { const isFav = favorites.includes(product.id); const toggleFavorite = (e) => { - e.preventDefault(); // чтобы не сломать переход по Link + e.preventDefault(); e.stopPropagation(); if (isFav) { removeFavorite(product.id); diff --git a/week3/ecommerce/src/Pages/FavouritesPage.jsx b/week3/ecommerce/src/Pages/FavouritesPage.jsx index fec9bcb5e2..162335e710 100644 --- a/week3/ecommerce/src/Pages/FavouritesPage.jsx +++ b/week3/ecommerce/src/Pages/FavouritesPage.jsx @@ -11,36 +11,35 @@ export default function FavouritesPage() { (id) => `https://fakestoreapi.com/products/${id}` ); - const { - data: products, - loading, - error, - refetch, - } = useFetch(productUrls); + const { data, loading, error } = useFetch(productUrls); - const handleRefresh = () => refetch(productUrls); + const products = data + ? Array.isArray(data) + ? data + : [data] + : []; if (loading) { return (
-

Загрузка избранного…

+

Loading favorites…

); } if (error) { - return

Ошибка: {String(error)}

; + return

Error: {String(error)}

; } if (!favorites.length) { - return

У вас нет избранных товаров.

; + return

You have no favorite products.

; } return (

Favourites

- +
); } diff --git a/week3/ecommerce/src/Pages/FeedPage.jsx b/week3/ecommerce/src/Pages/FeedPage.jsx index ed4b7d50e7..100afa6eae 100644 --- a/week3/ecommerce/src/Pages/FeedPage.jsx +++ b/week3/ecommerce/src/Pages/FeedPage.jsx @@ -13,7 +13,6 @@ export default function FeedPage() { const [loadingProducts, setLoadingProducts] = useState(false); const [error, setError] = useState(null); - // Category loading useEffect(() => { fetchCategories() .then((cats) => { @@ -24,7 +23,6 @@ export default function FeedPage() { .finally(() => setLoadingCategories(false)); }, []); - // Loading products when changing filter useEffect(() => { setLoadingProducts(true); fetchProducts(selectedCategory) @@ -42,13 +40,13 @@ export default function FeedPage() { return (
-

Загрузка…

+

Loading…

); } if (error) { - return

Ошибка: {error}

; + return

Error: {error}

; } return ( diff --git a/week3/ecommerce/src/Pages/ProductDetail.jsx b/week3/ecommerce/src/Pages/ProductDetail.jsx index 8089ee81b1..3439a105a7 100644 --- a/week3/ecommerce/src/Pages/ProductDetail.jsx +++ b/week3/ecommerce/src/Pages/ProductDetail.jsx @@ -23,17 +23,17 @@ export default function ProductDetail() { return (
-

Загрузка…

+

Loading…

); } if (error) { - return

Ошибка: {String(error)}

; + return

Error: {String(error)}

; } if (!product) { - return

Продукт не найден

; + return

Product not found

; } return ( @@ -64,9 +64,9 @@ export default function ProductDetail() {

{product.title}

-

Категория: {product.category}

-

Цена: {product.price} €

-

Описание: {product.description}

+

Category: {product.category}

+

Price: {product.price} €

+

Description: {product.description}

); } From d398d307c8f09ac5cb6cd6afc5ebd348ae3dea39 Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Wed, 9 Jul 2025 18:16:14 +0200 Subject: [PATCH 7/7] build added --- .../{index-BlIIyDh1.js => index-DCl2ymmR.js} | 22 +++++++++---------- week3/ecommerce/dist/index.html | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) rename week3/ecommerce/dist/assets/{index-BlIIyDh1.js => index-DCl2ymmR.js} (78%) diff --git a/week3/ecommerce/dist/assets/index-BlIIyDh1.js b/week3/ecommerce/dist/assets/index-DCl2ymmR.js similarity index 78% rename from week3/ecommerce/dist/assets/index-BlIIyDh1.js rename to week3/ecommerce/dist/assets/index-DCl2ymmR.js index 6b6954c4e2..67a2da96f5 100644 --- a/week3/ecommerce/dist/assets/index-BlIIyDh1.js +++ b/week3/ecommerce/dist/assets/index-DCl2ymmR.js @@ -1,4 +1,4 @@ -(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))r(d);new MutationObserver(d=>{for(const v of d)if(v.type==="childList")for(const R of v.addedNodes)R.tagName==="LINK"&&R.rel==="modulepreload"&&r(R)}).observe(document,{childList:!0,subtree:!0});function s(d){const v={};return d.integrity&&(v.integrity=d.integrity),d.referrerPolicy&&(v.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?v.credentials="include":d.crossOrigin==="anonymous"?v.credentials="omit":v.credentials="same-origin",v}function r(d){if(d.ep)return;d.ep=!0;const v=s(d);fetch(d.href,v)}})();function Nm(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var pf={exports:{}},zu={};/** +(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))r(d);new MutationObserver(d=>{for(const m of d)if(m.type==="childList")for(const A of m.addedNodes)A.tagName==="LINK"&&A.rel==="modulepreload"&&r(A)}).observe(document,{childList:!0,subtree:!0});function s(d){const m={};return d.integrity&&(m.integrity=d.integrity),d.referrerPolicy&&(m.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?m.credentials="include":d.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function r(d){if(d.ep)return;d.ep=!0;const m=s(d);fetch(d.href,m)}})();function N0(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var pf={exports:{}},zu={};/** * @license React * react-jsx-runtime.production.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var _d;function Cm(){if(_d)return zu;_d=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function s(r,d,v){var R=null;if(v!==void 0&&(R=""+v),d.key!==void 0&&(R=""+d.key),"key"in d){v={};for(var M in d)M!=="key"&&(v[M]=d[M])}else v=d;return d=v.ref,{$$typeof:i,type:r,key:R,ref:d!==void 0?d:null,props:v}}return zu.Fragment=o,zu.jsx=s,zu.jsxs=s,zu}var xd;function Hm(){return xd||(xd=1,pf.exports=Cm()),pf.exports}var G=Hm(),bf={exports:{}},et={};/** + */var _d;function C0(){if(_d)return zu;_d=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function s(r,d,m){var A=null;if(m!==void 0&&(A=""+m),d.key!==void 0&&(A=""+d.key),"key"in d){m={};for(var M in d)M!=="key"&&(m[M]=d[M])}else m=d;return d=m.ref,{$$typeof:i,type:r,key:A,ref:d!==void 0?d:null,props:m}}return zu.Fragment=o,zu.jsx=s,zu.jsxs=s,zu}var xd;function H0(){return xd||(xd=1,pf.exports=C0()),pf.exports}var G=H0(),bf={exports:{}},et={};/** * @license React * react.production.js * @@ -14,7 +14,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Ud;function Bm(){if(Ud)return et;Ud=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),R=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),B=Symbol.iterator;function _(y){return y===null||typeof y!="object"?null:(y=B&&y[B]||y["@@iterator"],typeof y=="function"?y:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,Q={};function V(y,H,X){this.props=y,this.context=H,this.refs=Q,this.updater=X||j}V.prototype.isReactComponent={},V.prototype.setState=function(y,H){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,H,"setState")},V.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function q(){}q.prototype=V.prototype;function w(y,H,X){this.props=y,this.context=H,this.refs=Q,this.updater=X||j}var P=w.prototype=new q;P.constructor=w,C(P,V.prototype),P.isPureReactComponent=!0;var ct=Array.isArray,I={H:null,A:null,T:null,S:null,V:null},xt=Object.prototype.hasOwnProperty;function Rt(y,H,X,Y,J,ft){return X=ft.ref,{$$typeof:i,type:y,key:H,ref:X!==void 0?X:null,props:ft}}function Mt(y,H){return Rt(y.type,H,void 0,void 0,void 0,y.props)}function pt(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function Jt(y){var H={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(X){return H[X]})}var oe=/\/+/g;function Qt(y,H){return typeof y=="object"&&y!==null&&y.key!=null?Jt(""+y.key):H.toString(36)}function bl(){}function El(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(bl,bl):(y.status="pending",y.then(function(H){y.status==="pending"&&(y.status="fulfilled",y.value=H)},function(H){y.status==="pending"&&(y.status="rejected",y.reason=H)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function Zt(y,H,X,Y,J){var ft=typeof y;(ft==="undefined"||ft==="boolean")&&(y=null);var tt=!1;if(y===null)tt=!0;else switch(ft){case"bigint":case"string":case"number":tt=!0;break;case"object":switch(y.$$typeof){case i:case o:tt=!0;break;case z:return tt=y._init,Zt(tt(y._payload),H,X,Y,J)}}if(tt)return J=J(y),tt=Y===""?"."+Qt(y,0):Y,ct(J)?(X="",tt!=null&&(X=tt.replace(oe,"$&/")+"/"),Zt(J,H,X,"",function(ke){return ke})):J!=null&&(pt(J)&&(J=Mt(J,X+(J.key==null||y&&y.key===J.key?"":(""+J.key).replace(oe,"$&/")+"/")+tt)),H.push(J)),1;tt=0;var te=Y===""?".":Y+":";if(ct(y))for(var bt=0;bt>>1,y=x[yt];if(0>>1;ytd(Y,W))Jd(ft,Y)?(x[yt]=ft,x[J]=W,yt=J):(x[yt]=Y,x[X]=W,yt=X);else if(Jd(ft,W))x[yt]=ft,x[J]=W,yt=J;else break t}}return L}function d(x,L){var W=x.sortIndex-L.sortIndex;return W!==0?W:x.id-L.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var v=performance;i.unstable_now=function(){return v.now()}}else{var R=Date,M=R.now();i.unstable_now=function(){return R.now()-M}}var p=[],m=[],z=1,B=null,_=3,j=!1,C=!1,Q=!1,V=!1,q=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,P=typeof setImmediate<"u"?setImmediate:null;function ct(x){for(var L=s(m);L!==null;){if(L.callback===null)r(m);else if(L.startTime<=x)r(m),L.sortIndex=L.expirationTime,o(p,L);else break;L=s(m)}}function I(x){if(Q=!1,ct(x),!C)if(s(p)!==null)C=!0,xt||(xt=!0,Qt());else{var L=s(m);L!==null&&Zt(I,L.startTime-x)}}var xt=!1,Rt=-1,Mt=5,pt=-1;function Jt(){return V?!0:!(i.unstable_now()-ptx&&Jt());){var yt=B.callback;if(typeof yt=="function"){B.callback=null,_=B.priorityLevel;var y=yt(B.expirationTime<=x);if(x=i.unstable_now(),typeof y=="function"){B.callback=y,ct(x),L=!0;break e}B===s(p)&&r(p),ct(x)}else r(p);B=s(p)}if(B!==null)L=!0;else{var H=s(m);H!==null&&Zt(I,H.startTime-x),L=!1}}break t}finally{B=null,_=W,j=!1}L=void 0}}finally{L?Qt():xt=!1}}}var Qt;if(typeof P=="function")Qt=function(){P(oe)};else if(typeof MessageChannel<"u"){var bl=new MessageChannel,El=bl.port2;bl.port1.onmessage=oe,Qt=function(){El.postMessage(null)}}else Qt=function(){q(oe,0)};function Zt(x,L){Rt=q(function(){x(i.unstable_now())},L)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(x){x.callback=null},i.unstable_forceFrameRate=function(x){0>x||125yt?(x.sortIndex=W,o(m,x),s(p)===null&&x===s(m)&&(Q?(w(Rt),Rt=-1):Q=!0,Zt(I,W-yt))):(x.sortIndex=y,o(p,x),C||j||(C=!0,xt||(xt=!0,Qt()))),x},i.unstable_shouldYield=Jt,i.unstable_wrapCallback=function(x){var L=_;return function(){var W=_;_=L;try{return x.apply(this,arguments)}finally{_=W}}}}(Af)),Af}var Hd;function Ym(){return Hd||(Hd=1,Tf.exports=jm()),Tf.exports}var Rf={exports:{}},Kt={};/** + */var Cd;function j0(){return Cd||(Cd=1,function(i){function o(x,L){var W=x.length;x.push(L);t:for(;0>>1,y=x[yt];if(0>>1;ytd(Y,W))Jd(ft,Y)?(x[yt]=ft,x[J]=W,yt=J):(x[yt]=Y,x[X]=W,yt=X);else if(Jd(ft,W))x[yt]=ft,x[J]=W,yt=J;else break t}}return L}function d(x,L){var W=x.sortIndex-L.sortIndex;return W!==0?W:x.id-L.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;i.unstable_now=function(){return m.now()}}else{var A=Date,M=A.now();i.unstable_now=function(){return A.now()-M}}var p=[],v=[],z=1,B=null,_=3,j=!1,C=!1,Q=!1,V=!1,q=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,P=typeof setImmediate<"u"?setImmediate:null;function ct(x){for(var L=s(v);L!==null;){if(L.callback===null)r(v);else if(L.startTime<=x)r(v),L.sortIndex=L.expirationTime,o(p,L);else break;L=s(v)}}function I(x){if(Q=!1,ct(x),!C)if(s(p)!==null)C=!0,xt||(xt=!0,Qt());else{var L=s(v);L!==null&&Zt(I,L.startTime-x)}}var xt=!1,Rt=-1,Mt=5,pt=-1;function Jt(){return V?!0:!(i.unstable_now()-ptx&&Jt());){var yt=B.callback;if(typeof yt=="function"){B.callback=null,_=B.priorityLevel;var y=yt(B.expirationTime<=x);if(x=i.unstable_now(),typeof y=="function"){B.callback=y,ct(x),L=!0;break e}B===s(p)&&r(p),ct(x)}else r(p);B=s(p)}if(B!==null)L=!0;else{var H=s(v);H!==null&&Zt(I,H.startTime-x),L=!1}}break t}finally{B=null,_=W,j=!1}L=void 0}}finally{L?Qt():xt=!1}}}var Qt;if(typeof P=="function")Qt=function(){P(oe)};else if(typeof MessageChannel<"u"){var bl=new MessageChannel,El=bl.port2;bl.port1.onmessage=oe,Qt=function(){El.postMessage(null)}}else Qt=function(){q(oe,0)};function Zt(x,L){Rt=q(function(){x(i.unstable_now())},L)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(x){x.callback=null},i.unstable_forceFrameRate=function(x){0>x||125yt?(x.sortIndex=W,o(v,x),s(p)===null&&x===s(v)&&(Q?(w(Rt),Rt=-1):Q=!0,Zt(I,W-yt))):(x.sortIndex=y,o(p,x),C||j||(C=!0,xt||(xt=!0,Qt()))),x},i.unstable_shouldYield=Jt,i.unstable_wrapCallback=function(x){var L=_;return function(){var W=_;_=L;try{return x.apply(this,arguments)}finally{_=W}}}}(Af)),Af}var Hd;function Y0(){return Hd||(Hd=1,Tf.exports=j0()),Tf.exports}var Rf={exports:{}},Kt={};/** * @license React * react-dom.production.js * @@ -30,7 +30,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Bd;function Lm(){if(Bd)return Kt;Bd=1;var i=_f();function o(p){var m="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(o){console.error(o)}}return i(),Rf.exports=Lm(),Rf.exports}/** + */var Bd;function L0(){if(Bd)return Kt;Bd=1;var i=_f();function o(p){var v="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(o){console.error(o)}}return i(),Rf.exports=L0(),Rf.exports}/** * @license React * react-dom-client.production.js * @@ -38,14 +38,14 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var jd;function Xm(){if(jd)return Ou;jd=1;var i=Ym(),o=_f(),s=Gm();function r(t){var e="https://react.dev/errors/"+t;if(1y||(t.current=yt[y],yt[y]=null,y--)}function Y(t,e){y++,yt[y]=t.current,t.current=e}var J=H(null),ft=H(null),tt=H(null),te=H(null);function bt(t,e){switch(Y(tt,e),Y(ft,t),Y(J,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?ad(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=ad(e),t=ud(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}X(J),Y(J,t)}function ke(){X(J),X(ft),X(tt)}function ai(t){t.memoizedState!==null&&Y(te,t);var e=J.current,l=ud(e,t.type);e!==l&&(Y(ft,t),Y(J,l))}function Hu(t){ft.current===t&&(X(J),X(ft)),te.current===t&&(X(te),bu._currentValue=W)}var ui=Object.prototype.hasOwnProperty,ni=i.unstable_scheduleCallback,ii=i.unstable_cancelCallback,oh=i.unstable_shouldYield,sh=i.unstable_requestPaint,Ae=i.unstable_now,dh=i.unstable_getCurrentPriorityLevel,qf=i.unstable_ImmediatePriority,jf=i.unstable_UserBlockingPriority,Bu=i.unstable_NormalPriority,hh=i.unstable_LowPriority,Yf=i.unstable_IdlePriority,mh=i.log,vh=i.unstable_setDisableYieldValue,Da=null,ee=null;function We(t){if(typeof mh=="function"&&vh(t),ee&&typeof ee.setStrictMode=="function")try{ee.setStrictMode(Da,t)}catch{}}var le=Math.clz32?Math.clz32:Sh,yh=Math.log,gh=Math.LN2;function Sh(t){return t>>>=0,t===0?32:31-(yh(t)/gh|0)|0}var qu=256,ju=4194304;function Tl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Yu(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~n,a!==0?u=Tl(a):(c&=f,c!==0?u=Tl(c):l||(l=f&~t,l!==0&&(u=Tl(l))))):(f=a&~n,f!==0?u=Tl(f):c!==0?u=Tl(c):l||(l=a&~t,l!==0&&(u=Tl(l)))),u===0?0:e!==0&&e!==u&&(e&n)===0&&(n=u&-u,l=e&-e,n>=l||n===32&&(l&4194048)!==0)?e:u}function _a(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function ph(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lf(){var t=qu;return qu<<=1,(qu&4194048)===0&&(qu=256),t}function Gf(){var t=ju;return ju<<=1,(ju&62914560)===0&&(ju=4194304),t}function ci(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function xa(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function bh(t,e,l,a,u,n){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,h=t.expirationTimes,E=t.hiddenUpdates;for(l=c&~l;0y||(t.current=yt[y],yt[y]=null,y--)}function Y(t,e){y++,yt[y]=t.current,t.current=e}var J=H(null),ft=H(null),tt=H(null),te=H(null);function bt(t,e){switch(Y(tt,e),Y(ft,t),Y(J,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?ad(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=ad(e),t=ud(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}X(J),Y(J,t)}function ke(){X(J),X(ft),X(tt)}function ai(t){t.memoizedState!==null&&Y(te,t);var e=J.current,l=ud(e,t.type);e!==l&&(Y(ft,t),Y(J,l))}function Hu(t){ft.current===t&&(X(J),X(ft)),te.current===t&&(X(te),bu._currentValue=W)}var ui=Object.prototype.hasOwnProperty,ni=i.unstable_scheduleCallback,ii=i.unstable_cancelCallback,oh=i.unstable_shouldYield,sh=i.unstable_requestPaint,Ae=i.unstable_now,dh=i.unstable_getCurrentPriorityLevel,qf=i.unstable_ImmediatePriority,jf=i.unstable_UserBlockingPriority,Bu=i.unstable_NormalPriority,hh=i.unstable_LowPriority,Yf=i.unstable_IdlePriority,vh=i.log,mh=i.unstable_setDisableYieldValue,Da=null,ee=null;function We(t){if(typeof vh=="function"&&mh(t),ee&&typeof ee.setStrictMode=="function")try{ee.setStrictMode(Da,t)}catch{}}var le=Math.clz32?Math.clz32:Sh,yh=Math.log,gh=Math.LN2;function Sh(t){return t>>>=0,t===0?32:31-(yh(t)/gh|0)|0}var qu=256,ju=4194304;function Tl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Yu(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~n,a!==0?u=Tl(a):(c&=f,c!==0?u=Tl(c):l||(l=f&~t,l!==0&&(u=Tl(l))))):(f=a&~n,f!==0?u=Tl(f):c!==0?u=Tl(c):l||(l=a&~t,l!==0&&(u=Tl(l)))),u===0?0:e!==0&&e!==u&&(e&n)===0&&(n=u&-u,l=e&-e,n>=l||n===32&&(l&4194048)!==0)?e:u}function _a(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function ph(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lf(){var t=qu;return qu<<=1,(qu&4194048)===0&&(qu=256),t}function Gf(){var t=ju;return ju<<=1,(ju&62914560)===0&&(ju=4194304),t}function ci(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function xa(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function bh(t,e,l,a,u,n){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,h=t.expirationTimes,E=t.hiddenUpdates;for(l=c&~l;0)":-1u||h[a]!==E[u]){var D=` -`+h[a].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=a&&0<=u);break}}}finally{hi=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?Kl(l):""}function Oh(t){switch(t.tag){case 26:case 27:case 5:return Kl(t.type);case 16:return Kl("Lazy");case 13:return Kl("Suspense");case 19:return Kl("SuspenseList");case 0:case 15:return mi(t.type,!1);case 11:return mi(t.type.render,!1);case 1:return mi(t.type,!0);case 31:return Kl("Activity");default:return""}}function Wf(t){try{var e="";do e+=Oh(t),t=t.return;while(t);return e}catch(l){return` +`+h[a].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=a&&0<=u);break}}}finally{hi=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?Kl(l):""}function Oh(t){switch(t.tag){case 26:case 27:case 5:return Kl(t.type);case 16:return Kl("Lazy");case 13:return Kl("Suspense");case 19:return Kl("SuspenseList");case 0:case 15:return vi(t.type,!1);case 11:return vi(t.type.render,!1);case 1:return vi(t.type,!0);case 31:return Kl("Activity");default:return""}}function Wf(t){try{var e="";do e+=Oh(t),t=t.return;while(t);return e}catch(l){return` Error generating stack: `+l.message+` -`+l.stack}}function se(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Ff(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Mh(t){var e=Ff(t)?"checked":"value",l=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),a=""+t[e];if(!t.hasOwnProperty(e)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var u=l.get,n=l.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return u.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(t,e,{enumerable:l.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Xu(t){t._valueTracker||(t._valueTracker=Mh(t))}function Pf(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var l=e.getValue(),a="";return t&&(a=Ff(t)?t.checked?"true":"false":t.value),t=a,t!==l?(e.setValue(t),!0):!1}function Qu(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Dh=/[\n"\\]/g;function de(t){return t.replace(Dh,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function vi(t,e,l,a,u,n,c,f){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),e!=null?c==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+se(e)):t.value!==""+se(e)&&(t.value=""+se(e)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),e!=null?yi(t,c,se(e)):l!=null?yi(t,c,se(l)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+se(f):t.removeAttribute("name")}function If(t,e,l,a,u,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),e!=null||l!=null){if(!(n!=="submit"&&n!=="reset"||e!=null))return;l=l!=null?""+se(l):"",e=e!=null?""+se(e):l,f||e===t.value||(t.value=e),t.defaultValue=e}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=f?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c)}function yi(t,e,l){e==="number"&&Qu(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function Jl(t,e,l,a){if(t=t.options,e){e={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ei=!1;if(Ce)try{var Ha={};Object.defineProperty(Ha,"passive",{get:function(){Ei=!0}}),window.addEventListener("test",Ha,Ha),window.removeEventListener("test",Ha,Ha)}catch{Ei=!1}var Pe=null,Ti=null,wu=null;function ir(){if(wu)return wu;var t,e=Ti,l=e.length,a,u="value"in Pe?Pe.value:Pe.textContent,n=u.length;for(t=0;t=ja),dr=" ",hr=!1;function mr(t,e){switch(t){case"keyup":return l0.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function vr(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Fl=!1;function u0(t,e){switch(t){case"compositionend":return vr(e);case"keypress":return e.which!==32?null:(hr=!0,dr);case"textInput":return t=e.data,t===dr&&hr?null:t;default:return null}}function n0(t,e){if(Fl)return t==="compositionend"||!Mi&&mr(t,e)?(t=ir(),wu=Ti=Pe=null,Fl=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=Ar(l)}}function zr(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?zr(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Or(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=Qu(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=Qu(t.document)}return e}function xi(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var h0=Ce&&"documentMode"in document&&11>=document.documentMode,Pl=null,Ui=null,Xa=null,Ni=!1;function Mr(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Ni||Pl==null||Pl!==Qu(a)||(a=Pl,"selectionStart"in a&&xi(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Xa&&Ga(Xa,a)||(Xa=a,a=Bn(Ui,"onSelect"),0>=c,u-=c,Be=1<<32-le(e)+u|l<n?n:8;var c=x.T,f={};x.T=f,gc(t,!1,e,l);try{var h=u(),E=x.S;if(E!==null&&E(f,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var D=T0(h,a);lu(t,e,D,fe(t))}else lu(t,e,a,fe(t))}catch(N){lu(t,e,{then:function(){},status:"rejected",reason:N},fe())}finally{L.p=n,x.T=c}}function M0(){}function vc(t,e,l,a){if(t.tag!==5)throw Error(r(476));var u=_o(t).queue;Do(t,u,e,W,l===null?M0:function(){return xo(t),l(a)})}function _o(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Le,lastRenderedState:W},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Le,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function xo(t){var e=_o(t).next.queue;lu(t,e,{},fe())}function yc(){return Vt(bu)}function Uo(){return Nt().memoizedState}function No(){return Nt().memoizedState}function D0(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=fe();t=el(l);var a=ll(e,t,l);a!==null&&(re(a,e,l),Wa(a,e,l)),e={cache:Ki()},t.payload=e;return}e=e.return}}function _0(t,e,l){var a=fe();l={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null},vn(t)?Ho(e,l):(l=qi(t,e,l,a),l!==null&&(re(l,t,a),Bo(l,e,a)))}function Co(t,e,l){var a=fe();lu(t,e,l,a)}function lu(t,e,l,a){var u={lane:a,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null};if(vn(t))Ho(e,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=e.lastRenderedReducer,n!==null))try{var c=e.lastRenderedState,f=n(c,l);if(u.hasEagerState=!0,u.eagerState=f,ae(f,c))return Fu(t,e,u,0),St===null&&Wu(),!1}catch{}finally{}if(l=qi(t,e,u,a),l!==null)return re(l,t,a),Bo(l,e,a),!0}return!1}function gc(t,e,l,a){if(a={lane:2,revertLane:kc(),action:a,hasEagerState:!1,eagerState:null,next:null},vn(t)){if(e)throw Error(r(479))}else e=qi(t,l,a,2),e!==null&&re(e,t,2)}function vn(t){var e=t.alternate;return t===lt||e!==null&&e===lt}function Ho(t,e){fa=rn=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function Bo(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,Qf(t,l)}}var yn={readContext:Vt,use:sn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt},qo={readContext:Vt,use:sn,useCallback:function(t,e){return Ft().memoizedState=[t,e===void 0?null:e],t},useContext:Vt,useEffect:po,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,mn(4194308,4,Ao.bind(null,e,t),l)},useLayoutEffect:function(t,e){return mn(4194308,4,t,e)},useInsertionEffect:function(t,e){mn(4,2,t,e)},useMemo:function(t,e){var l=Ft();e=e===void 0?null:e;var a=t();if(Bl){We(!0);try{t()}finally{We(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=Ft();if(l!==void 0){var u=l(e);if(Bl){We(!0);try{l(e)}finally{We(!1)}}}else u=e;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=_0.bind(null,lt,t),[a.memoizedState,t]},useRef:function(t){var e=Ft();return t={current:t},e.memoizedState=t},useState:function(t){t=sc(t);var e=t.queue,l=Co.bind(null,lt,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:hc,useDeferredValue:function(t,e){var l=Ft();return mc(l,t,e)},useTransition:function(){var t=sc(!1);return t=Do.bind(null,lt,t.queue,!0,!1),Ft().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=lt,u=Ft();if(ot){if(l===void 0)throw Error(r(407));l=l()}else{if(l=e(),St===null)throw Error(r(349));(it&124)!==0||lo(a,e,l)}u.memoizedState=l;var n={value:l,getSnapshot:e};return u.queue=n,po(uo.bind(null,a,n,t),[t]),a.flags|=2048,oa(9,hn(),ao.bind(null,a,n,l,e),null),l},useId:function(){var t=Ft(),e=St.identifierPrefix;if(ot){var l=qe,a=Be;l=(a&~(1<<32-le(a)-1)).toString(32)+l,e="«"+e+"R"+l,l=on++,0k?(Yt=K,K=null):Yt=K.sibling;var rt=T(S,K,b[k],U);if(rt===null){K===null&&(K=Yt);break}t&&K&&rt.alternate===null&&e(S,K),g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt,K=Yt}if(k===b.length)return l(S,K),ot&&_l(S,k),Z;if(K===null){for(;kk?(Yt=K,K=null):Yt=K.sibling;var pl=T(S,K,rt.value,U);if(pl===null){K===null&&(K=Yt);break}t&&K&&pl.alternate===null&&e(S,K),g=n(pl,g,k),at===null?Z=pl:at.sibling=pl,at=pl,K=Yt}if(rt.done)return l(S,K),ot&&_l(S,k),Z;if(K===null){for(;!rt.done;k++,rt=b.next())rt=N(S,rt.value,U),rt!==null&&(g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt);return ot&&_l(S,k),Z}for(K=a(K);!rt.done;k++,rt=b.next())rt=A(K,S,k,rt.value,U),rt!==null&&(t&&rt.alternate!==null&&K.delete(rt.key===null?k:rt.key),g=n(rt,g,k),at===null?Z=rt:at.sibling=rt,at=rt);return t&&K.forEach(function(Um){return e(S,Um)}),ot&&_l(S,k),Z}function vt(S,g,b,U){if(typeof b=="object"&&b!==null&&b.type===C&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case _:t:{for(var Z=b.key;g!==null;){if(g.key===Z){if(Z=b.type,Z===C){if(g.tag===7){l(S,g.sibling),U=u(g,b.props.children),U.return=S,S=U;break t}}else if(g.elementType===Z||typeof Z=="object"&&Z!==null&&Z.$$typeof===Mt&&Yo(Z)===g.type){l(S,g.sibling),U=u(g,b.props),uu(U,b),U.return=S,S=U;break t}l(S,g);break}else e(S,g);g=g.sibling}b.type===C?(U=Ml(b.props.children,S.mode,U,b.key),U.return=S,S=U):(U=Iu(b.type,b.key,b.props,null,S.mode,U),uu(U,b),U.return=S,S=U)}return c(S);case j:t:{for(Z=b.key;g!==null;){if(g.key===Z)if(g.tag===4&&g.stateNode.containerInfo===b.containerInfo&&g.stateNode.implementation===b.implementation){l(S,g.sibling),U=u(g,b.children||[]),U.return=S,S=U;break t}else{l(S,g);break}else e(S,g);g=g.sibling}U=Li(b,S.mode,U),U.return=S,S=U}return c(S);case Mt:return Z=b._init,b=Z(b._payload),vt(S,g,b,U)}if(Zt(b))return F(S,g,b,U);if(Qt(b)){if(Z=Qt(b),typeof Z!="function")throw Error(r(150));return b=Z.call(b),$(S,g,b,U)}if(typeof b.then=="function")return vt(S,g,gn(b),U);if(b.$$typeof===P)return vt(S,g,an(S,b),U);Sn(S,b)}return typeof b=="string"&&b!==""||typeof b=="number"||typeof b=="bigint"?(b=""+b,g!==null&&g.tag===6?(l(S,g.sibling),U=u(g,b),U.return=S,S=U):(l(S,g),U=Yi(b,S.mode,U),U.return=S,S=U),c(S)):l(S,g)}return function(S,g,b,U){try{au=0;var Z=vt(S,g,b,U);return sa=null,Z}catch(K){if(K===$a||K===nn)throw K;var at=ue(29,K,null,S.mode);return at.lanes=U,at.return=S,at}finally{}}}var da=Lo(!0),Go=Lo(!1),ge=H(null),ze=null;function ul(t){var e=t.alternate;Y(Ht,Ht.current&1),Y(ge,t),ze===null&&(e===null||ca.current!==null||e.memoizedState!==null)&&(ze=t)}function Xo(t){if(t.tag===22){if(Y(Ht,Ht.current),Y(ge,t),ze===null){var e=t.alternate;e!==null&&e.memoizedState!==null&&(ze=t)}}else nl()}function nl(){Y(Ht,Ht.current),Y(ge,ge.current)}function Ge(t){X(ge),ze===t&&(ze=null),X(Ht)}var Ht=H(0);function pn(t){for(var e=t;e!==null;){if(e.tag===13){var l=e.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||ff(l)))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}function Sc(t,e,l,a){e=t.memoizedState,l=l(a,e),l=l==null?e:z({},e,l),t.memoizedState=l,t.lanes===0&&(t.updateQueue.baseState=l)}var pc={enqueueSetState:function(t,e,l){t=t._reactInternals;var a=fe(),u=el(a);u.payload=e,l!=null&&(u.callback=l),e=ll(t,u,a),e!==null&&(re(e,t,a),Wa(e,t,a))},enqueueReplaceState:function(t,e,l){t=t._reactInternals;var a=fe(),u=el(a);u.tag=1,u.payload=e,l!=null&&(u.callback=l),e=ll(t,u,a),e!==null&&(re(e,t,a),Wa(e,t,a))},enqueueForceUpdate:function(t,e){t=t._reactInternals;var l=fe(),a=el(l);a.tag=2,e!=null&&(a.callback=e),e=ll(t,a,l),e!==null&&(re(e,t,l),Wa(e,t,l))}};function Qo(t,e,l,a,u,n,c){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(a,n,c):e.prototype&&e.prototype.isPureReactComponent?!Ga(l,a)||!Ga(u,n):!0}function Zo(t,e,l,a){t=e.state,typeof e.componentWillReceiveProps=="function"&&e.componentWillReceiveProps(l,a),typeof e.UNSAFE_componentWillReceiveProps=="function"&&e.UNSAFE_componentWillReceiveProps(l,a),e.state!==t&&pc.enqueueReplaceState(e,e.state,null)}function ql(t,e){var l=e;if("ref"in e){l={};for(var a in e)a!=="ref"&&(l[a]=e[a])}if(t=t.defaultProps){l===e&&(l=z({},l));for(var u in t)l[u]===void 0&&(l[u]=t[u])}return l}var bn=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var e=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(e))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function wo(t){bn(t)}function Vo(t){console.error(t)}function Ko(t){bn(t)}function En(t,e){try{var l=t.onUncaughtError;l(e.value,{componentStack:e.stack})}catch(a){setTimeout(function(){throw a})}}function Jo(t,e,l){try{var a=t.onCaughtError;a(l.value,{componentStack:l.stack,errorBoundary:e.tag===1?e.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function bc(t,e,l){return l=el(l),l.tag=3,l.payload={element:null},l.callback=function(){En(t,e)},l}function $o(t){return t=el(t),t.tag=3,t}function ko(t,e,l,a){var u=l.type.getDerivedStateFromError;if(typeof u=="function"){var n=a.value;t.payload=function(){return u(n)},t.callback=function(){Jo(e,l,a)}}var c=l.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(t.callback=function(){Jo(e,l,a),typeof u!="function"&&(sl===null?sl=new Set([this]):sl.add(this));var f=a.stack;this.componentDidCatch(a.value,{componentStack:f!==null?f:""})})}function U0(t,e,l,a,u){if(l.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(e=l.alternate,e!==null&&Va(e,l,u,!0),l=ge.current,l!==null){switch(l.tag){case 13:return ze===null?wc():l.alternate===null&&Ot===0&&(Ot=3),l.flags&=-257,l.flags|=65536,l.lanes=u,a===ki?l.flags|=16384:(e=l.updateQueue,e===null?l.updateQueue=new Set([a]):e.add(a),Kc(t,a,u)),!1;case 22:return l.flags|=65536,a===ki?l.flags|=16384:(e=l.updateQueue,e===null?(e={transitions:null,markerInstances:null,retryQueue:new Set([a])},l.updateQueue=e):(l=e.retryQueue,l===null?e.retryQueue=new Set([a]):l.add(a)),Kc(t,a,u)),!1}throw Error(r(435,l.tag))}return Kc(t,a,u),wc(),!1}if(ot)return e=ge.current,e!==null?((e.flags&65536)===0&&(e.flags|=256),e.flags|=65536,e.lanes=u,a!==Qi&&(t=Error(r(422),{cause:a}),wa(he(t,l)))):(a!==Qi&&(e=Error(r(423),{cause:a}),wa(he(e,l))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,a=he(a,l),u=bc(t.stateNode,a,u),Pi(t,u),Ot!==4&&(Ot=2)),!1;var n=Error(r(520),{cause:a});if(n=he(n,l),su===null?su=[n]:su.push(n),Ot!==4&&(Ot=2),e===null)return!0;a=he(a,l),l=e;do{switch(l.tag){case 3:return l.flags|=65536,t=u&-u,l.lanes|=t,t=bc(l.stateNode,a,t),Pi(l,t),!1;case 1:if(e=l.type,n=l.stateNode,(l.flags&128)===0&&(typeof e.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(sl===null||!sl.has(n))))return l.flags|=65536,u&=-u,l.lanes|=u,u=$o(u),ko(u,t,l,a),Pi(l,u),!1}l=l.return}while(l!==null);return!1}var Wo=Error(r(461)),qt=!1;function Lt(t,e,l,a){e.child=t===null?Go(e,null,l,a):da(e,t.child,l,a)}function Fo(t,e,l,a,u){l=l.render;var n=e.ref;if("ref"in a){var c={};for(var f in a)f!=="ref"&&(c[f]=a[f])}else c=a;return Cl(e),a=ac(t,e,l,c,n,u),f=uc(),t!==null&&!qt?(nc(t,e,u),Xe(t,e,u)):(ot&&f&&Gi(e),e.flags|=1,Lt(t,e,a,u),e.child)}function Po(t,e,l,a,u){if(t===null){var n=l.type;return typeof n=="function"&&!ji(n)&&n.defaultProps===void 0&&l.compare===null?(e.tag=15,e.type=n,Io(t,e,n,a,u)):(t=Iu(l.type,null,a,e,e.mode,u),t.ref=e.ref,t.return=e,e.child=t)}if(n=t.child,!Dc(t,u)){var c=n.memoizedProps;if(l=l.compare,l=l!==null?l:Ga,l(c,a)&&t.ref===e.ref)return Xe(t,e,u)}return e.flags|=1,t=He(n,a),t.ref=e.ref,t.return=e,e.child=t}function Io(t,e,l,a,u){if(t!==null){var n=t.memoizedProps;if(Ga(n,a)&&t.ref===e.ref)if(qt=!1,e.pendingProps=a=n,Dc(t,u))(t.flags&131072)!==0&&(qt=!0);else return e.lanes=t.lanes,Xe(t,e,u)}return Ec(t,e,l,a,u)}function ts(t,e,l){var a=e.pendingProps,u=a.children,n=t!==null?t.memoizedState:null;if(a.mode==="hidden"){if((e.flags&128)!==0){if(a=n!==null?n.baseLanes|l:l,t!==null){for(u=e.child=t.child,n=0;u!==null;)n=n|u.lanes|u.childLanes,u=u.sibling;e.childLanes=n&~a}else e.childLanes=0,e.child=null;return es(t,e,a,l)}if((l&536870912)!==0)e.memoizedState={baseLanes:0,cachePool:null},t!==null&&un(e,n!==null?n.cachePool:null),n!==null?Pr(e,n):tc(),Xo(e);else return e.lanes=e.childLanes=536870912,es(t,e,n!==null?n.baseLanes|l:l,l)}else n!==null?(un(e,n.cachePool),Pr(e,n),nl(),e.memoizedState=null):(t!==null&&un(e,null),tc(),nl());return Lt(t,e,u,l),e.child}function es(t,e,l,a){var u=$i();return u=u===null?null:{parent:Ct._currentValue,pool:u},e.memoizedState={baseLanes:l,cachePool:u},t!==null&&un(e,null),tc(),Xo(e),t!==null&&Va(t,e,a,!0),null}function Tn(t,e){var l=e.ref;if(l===null)t!==null&&t.ref!==null&&(e.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(r(284));(t===null||t.ref!==l)&&(e.flags|=4194816)}}function Ec(t,e,l,a,u){return Cl(e),l=ac(t,e,l,a,void 0,u),a=uc(),t!==null&&!qt?(nc(t,e,u),Xe(t,e,u)):(ot&&a&&Gi(e),e.flags|=1,Lt(t,e,l,u),e.child)}function ls(t,e,l,a,u,n){return Cl(e),e.updateQueue=null,l=to(e,a,l,u),Ir(t),a=uc(),t!==null&&!qt?(nc(t,e,n),Xe(t,e,n)):(ot&&a&&Gi(e),e.flags|=1,Lt(t,e,l,n),e.child)}function as(t,e,l,a,u){if(Cl(e),e.stateNode===null){var n=la,c=l.contextType;typeof c=="object"&&c!==null&&(n=Vt(c)),n=new l(a,n),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=pc,e.stateNode=n,n._reactInternals=e,n=e.stateNode,n.props=a,n.state=e.memoizedState,n.refs={},Wi(e),c=l.contextType,n.context=typeof c=="object"&&c!==null?Vt(c):la,n.state=e.memoizedState,c=l.getDerivedStateFromProps,typeof c=="function"&&(Sc(e,l,c,a),n.state=e.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&pc.enqueueReplaceState(n,n.state,null),Pa(e,a,n,u),Fa(),n.state=e.memoizedState),typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!0}else if(t===null){n=e.stateNode;var f=e.memoizedProps,h=ql(l,f);n.props=h;var E=n.context,D=l.contextType;c=la,typeof D=="object"&&D!==null&&(c=Vt(D));var N=l.getDerivedStateFromProps;D=typeof N=="function"||typeof n.getSnapshotBeforeUpdate=="function",f=e.pendingProps!==f,D||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f||E!==c)&&Zo(e,n,a,c),tl=!1;var T=e.memoizedState;n.state=T,Pa(e,a,n,u),Fa(),E=e.memoizedState,f||T!==E||tl?(typeof N=="function"&&(Sc(e,l,N,a),E=e.memoizedState),(h=tl||Qo(e,l,h,a,T,E,c))?(D||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(e.flags|=4194308)):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=a,e.memoizedState=E),n.props=a,n.state=E,n.context=c,a=h):(typeof n.componentDidMount=="function"&&(e.flags|=4194308),a=!1)}else{n=e.stateNode,Fi(t,e),c=e.memoizedProps,D=ql(l,c),n.props=D,N=e.pendingProps,T=n.context,E=l.contextType,h=la,typeof E=="object"&&E!==null&&(h=Vt(E)),f=l.getDerivedStateFromProps,(E=typeof f=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==N||T!==h)&&Zo(e,n,a,h),tl=!1,T=e.memoizedState,n.state=T,Pa(e,a,n,u),Fa();var A=e.memoizedState;c!==N||T!==A||tl||t!==null&&t.dependencies!==null&&ln(t.dependencies)?(typeof f=="function"&&(Sc(e,l,f,a),A=e.memoizedState),(D=tl||Qo(e,l,D,a,T,A,h)||t!==null&&t.dependencies!==null&&ln(t.dependencies))?(E||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,A,h),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,A,h)),typeof n.componentDidUpdate=="function"&&(e.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=1024),e.memoizedProps=a,e.memoizedState=A),n.props=a,n.state=A,n.context=h,a=D):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&T===t.memoizedState||(e.flags|=1024),a=!1)}return n=a,Tn(t,e),a=(e.flags&128)!==0,n||a?(n=e.stateNode,l=a&&typeof l.getDerivedStateFromError!="function"?null:n.render(),e.flags|=1,t!==null&&a?(e.child=da(e,t.child,null,u),e.child=da(e,null,l,u)):Lt(t,e,l,u),e.memoizedState=n.state,t=e.child):t=Xe(t,e,u),t}function us(t,e,l,a){return Za(),e.flags|=256,Lt(t,e,l,a),e.child}var Tc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Ac(t){return{baseLanes:t,cachePool:wr()}}function Rc(t,e,l){return t=t!==null?t.childLanes&~l:0,e&&(t|=Se),t}function ns(t,e,l){var a=e.pendingProps,u=!1,n=(e.flags&128)!==0,c;if((c=n)||(c=t!==null&&t.memoizedState===null?!1:(Ht.current&2)!==0),c&&(u=!0,e.flags&=-129),c=(e.flags&32)!==0,e.flags&=-33,t===null){if(ot){if(u?ul(e):nl(),ot){var f=zt,h;if(h=f){t:{for(h=f,f=Re;h.nodeType!==8;){if(!f){f=null;break t}if(h=Te(h.nextSibling),h===null){f=null;break t}}f=h}f!==null?(e.memoizedState={dehydrated:f,treeContext:Dl!==null?{id:Be,overflow:qe}:null,retryLane:536870912,hydrationErrors:null},h=ue(18,null,null,0),h.stateNode=f,h.return=e,e.child=h,$t=e,zt=null,h=!0):h=!1}h||Ul(e)}if(f=e.memoizedState,f!==null&&(f=f.dehydrated,f!==null))return ff(f)?e.lanes=32:e.lanes=536870912,null;Ge(e)}return f=a.children,a=a.fallback,u?(nl(),u=e.mode,f=An({mode:"hidden",children:f},u),a=Ml(a,u,l,null),f.return=e,a.return=e,f.sibling=a,e.child=f,u=e.child,u.memoizedState=Ac(l),u.childLanes=Rc(t,c,l),e.memoizedState=Tc,a):(ul(e),zc(e,f))}if(h=t.memoizedState,h!==null&&(f=h.dehydrated,f!==null)){if(n)e.flags&256?(ul(e),e.flags&=-257,e=Oc(t,e,l)):e.memoizedState!==null?(nl(),e.child=t.child,e.flags|=128,e=null):(nl(),u=a.fallback,f=e.mode,a=An({mode:"visible",children:a.children},f),u=Ml(u,f,l,null),u.flags|=2,a.return=e,u.return=e,a.sibling=u,e.child=a,da(e,t.child,null,l),a=e.child,a.memoizedState=Ac(l),a.childLanes=Rc(t,c,l),e.memoizedState=Tc,e=u);else if(ul(e),ff(f)){if(c=f.nextSibling&&f.nextSibling.dataset,c)var E=c.dgst;c=E,a=Error(r(419)),a.stack="",a.digest=c,wa({value:a,source:null,stack:null}),e=Oc(t,e,l)}else if(qt||Va(t,e,l,!1),c=(l&t.childLanes)!==0,qt||c){if(c=St,c!==null&&(a=l&-l,a=(a&42)!==0?1:fi(a),a=(a&(c.suspendedLanes|l))!==0?0:a,a!==0&&a!==h.retryLane))throw h.retryLane=a,ea(t,a),re(c,t,a),Wo;f.data==="$?"||wc(),e=Oc(t,e,l)}else f.data==="$?"?(e.flags|=192,e.child=t.child,e=null):(t=h.treeContext,zt=Te(f.nextSibling),$t=e,ot=!0,xl=null,Re=!1,t!==null&&(ve[ye++]=Be,ve[ye++]=qe,ve[ye++]=Dl,Be=t.id,qe=t.overflow,Dl=e),e=zc(e,a.children),e.flags|=4096);return e}return u?(nl(),u=a.fallback,f=e.mode,h=t.child,E=h.sibling,a=He(h,{mode:"hidden",children:a.children}),a.subtreeFlags=h.subtreeFlags&65011712,E!==null?u=He(E,u):(u=Ml(u,f,l,null),u.flags|=2),u.return=e,a.return=e,a.sibling=u,e.child=a,a=u,u=e.child,f=t.child.memoizedState,f===null?f=Ac(l):(h=f.cachePool,h!==null?(E=Ct._currentValue,h=h.parent!==E?{parent:E,pool:E}:h):h=wr(),f={baseLanes:f.baseLanes|l,cachePool:h}),u.memoizedState=f,u.childLanes=Rc(t,c,l),e.memoizedState=Tc,a):(ul(e),l=t.child,t=l.sibling,l=He(l,{mode:"visible",children:a.children}),l.return=e,l.sibling=null,t!==null&&(c=e.deletions,c===null?(e.deletions=[t],e.flags|=16):c.push(t)),e.child=l,e.memoizedState=null,l)}function zc(t,e){return e=An({mode:"visible",children:e},t.mode),e.return=t,t.child=e}function An(t,e){return t=ue(22,t,null,e),t.lanes=0,t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},t}function Oc(t,e,l){return da(e,t.child,null,l),t=zc(e,e.pendingProps.children),t.flags|=2,e.memoizedState=null,t}function is(t,e,l){t.lanes|=e;var a=t.alternate;a!==null&&(a.lanes|=e),wi(t.return,e,l)}function Mc(t,e,l,a,u){var n=t.memoizedState;n===null?t.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:a,tail:l,tailMode:u}:(n.isBackwards=e,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=l,n.tailMode=u)}function cs(t,e,l){var a=e.pendingProps,u=a.revealOrder,n=a.tail;if(Lt(t,e,a.children,l),a=Ht.current,(a&2)!==0)a=a&1|2,e.flags|=128;else{if(t!==null&&(t.flags&128)!==0)t:for(t=e.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&is(t,l,e);else if(t.tag===19)is(t,l,e);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break t;for(;t.sibling===null;){if(t.return===null||t.return===e)break t;t=t.return}t.sibling.return=t.return,t=t.sibling}a&=1}switch(Y(Ht,a),u){case"forwards":for(l=e.child,u=null;l!==null;)t=l.alternate,t!==null&&pn(t)===null&&(u=l),l=l.sibling;l=u,l===null?(u=e.child,e.child=null):(u=l.sibling,l.sibling=null),Mc(e,!1,u,l,n);break;case"backwards":for(l=null,u=e.child,e.child=null;u!==null;){if(t=u.alternate,t!==null&&pn(t)===null){e.child=u;break}t=u.sibling,u.sibling=l,l=u,u=t}Mc(e,!0,l,null,n);break;case"together":Mc(e,!1,null,null,void 0);break;default:e.memoizedState=null}return e.child}function Xe(t,e,l){if(t!==null&&(e.dependencies=t.dependencies),ol|=e.lanes,(l&e.childLanes)===0)if(t!==null){if(Va(t,e,l,!1),(l&e.childLanes)===0)return null}else return null;if(t!==null&&e.child!==t.child)throw Error(r(153));if(e.child!==null){for(t=e.child,l=He(t,t.pendingProps),e.child=l,l.return=e;t.sibling!==null;)t=t.sibling,l=l.sibling=He(t,t.pendingProps),l.return=e;l.sibling=null}return e.child}function Dc(t,e){return(t.lanes&e)!==0?!0:(t=t.dependencies,!!(t!==null&&ln(t)))}function N0(t,e,l){switch(e.tag){case 3:bt(e,e.stateNode.containerInfo),Ie(e,Ct,t.memoizedState.cache),Za();break;case 27:case 5:ai(e);break;case 4:bt(e,e.stateNode.containerInfo);break;case 10:Ie(e,e.type,e.memoizedProps.value);break;case 13:var a=e.memoizedState;if(a!==null)return a.dehydrated!==null?(ul(e),e.flags|=128,null):(l&e.child.childLanes)!==0?ns(t,e,l):(ul(e),t=Xe(t,e,l),t!==null?t.sibling:null);ul(e);break;case 19:var u=(t.flags&128)!==0;if(a=(l&e.childLanes)!==0,a||(Va(t,e,l,!1),a=(l&e.childLanes)!==0),u){if(a)return cs(t,e,l);e.flags|=128}if(u=e.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),Y(Ht,Ht.current),a)break;return null;case 22:case 23:return e.lanes=0,ts(t,e,l);case 24:Ie(e,Ct,t.memoizedState.cache)}return Xe(t,e,l)}function fs(t,e,l){if(t!==null)if(t.memoizedProps!==e.pendingProps)qt=!0;else{if(!Dc(t,l)&&(e.flags&128)===0)return qt=!1,N0(t,e,l);qt=(t.flags&131072)!==0}else qt=!1,ot&&(e.flags&1048576)!==0&&jr(e,en,e.index);switch(e.lanes=0,e.tag){case 16:t:{t=e.pendingProps;var a=e.elementType,u=a._init;if(a=u(a._payload),e.type=a,typeof a=="function")ji(a)?(t=ql(a,t),e.tag=1,e=as(null,e,a,t,l)):(e.tag=0,e=Ec(null,e,a,t,l));else{if(a!=null){if(u=a.$$typeof,u===ct){e.tag=11,e=Fo(null,e,a,t,l);break t}else if(u===Rt){e.tag=14,e=Po(null,e,a,t,l);break t}}throw e=El(a)||a,Error(r(306,e,""))}}return e;case 0:return Ec(t,e,e.type,e.pendingProps,l);case 1:return a=e.type,u=ql(a,e.pendingProps),as(t,e,a,u,l);case 3:t:{if(bt(e,e.stateNode.containerInfo),t===null)throw Error(r(387));a=e.pendingProps;var n=e.memoizedState;u=n.element,Fi(t,e),Pa(e,a,null,l);var c=e.memoizedState;if(a=c.cache,Ie(e,Ct,a),a!==n.cache&&Vi(e,[Ct],l,!0),Fa(),a=c.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:c.cache},e.updateQueue.baseState=n,e.memoizedState=n,e.flags&256){e=us(t,e,a,l);break t}else if(a!==u){u=he(Error(r(424)),e),wa(u),e=us(t,e,a,l);break t}else{switch(t=e.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(zt=Te(t.firstChild),$t=e,ot=!0,xl=null,Re=!0,l=Go(e,null,a,l),e.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling}else{if(Za(),a===u){e=Xe(t,e,l);break t}Lt(t,e,a,l)}e=e.child}return e;case 26:return Tn(t,e),t===null?(l=dd(e.type,null,e.pendingProps,null))?e.memoizedState=l:ot||(l=e.type,t=e.pendingProps,a=jn(tt.current).createElement(l),a[wt]=e,a[kt]=t,Xt(a,l,t),Bt(a),e.stateNode=a):e.memoizedState=dd(e.type,t.memoizedProps,e.pendingProps,t.memoizedState),null;case 27:return ai(e),t===null&&ot&&(a=e.stateNode=rd(e.type,e.pendingProps,tt.current),$t=e,Re=!0,u=zt,ml(e.type)?(rf=u,zt=Te(a.firstChild)):zt=u),Lt(t,e,e.pendingProps.children,l),Tn(t,e),t===null&&(e.flags|=4194304),e.child;case 5:return t===null&&ot&&((u=a=zt)&&(a=im(a,e.type,e.pendingProps,Re),a!==null?(e.stateNode=a,$t=e,zt=Te(a.firstChild),Re=!1,u=!0):u=!1),u||Ul(e)),ai(e),u=e.type,n=e.pendingProps,c=t!==null?t.memoizedProps:null,a=n.children,uf(u,n)?a=null:c!==null&&uf(u,c)&&(e.flags|=32),e.memoizedState!==null&&(u=ac(t,e,R0,null,null,l),bu._currentValue=u),Tn(t,e),Lt(t,e,a,l),e.child;case 6:return t===null&&ot&&((t=l=zt)&&(l=cm(l,e.pendingProps,Re),l!==null?(e.stateNode=l,$t=e,zt=null,t=!0):t=!1),t||Ul(e)),null;case 13:return ns(t,e,l);case 4:return bt(e,e.stateNode.containerInfo),a=e.pendingProps,t===null?e.child=da(e,null,a,l):Lt(t,e,a,l),e.child;case 11:return Fo(t,e,e.type,e.pendingProps,l);case 7:return Lt(t,e,e.pendingProps,l),e.child;case 8:return Lt(t,e,e.pendingProps.children,l),e.child;case 12:return Lt(t,e,e.pendingProps.children,l),e.child;case 10:return a=e.pendingProps,Ie(e,e.type,a.value),Lt(t,e,a.children,l),e.child;case 9:return u=e.type._context,a=e.pendingProps.children,Cl(e),u=Vt(u),a=a(u),e.flags|=1,Lt(t,e,a,l),e.child;case 14:return Po(t,e,e.type,e.pendingProps,l);case 15:return Io(t,e,e.type,e.pendingProps,l);case 19:return cs(t,e,l);case 31:return a=e.pendingProps,l=e.mode,a={mode:a.mode,children:a.children},t===null?(l=An(a,l),l.ref=e.ref,e.child=l,l.return=e,e=l):(l=He(t.child,a),l.ref=e.ref,e.child=l,l.return=e,e=l),e;case 22:return ts(t,e,l);case 24:return Cl(e),a=Vt(Ct),t===null?(u=$i(),u===null&&(u=St,n=Ki(),u.pooledCache=n,n.refCount++,n!==null&&(u.pooledCacheLanes|=l),u=n),e.memoizedState={parent:a,cache:u},Wi(e),Ie(e,Ct,u)):((t.lanes&l)!==0&&(Fi(t,e),Pa(e,null,null,l),Fa()),u=t.memoizedState,n=e.memoizedState,u.parent!==a?(u={parent:a,cache:a},e.memoizedState=u,e.lanes===0&&(e.memoizedState=e.updateQueue.baseState=u),Ie(e,Ct,a)):(a=n.cache,Ie(e,Ct,a),a!==u.cache&&Vi(e,[Ct],l,!0))),Lt(t,e,e.pendingProps.children,l),e.child;case 29:throw e.pendingProps}throw Error(r(156,e.tag))}function Qe(t){t.flags|=4}function rs(t,e){if(e.type!=="stylesheet"||(e.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!gd(e)){if(e=ge.current,e!==null&&((it&4194048)===it?ze!==null:(it&62914560)!==it&&(it&536870912)===0||e!==ze))throw ka=ki,Vr;t.flags|=8192}}function Rn(t,e){e!==null&&(t.flags|=4),t.flags&16384&&(e=t.tag!==22?Gf():536870912,t.lanes|=e,ya|=e)}function nu(t,e){if(!ot)switch(t.tailMode){case"hidden":e=t.tail;for(var l=null;e!==null;)e.alternate!==null&&(l=e),e=e.sibling;l===null?t.tail=null:l.sibling=null;break;case"collapsed":l=t.tail;for(var a=null;l!==null;)l.alternate!==null&&(a=l),l=l.sibling;a===null?e||t.tail===null?t.tail=null:t.tail.sibling=null:a.sibling=null}}function Tt(t){var e=t.alternate!==null&&t.alternate.child===t.child,l=0,a=0;if(e)for(var u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags&65011712,a|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)l|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=a,t.childLanes=l,e}function C0(t,e,l){var a=e.pendingProps;switch(Xi(e),e.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Tt(e),null;case 1:return Tt(e),null;case 3:return l=e.stateNode,a=null,t!==null&&(a=t.memoizedState.cache),e.memoizedState.cache!==a&&(e.flags|=2048),Ye(Ct),ke(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(t===null||t.child===null)&&(Qa(e)?Qe(e):t===null||t.memoizedState.isDehydrated&&(e.flags&256)===0||(e.flags|=1024,Gr())),Tt(e),null;case 26:return l=e.memoizedState,t===null?(Qe(e),l!==null?(Tt(e),rs(e,l)):(Tt(e),e.flags&=-16777217)):l?l!==t.memoizedState?(Qe(e),Tt(e),rs(e,l)):(Tt(e),e.flags&=-16777217):(t.memoizedProps!==a&&Qe(e),Tt(e),e.flags&=-16777217),null;case 27:Hu(e),l=tt.current;var u=e.type;if(t!==null&&e.stateNode!=null)t.memoizedProps!==a&&Qe(e);else{if(!a){if(e.stateNode===null)throw Error(r(166));return Tt(e),null}t=J.current,Qa(e)?Yr(e):(t=rd(u,a,l),e.stateNode=t,Qe(e))}return Tt(e),null;case 5:if(Hu(e),l=e.type,t!==null&&e.stateNode!=null)t.memoizedProps!==a&&Qe(e);else{if(!a){if(e.stateNode===null)throw Error(r(166));return Tt(e),null}if(t=J.current,Qa(e))Yr(e);else{switch(u=jn(tt.current),t){case 1:t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":t=u.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":t=u.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":t=u.createElement("div"),t.innerHTML=" +