diff --git a/.npmrc b/.npmrc
@@ -0,0 +1 @@
+public-hoist-pattern[]=*@nextui-org/*
diff --git a/app/db/crud.py b/app/db/crud.py
@@ -366,7 +366,7 @@ def update_user(db: Session, dbuser: User, modify: UserModify):
if modify.expire is not None:
dbuser.expire = modify.expire or None
if dbuser.status in (UserStatus.active, UserStatus.expired):
- if not dbuser.expire or dbuser.expire > datetime.utcnow().timestamp():
+ if not dbuser.expire or dbuser.expire > datetime.utcnow():
dbuser.status = UserStatus.active
if not dbuser.expire or (
calculate_expiration_days(dbuser.expire) > NOTIFY_DAYS_LEFT
diff --git a/app/db/models.py b/app/db/models.py
@@ -108,7 +108,7 @@ class User(Base):
usage_logs = relationship(
"UserUsageResetLogs", back_populates="user", lazy="joined"
)
- expire = Column(Integer)
+ expire = Column(DateTime)
admin_id = Column(Integer, ForeignKey("admins.id"))
admin = relationship("Admin", back_populates="users")
sub_updated_at = Column(DateTime)
diff --git a/app/models/user.py b/app/models/user.py
@@ -60,7 +60,7 @@ class UserBase(BaseModel):
# proxies: Dict[ProxyTypes, ProxySettings] = {}
id: Optional[int] = None
username: Annotated[str, StringConstraints(to_lower=True)]
- expire: Optional[int] = Field(None, nullable=True)
+ expire: Optional[datetime] = Field(None, nullable=True)
key: str = Field(default_factory=lambda: secrets.token_hex(16))
data_limit: Optional[int] = Field(
ge=0, default=None, description="data_limit can be 0 or greater"
@@ -119,7 +119,7 @@ class UserCreate(User):
"example": {
"username": "user1234",
"services": [1, 2, 3],
- "expire": 0,
+ "expire": "2023-11-03T20:30:00",
"data_limit": 0,
"data_limit_reset_strategy": "no_reset",
"status": "active",
diff --git a/dashboard/.eslintrc.cjs b/dashboard/.eslintrc.cjs
@@ -10,6 +10,7 @@ module.exports = {
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
+ '@typescript-eslint/unused-disable-directives': ['off'],
'@typescript-eslint/ban-ts-comment': ['off'],
'@typescript-eslint/no-explicit-any': ['off'],
'react-refresh/only-export-components': ['off'],
diff --git a/dashboard/package.json b/dashboard/package.json
@@ -6,7 +6,7 @@
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
+ "lint": "eslint . --ext ts,tsx --max-warnings 0",
"preview": "vite preview",
"test": "vitest",
"test:ui": "vitest --ui",
@@ -18,6 +18,10 @@
"@hookform/resolvers": "^3.3.4",
"@kodingdotninja/use-tailwind-breakpoint": "^0.0.5",
"@monaco-editor/react": "^4.6.0",
+ "@nextui-org/progress": "^2.0.25",
+ "@nextui-org/react": "^2.2.10",
+ "@nextui-org/system": "^2.0.15",
+ "@nextui-org/theme": "^2.1.18",
"@radix-ui/react-alert-dialog": "^1.0.5",
"@radix-ui/react-aspect-ratio": "^1.0.3",
"@radix-ui/react-checkbox": "^1.0.4",
@@ -27,6 +31,7 @@
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-label": "^2.0.2",
"@radix-ui/react-popover": "^1.0.7",
+ "@radix-ui/react-progress": "^1.0.3",
"@radix-ui/react-radio-group": "^1.1.3",
"@radix-ui/react-scroll-area": "^1.0.5",
"@radix-ui/react-select": "^2.0.0",
@@ -35,6 +40,7 @@
"@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tabs": "^1.0.4",
"@radix-ui/react-toggle": "^1.0.3",
+ "@radix-ui/react-toggle-group": "^1.0.4",
"@radix-ui/react-tooltip": "^1.0.7",
"@react-hook/media-query": "^1.1.1",
"@remix-run/router": "^1.15.3",
@@ -46,7 +52,9 @@
"@tanstack/react-table": "^8.14.0",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
+ "date-fns": "^3.6.0",
"dayjs": "^1.11.10",
+ "framer-motion": "^11.0.22",
"i18next": "^23.10.1",
"i18next-browser-languagedetector": "^7.2.0",
"i18next-http-backend": "^2.5.0",
@@ -56,6 +64,7 @@
"ofetch": "^1.3.3",
"react": "^18.2.0",
"react-copy-to-clipboard": "^5.1.0",
+ "react-day-picker": "^8.10.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.51.1",
"react-i18next": "^14.1.0",
diff --git a/dashboard/pnpm-lock.yaml b/dashboard/pnpm-lock.yaml
@@ -20,6 +20,18 @@ dependencies:
'@monaco-editor/react':
specifier: ^4.6.0
version: 4.6.0(monaco-editor@0.47.0)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/progress':
+ specifier: ^2.0.25
+ version: 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/react':
+ specifier: ^2.2.10
+ version: 2.2.10(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)(tailwindcss@3.4.1)
+ '@nextui-org/system':
+ specifier: ^2.0.15
+ version: 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme':
+ specifier: ^2.1.18
+ version: 2.1.18(tailwindcss@3.4.1)
'@radix-ui/react-alert-dialog':
specifier: ^1.0.5
version: 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
@@ -47,6 +59,9 @@ dependencies:
'@radix-ui/react-popover':
specifier: ^1.0.7
version: 1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-progress':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-radio-group':
specifier: ^1.1.3
version: 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
@@ -71,6 +86,9 @@ dependencies:
'@radix-ui/react-toggle':
specifier: ^1.0.3
version: 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle-group':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-tooltip':
specifier: ^1.0.7
version: 1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
@@ -104,9 +122,15 @@ dependencies:
clsx:
specifier: ^2.1.0
version: 2.1.0
+ date-fns:
+ specifier: ^3.6.0
+ version: 3.6.0
dayjs:
specifier: ^1.11.10
version: 1.11.10
+ framer-motion:
+ specifier: ^11.0.22
+ version: 11.0.22(react-dom@18.2.0)(react@18.2.0)
i18next:
specifier: ^23.10.1
version: 23.10.1
@@ -134,6 +158,9 @@ dependencies:
react-copy-to-clipboard:
specifier: ^5.1.0
version: 5.1.0(react@18.2.0)
+ react-day-picker:
+ specifier: ^8.10.0
+ version: 8.10.0(date-fns@3.6.0)(react@18.2.0)
react-dom:
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
@@ -795,6 +822,40 @@ packages:
resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
dev: false
+ /@formatjs/ecma402-abstract@1.18.2:
+ resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==}
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+ dev: false
+
+ /@formatjs/fast-memoize@2.2.0:
+ resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@formatjs/icu-messageformat-parser@2.7.6:
+ resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/icu-skeleton-parser': 1.8.0
+ tslib: 2.6.2
+ dev: false
+
+ /@formatjs/icu-skeleton-parser@1.8.0:
+ resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ tslib: 2.6.2
+ dev: false
+
+ /@formatjs/intl-localematcher@0.5.4:
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/@heroicons/react@2.1.1(react@18.2.0):
resolution: {integrity: sha512-JyyN9Lo66kirbCMuMMRPtJxtKJoIsXKS569ebHGGRKbl8s4CtUfLnyKJxteA+vIKySocO4s1SkTkGS4xtG/yEA==}
peerDependencies:
@@ -831,6 +892,31 @@ packages:
resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
dev: true
+ /@internationalized/date@3.5.2:
+ resolution: {integrity: sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==}
+ dependencies:
+ '@swc/helpers': 0.5.7
+ dev: false
+
+ /@internationalized/message@3.1.2:
+ resolution: {integrity: sha512-MHAWsZWz8jf6jFPZqpTudcCM361YMtPIRu9CXkYmKjJ/0R3pQRScV5C0zS+Qi50O5UAm8ecKhkXx6mWDDcF6/g==}
+ dependencies:
+ '@swc/helpers': 0.5.7
+ intl-messageformat: 10.5.11
+ dev: false
+
+ /@internationalized/number@3.5.1:
+ resolution: {integrity: sha512-N0fPU/nz15SwR9IbfJ5xaS9Ss/O5h1sVXMZf43vc9mxEG48ovglvvzBjF53aHlq20uoR6c+88CrIXipU/LSzwg==}
+ dependencies:
+ '@swc/helpers': 0.5.7
+ dev: false
+
+ /@internationalized/string@3.2.1:
+ resolution: {integrity: sha512-vWQOvRIauvFMzOO+h7QrdsJmtN1AXAFVcaLWP9AseRN2o7iHceZ6bIXhBD4teZl8i91A3gxKnWBlGgjCwU6MFQ==}
+ dependencies:
+ '@swc/helpers': 0.5.7
+ dev: false
+
/@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -1003,985 +1089,3225 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@nodelib/fs.scandir@2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- /@nodelib/fs.stat@2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
+ /@nextui-org/accordion@2.0.28(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-WzD7sscL+4K0TFyUutTn1AhU0wcS68TqNCTNv7KgON6ODdwieydilMxAyXvwo3RgXeWG+8BbdxJC/6W+/iLBTg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/divider': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-accordion': 2.0.2(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/button': 3.9.3(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tree': 3.7.6(react@18.2.0)
+ '@react-types/accordion': 3.0.0-alpha.17(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
- /@nodelib/fs.walk@1.2.8:
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
+ /@nextui-org/aria-utils@2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-4M4jeJ/ghGaia9064yS+mEZ3sFPH80onmjNGWJZkkZDmUV4R88lNkqe/XYBK1tbxfl4Kxa8jc/ALsZkUkkvR5w==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
+ '@nextui-org/react-rsc-utils': 2.0.10
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@nextui-org/theme'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/autocomplete@2.0.10(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-nQr8VC5RtpjnPef1qXgjNxRAw8JbN6q5qIFtsHWOCzvvn5jGAtdxkAkNE4C7DTvlMWZkIlEuR4DyAmFfY8CChQ==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/button': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/input': 2.1.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/listbox': 2.1.16(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/popover': 2.1.15(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/scroll-shadow': 2.1.13(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/spinner': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@react-aria/combobox': 3.8.4(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/combobox': 3.8.2(react@18.2.0)
+ '@react-types/combobox': 3.10.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ dev: false
- /@ocavue/svgmoji-cjs@0.1.1:
- resolution: {integrity: sha512-tCP6ggbtgIL4hPM5goVFSjL51jH/BLl/yBLy98wAV9a2L/Sn9iS3abfprPeQw6/nan5lLaz4Vz8ZP37LKh+xfQ==}
+ /@nextui-org/avatar@2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3QUn8v61iNvAYogUbEDVnhDjBK6WBxxFYLp95a0H52zN0p2LHXe+UNwdGZYFo5QNWx6CHGH3vh2AHlLLy3WFSQ==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- svgmoji: 3.2.0
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-image': 2.0.4(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
dev: false
- /@pkgjs/parseargs@0.11.0:
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
- requiresBuild: true
- optional: true
-
- /@polka/url@1.0.0-next.25:
- resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
- dev: true
-
- /@radix-ui/number@1.0.1:
- resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
+ /@nextui-org/badge@2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-FA3XgqEbyKWepMXqMZg7D+1IRf7flrb2LzFvTbkmsbvWQ4yYz1LqJXZ/HDmoCydvh2pOnc+1zPK3BpB7vGrrwA==}
+ peerDependencies:
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/breadcrumbs@2.0.4(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-SAE0+QRgA7vxUHPL65TKz3MRj7u2mbSwk8Eifkwo6hPcF0d34zv2QDupTGyphIjoGCSrQHFIq/CPAkXyaOXZxw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/breadcrumbs': 3.5.11(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/breadcrumbs': 3.7.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/primitive@1.0.1:
- resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
- dependencies:
- '@babel/runtime': 7.24.0
+ /@nextui-org/button@2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-oErzUr9KtE/qjUx4dSbalphxURssxGf9tv0mW++ZMkmVX1E6i887FwZb9xAVm9oBwYwR6+xpJaqjQLmt8aN/rQ==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/ripple': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/spinner': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@react-aria/button': 3.9.3(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/card@2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-16uAS0i6+EO+u8aqtmaCXatjovsyuTq51JwCLBlB67OldfgXoYcYl3GaE2VoZdEwxVu1G/qypDfXv29k46nZuA==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/ripple': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@react-aria/button': 3.9.3(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
- dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ /@nextui-org/checkbox@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-X6WkwPbZlDvioEcXF6HhKH21wD6OK+3+FSroKkzMPQLJrj2KYUIYGbiuw9rT9aCtdjbT+6HUCv+FA8/cBQr7cA==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/checkbox': 3.14.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/checkbox': 3.6.3(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
- dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ /@nextui-org/chip@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-hfVSaq5JWzGn97s3K2Ac/xOopHWelaUW3eus0O0wns/6+NCI0QUjgwNt2bAQSNvnE6vjvYLJTqGG/jFHyFJjOg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==}
+ /@nextui-org/code@2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-Kw/uOQtdytRWY99zMQuGHqMAAGXWBAxHlyMMge1OCckpadCDfX6plPjqoS18SGM0orJ4fox+a1FM8VhnRQ2kQw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
dev: false
- /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==}
+ /@nextui-org/divider@2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-yEvHqYlhNBwmF68pfjJKdzC8gVQtL+txxD5COBGF9uFyfxA5hVw2D6GmYgOH514bxrFBuWOLcQX6gyljgcN3bA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-rsc-utils': 2.0.10
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/dropdown@2.1.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-Hxmz1Yf/LjjOLqWRF49Q5ZYJtae6ydDEk1mv8oMKNmSWHi92lrgmHlwkGvR3mjczbRuF+WkXHLEhVZH6/tZQ7A==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/menu': 2.0.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/popover': 2.1.15(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/menu': 3.6.1(react@18.2.0)
+ '@react-types/menu': 3.9.7(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
dev: false
- /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==}
+ /@nextui-org/framer-transitions@2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-UlWMCAFdrq8wKrYFGwc+O4kFhKCkL4L9ZadBkP0PqjmfyAC2gA3ygRbNqtKhFMWeKbBAiC8qQ9aTBEA/+0r/EA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@nextui-org/theme'
+ - tailwind-variants
dev: false
- /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
+ /@nextui-org/image@2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-bps5D5ki7PoLldb8wcJEf6C4EUFZm3PocLytNaGa7dNxFfaCOD78So+kq+K+0IRusK3yn94K8r31qMvpI3Gg2Q==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-image': 2.0.4(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
+ /@nextui-org/input@2.1.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3FW3NDDbQOa5IlUCpO2Ma/XEjGnx4TQLM8MvMbskc+GNbZ0mtzfV0hCeQkqxxJ2lP4Mkp4QhwGRRkRrDu1G0Wg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/textfield': 3.14.3(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/textfield': 3.9.1(react@18.2.0)
react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-textarea-autosize: 8.5.3(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
dev: false
- /@radix-ui/react-context@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
+ /@nextui-org/kbd@2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-cYwbEjp/+/tjtOdmiRy2UHjfBhP3bqd5e+JFTa5sY1HotckUZrCintATyBcg9bPa3iSPUI44M6Cb9e0oAUUeMA==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/link@2.0.26(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-X8zX3U5MWfiStOCd45oIZ2YKZG0GoUio6PcMFYjpOPsEG7wV58CuhUSxpyx3QTF8JavVSO/p/cl4Pc9pukVDUg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-link': 2.0.15(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/link': 3.6.5(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/link': 3.5.3(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
- dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
- aria-hidden: 1.2.3
+ /@nextui-org/listbox@2.1.16(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-5PmUCoHFgAr+1nAU3IlqPFTgyHo7zsTcNeja4wcErD/KseCF2h7Uk5OqUX5hQDN9B9fZuGjPrkG4yoK/6pqcUQ==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/divider': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@nextui-org/use-is-mobile': 2.0.6(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-types/menu': 3.9.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/menu@2.0.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-qr/BPDbBvg5tpAZZLkLx8eNnvYwJYM3Q72fmRYbzwmG3upNtdjln0QYxSwPXUz7RYqTKEFWc9JPxq2pgPM15Wg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/divider': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@nextui-org/use-is-mobile': 2.0.6(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/menu': 3.6.1(react@18.2.0)
+ '@react-stately/tree': 3.7.6(react@18.2.0)
+ '@react-types/menu': 3.9.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/modal@2.0.29(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-C/pvw0fAPWKbfMoGfIVZWhMRbe+DRGEg7GqPVY7EmW4FSSIK7Sfdn6Jxm+sSv+a7xHpDr86nirFbvN3S4jCaHw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@nextui-org/use-aria-modal-overlay': 2.0.6(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/use-disclosure': 2.0.6(react@18.2.0)
+ '@react-aria/dialog': 3.5.12(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.9(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/navbar@2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-iP4Pn4ItQkAW1nbu1Jmrh5l9pMVG43lDxq9rbx6DbLjLnnZOOrE6fURb8uN5NVy3ooV5dF02zKAoxlkE5fN/xw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-toggle-button': 2.0.6(react@18.2.0)
+ '@nextui-org/use-scroll-position': 2.0.4(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.9(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/pagination@2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-v1tSsb0Q863/gKVUxuN7FcE1TZWuvcbWZOrWjKe0/llRgfZ23/4KD1AmFyYuKo5RDFt+i1JWSfzAu08j0Hzzqg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@nextui-org/use-pagination': 2.0.5(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ scroll-into-view-if-needed: 3.0.10
+ dev: false
+
+ /@nextui-org/popover@2.1.15(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-FQ66y49sQvXvyDrEsEFAC0qfpl2X+5ZPGaVXdNd3Cjox/jxAxp93cSUkk0iOfYvdsbO5zVFjuM0L3Dqn4hsHMw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/button': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@nextui-org/use-safe-layout-effect': 2.0.4(react@18.2.0)
+ '@react-aria/dialog': 3.5.12(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.9(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/progress@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-EFVxwT0CXq+2scPLhKKRHkWb6xNa6Vjx+HdgSg3l4lgAxAUryvdfksjW8vjxn6x4I2rGbdzAYPEu27p2KaK7jg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-is-mounted': 2.0.4(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/progress': 3.4.11(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/progress': 3.5.2(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
dev: false
- /@radix-ui/react-direction@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==}
+ /@nextui-org/radio@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-vRX0ppM5Tlzu0HoqTG6LdmQnMjk8RRl66BH1+QaosvZRXA1iIdA3BduqQYqn5ZZHBBlJ2u9QzaD3lTAlWIHvNg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/radio': 3.10.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/radio': 3.10.2(react@18.2.0)
+ '@react-types/radio': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@nextui-org/react-rsc-utils@2.0.10:
+ resolution: {integrity: sha512-LNePDEThUF9PAbJW4T8k7EgSfqwlvGku5fIqJ1IA9+OpVy5LqhrUQehjvgXe63N1RupC7Pt+XvaaxkGu9U2FiQ==}
+ dev: false
+
+ /@nextui-org/react-utils@2.0.10(react@18.2.0):
+ resolution: {integrity: sha512-bcA+k7ZdcgcK+r/8nrCtbdgHo0SD6jicbazWIokknFwjb97JQ7ooaMwxnLt5E5sswCAv0XeLwybOmrgm7JA5TA==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
+ '@nextui-org/react-rsc-utils': 2.0.10
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
+ /@nextui-org/react@2.2.10(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-YJhUIeLnO/FGDbZgfeWEz32RBrH2YFA1qsJQtMF7mza8rjspX/CkankvI7xs1o6sW/TYLSTq7sOF9RGMxLTIAA==}
+ peerDependencies:
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/accordion': 2.0.28(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/autocomplete': 2.0.10(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/avatar': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/badge': 2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/breadcrumbs': 2.0.4(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/button': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/card': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/checkbox': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/chip': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/code': 2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/divider': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/dropdown': 2.1.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/image': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/input': 2.1.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/kbd': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/link': 2.0.26(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/listbox': 2.1.16(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/menu': 2.0.17(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/modal': 2.0.29(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/navbar': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/pagination': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/popover': 2.1.15(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/progress': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/radio': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/ripple': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/scroll-shadow': 2.1.13(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/select': 2.1.21(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/skeleton': 2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/slider': 2.2.6(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/snippet': 2.0.31(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/spacer': 2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/spinner': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/switch': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/table': 2.0.28(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/tabs': 2.0.26(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/tooltip': 2.0.30(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/user': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ - tailwindcss
+ dev: false
+
+ /@nextui-org/ripple@2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-PCvAk9ErhmPX46VRmhsg8yMxw3Qd9LY7BDkRRfIF8KftgRDyOpG2vV8DxvSOxQu1/aqBWkkHNUuEjM/EvSEung==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
+ /@nextui-org/scroll-shadow@2.1.13(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-hFoVGplGMWuE+KXRz9gtKRq3e0YYkxutrqjDD0BiDHk4WkiyOrTnNuE6wnJTnd6Hd+kavLPBDu2+yGauDb7/Qg==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-data-scroll-overflow': 2.1.3(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
+ /@nextui-org/select@2.1.21(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-BVfmxIsZTL6dBiZ1Q5RbAnqiNpVnaJgWi0M1QMV448FHMaDHLTWtNOJPMD0QyxHRNPfDgFrqEAq6a1+pA26ckQ==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/listbox': 2.1.16(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/popover': 2.1.15(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(@types/react@18.2.64)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/scroll-shadow': 2.1.13(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/spinner': 2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@nextui-org/use-aria-multiselect': 2.1.4(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/shared-icons@2.0.6(react@18.2.0):
+ resolution: {integrity: sha512-Mw5utPJAclFaeKAZowznEgabI5gdhXrW0iMaMA18Y4zcZRTidAc0WFeGYUlX876NxYLPc1Zk4bZUhQvMe+7uWg==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
react: 18.2.0
dev: false
- /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
+ /@nextui-org/shared-utils@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-Ms7A6UCvo/SZt/9Nmb7cZwHe9fZFw+EPsieTnC1vtpvDNCasxrTB0hj9VWFoYfWOaCzzqxl1AL9maIz/gMvckQ==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-icons@1.3.0(react@18.2.0):
- resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
+ /@nextui-org/skeleton@2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-bsb+lYugSfQV3RHrEHLbHhkkeslaxybnnT4z485Y/GBYTENOiHIOnWFWntfxCbjZ6vCewGlfgnphj6zeqlk20g==}
peerDependencies:
- react: ^16.x || ^17.x || ^18.x
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/slider@2.2.6(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-adCjQ8k4bUwWcvmOJUki3+UVsCz4ms+qLG4jnY2wClPdQAwISMbZzQsuv3km+1HIZE5Ja7jzeeT/dMd8l3n+bg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/tooltip': 2.0.30(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/slider': 3.7.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/slider': 3.5.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - framer-motion
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/snippet@2.0.31(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-WooH5cqlHoa6SqUhzseKY7g1ah8kzSv382u95Or9kIgSirEZCrjygup3nFeKTMAe01NZoAz3OOYO7XNFWJ57vA==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/button': 2.0.27(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/tooltip': 2.0.30(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/use-clipboard': 2.0.4(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
dev: false
- /@radix-ui/react-id@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
+ /@nextui-org/spacer@2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-bLnhPRnoyHQXhLneHjbRqZNxJWMFOBYOZkuX83uy59/FFUY07BcoNsb2s80tN3GoVxsaZ2jB6NxxVbaCJwoPog==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
dev: false
- /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==}
+ /@nextui-org/spinner@2.0.25(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-s2iqaB71sanRxglJtG4UZF+Rz/W6UxnYegbkhnkkljH20vhOcrhwm5jKGStq8jkata8UZ0ajS67H8KY8lHV8nw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/switch@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-U7g68eReMSkgG0bBOSdzRLK+npv422YK6WYHpYOSkEBDqGwQ7LCeMRQreT/KxN0QFxIKmafebdLHAbuKc/X+5Q==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/switch': 3.6.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
+ /@nextui-org/system-rsc@2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-1QqZ+GM7Ii0rsfSHXS6BBjzKOoLIWwb72nm4h4WgjlMXbRKLZcCQasRHVe5HMSBMvN0JUo7qyGExchfDFl/Ubw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ tailwind-variants: '>=0.1.13'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
- aria-hidden: 1.2.3
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ clsx: 1.2.1
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ tailwind-variants: 0.2.1(tailwindcss@3.4.1)
dev: false
- /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==}
+ /@nextui-org/system@2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-WFDq+Rx6D+gmK1YGEG2RBARPK9EOYonQDt5Tq2tUchzOOqj3kXXcM5Z0F3fudM59eIncLa/tX/ApJSTLry+hsw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: '>=18'
+ react-dom: '>=18'
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
- aria-hidden: 1.2.3
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.18)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@nextui-org/theme'
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/table@2.0.28(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-qH/7jdV5+tiMDDvBfMrUZN4jamds0FsL5Ak+ighoKIUYRFTSXOroi+63ZzzAh/mZAsUALCPPcfbXt4r4aBFDzg==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/checkbox': 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-icons': 2.0.6(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/spacer': 2.0.24(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/table': 3.13.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/table': 3.11.6(react@18.2.0)
+ '@react-stately/virtualizer': 3.6.8(react@18.2.0)
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/table': 3.9.3(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/tabs@2.0.26(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-GjERgBYUAY1KD4GqNVy0cRi6GyQnf62q0ddcN4je3sEM6rsq3PygEXhkN5pxxFPacoYM/UE6rBswHSKlbjJjgw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-is-mounted': 2.0.4(react@18.2.0)
+ '@nextui-org/use-update-effect': 2.0.4(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/tabs': 3.8.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tabs': 3.6.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/tabs': 3.3.5(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ scroll-into-view-if-needed: 3.0.10
+ transitivePeerDependencies:
+ - tailwind-variants
dev: false
- /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
+ /@nextui-org/theme@2.1.18(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-2ptDh350lVD0yejZTpGv4fkeoGKB8+B/Coblzpjijfofn/t6MQIRIRRLp04wCCa/IbeevjS2wyadWpMDtVh3CQ==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
+ tailwindcss: '*'
+ dependencies:
+ color: 4.2.3
+ color2k: 2.0.3
+ deepmerge: 4.3.1
+ flat: 5.0.2
+ lodash.foreach: 4.5.0
+ lodash.get: 4.4.2
+ lodash.kebabcase: 4.1.1
+ lodash.mapkeys: 4.6.0
+ lodash.omit: 4.5.0
+ tailwind-variants: 0.1.20(tailwindcss@3.4.1)
+ tailwindcss: 3.4.1
+ dev: false
+
+ /@nextui-org/tooltip@2.0.30(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1):
+ resolution: {integrity: sha512-V3N9o/oNU1Y11etiilrlqt5dF4/o9eJSttgN2CPo8eRAPc96+sRpdGPGX3XcLJZNFRcNx8BkD/bcEUcrDdjmRA==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/aria-utils': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/framer-transitions': 2.0.15(@nextui-org/theme@2.1.18)(framer-motion@11.0.22)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@nextui-org/use-safe-layout-effect': 2.0.4(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/tooltip': 3.7.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tooltip': 3.4.7(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/tooltip': 3.4.7(react@18.2.0)
+ framer-motion: 11.0.22(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
+ /@nextui-org/use-aria-accordion@2.0.2(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-ebYr4CdvWifuTM/yyhQLKCa7aUqbVrWyR0SB6VNCGDID/kvRUW52puWnY9k24xdwY0cKbW3JRciKtQkrokRQwg==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@react-aria/button': 3.9.3(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tree': 3.7.6(react@18.2.0)
+ '@react-types/accordion': 3.0.0-alpha.17(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ transitivePeerDependencies:
+ - react-dom
+ dev: false
+
+ /@nextui-org/use-aria-button@2.0.6(react@18.2.0):
+ resolution: {integrity: sha512-38DZ3FK/oPZ3sppfM5EtgJ4DITOajNwSKkAMePBmuSZl+bsW7peP8g5JNd9uPOEz3edCOppT60AQSICsYiH3cg==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-aria-link@2.0.15(react@18.2.0):
+ resolution: {integrity: sha512-znzOeTZ10o3O5F2nihi8BR8rAhRHgrRWcEBovV7OqJeFzvTQwsHl9/xy45zBfwJQksBtfcBfQf+GEHXeDwfigA==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-aria-press': 2.0.1(react@18.2.0)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/link': 3.5.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-aria-modal-overlay@2.0.6(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-JfhXvH2RObWpHeLmxdIBDPF2SDzV4SqBvEh01yRvg/EuZ3HDRfCnTDh+5HD0ziUVdk/kWuy/hZLX59sMX7QHWA==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@nextui-org/use-aria-multiselect@2.1.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-F95sF4eY5TLkom5tIMb+eoT4i0Cc4qygnQRqIosg8OryDbH62/MV4x88GjQsgDCY8dNeWCNVodHXxaWmVSAgyQ==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-stately/menu': 3.6.1(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/select': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@nextui-org/use-aria-press@2.0.1(react@18.2.0):
+ resolution: {integrity: sha512-T3MjHH5TU9qnkf872GmhcfQK16ITMmMW9zir6xsSsz0w6ay9Y0XTSPrI2zRL6ociFyfJjP840XCLtSx6VBfEBQ==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-aria-toggle-button@2.0.6(react@18.2.0):
+ resolution: {integrity: sha512-6Sjp7a0HQjmboLKNZu9AtZmyHz8+vhqcDwJDYTZjrrna0udxEXG+6C14YZzQxoJcvuaMimr5E8Aq0AxyRAr0MQ==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-callback-ref@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-GF50SzOFU/R0gQT1TmjbEUiS8CQ87qiV5Rp/TD5pqys1xprVgGLUUNQzlh+YDS2JHNu5FGlZc4sJKhtf2xF5aw==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-safe-layout-effect': 2.0.4(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-clipboard@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-rMcaX0QsolOJ1BQbp1T/FVsSPn2m0Ss4Z+bbdS7eM6EFKtJdVJWlpbrST0/kR2UcW1KWeK27NYmtNPF5+hgZMA==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-data-scroll-overflow@2.1.3(react@18.2.0):
+ resolution: {integrity: sha512-f4rDr4MHGQTyqTd6L4MpKAcKfPDiVeWfYXXXX6gdN8UVTk+PzW675Fe+l7ATBgmaVTn1AEPJwW9dDUJcDpn21g==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-disclosure@2.0.6(react@18.2.0):
+ resolution: {integrity: sha512-pazzLsAGKjUD4cMVySTivItmIgpsfIf4baP/02K0Xc8tbFAH4K1n7cUnEEjs+MTXy1Bprvz3pfAHDGZRDI1yYg==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-callback-ref': 2.0.4(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-image@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-tomOkrhlhTA45qA/MLh1YmiWVGgJ2KeM0qBSLP1ikVcppc/e9UtkIJjHIGdNCnHZTjoPEh53HzyJeUMlYUM9uw==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/use-safe-layout-effect': 2.0.4(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-is-mobile@2.0.6(react@18.2.0):
+ resolution: {integrity: sha512-HeglWUoq6Ln8P5n6s1SZvBRatLYMKsiXQM7Mk2l+6jFByzZh3VWtZ05xmuX8te/1rGmeUxjeXtW6x+F7/f/JoA==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-is-mounted@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-NSQwQjg8+k02GVov9cDwtAdop1Cr90eDgB0MAdvu7QCMgfBZjy88IdQnx3Yo7bG4wP45xC0vLjqDBanaK+11hw==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-pagination@2.0.5(react@18.2.0):
+ resolution: {integrity: sha512-wH0sC85XeTPPE4zRq0ycAVB+SpmPEiSmTEGxpBG2sqiJlsrNfEeXvTKf73INXM4IWfP53ONAQ7Nd1T7EVuYSkw==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-safe-layout-effect@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-K7ppEhTfzdVOzbgKaNFEBi4HwRfQ8j+kRBQqsU5yo8bSM+5uv8OUy/mjpEf4i02PUDIBmsgJC4En9S537DXrwg==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-scroll-position@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-5ugiHqQ1OptBmujOsJGigbUt/rQ826+8RKYSpBp1uax1eF7TlpigXt6mS1PDsJIyEauHi8rjH5B3weOn1//tug==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/use-update-effect@2.0.4(react@18.2.0):
+ resolution: {integrity: sha512-HycSl9Eopmy3ypZQxXVR7eov2D0q0zcgldgbIPvlKExbj8OInaIImc9zLMI9oQgfmg/YdvLeFSrfwc5BPrIvlg==}
+ peerDependencies:
+ react: '>=18'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@nextui-org/user@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Ykh65O0ynJBlstlZowM8KrX6zv/VLfDgYX892Dk0goLwU8gcSILPZE7yGIBZi1XsNN7mE3dmTp/APLFDbkzzXw==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/avatar': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.18)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.2.1)
+ '@nextui-org/theme': 2.1.18(tailwindcss@3.4.1)
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ /@nodelib/fs.stat@2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ /@nodelib/fs.walk@1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ /@ocavue/svgmoji-cjs@0.1.1:
+ resolution: {integrity: sha512-tCP6ggbtgIL4hPM5goVFSjL51jH/BLl/yBLy98wAV9a2L/Sn9iS3abfprPeQw6/nan5lLaz4Vz8ZP37LKh+xfQ==}
+ dependencies:
+ svgmoji: 3.2.0
+ dev: false
+
+ /@pkgjs/parseargs@0.11.0:
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ optional: true
+
+ /@polka/url@1.0.0-next.25:
+ resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+ dev: true
+
+ /@radix-ui/number@1.0.1:
+ resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ dev: false
+
+ /@radix-ui/primitive@1.0.1:
+ resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ dev: false
+
+ /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
optional: true
dependencies:
'@babel/runtime': 7.24.0
- '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
'@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/rect': 1.0.1
'@types/react': 18.2.64
'@types/react-dom': 18.2.21
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-context@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ aria-hidden: 1.2.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-direction@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-icons@1.3.0(react@18.2.0):
+ resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
+ peerDependencies:
+ react: ^16.x || ^17.x || ^18.x
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-id@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ aria-hidden: 1.2.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ aria-hidden: 1.2.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/number': 1.0.1
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/number': 1.0.1
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ aria-hidden: 1.2.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-slot@1.0.2(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-size@1.0.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.64
+ '@types/react-dom': 18.2.21
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/rect@1.0.1:
+ resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ dev: false
+
+ /@react-aria/breadcrumbs@3.5.11(react@18.2.0):
+ resolution: {integrity: sha512-bQz4g2tKvcWxeqPGj9O0RQf++Ka8f2o/pJMJB+QQ27DVQWhxpQpND//oFku2aFYkxHB/fyD9qVoiqpQR25bidw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/link': 3.6.5(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/breadcrumbs': 3.7.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/button@3.9.3(react@18.2.0):
+ resolution: {integrity: sha512-ZXo2VGTxfbaTEnfeIlm5ym4vYpGAy8sGrad8Scv+EyDAJWLMKokqctfaN6YSWbqUApC3FN63IvMqASflbmnYig==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/checkbox@3.14.1(react@18.2.0):
+ resolution: {integrity: sha512-b4rtrg5SpRSa9jBOqzJMmprJ+jDi3KyVvUh+DsvISe5Ti7gVAhMBgnca1D0xBp22w2jhk/o4gyu1bYxGLum0GA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/form': 3.0.3(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/toggle': 3.10.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/checkbox': 3.6.3(react@18.2.0)
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/combobox@3.8.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-HyTWIo2B/0xq0Of+sDEZCfJyf4BvCvDYIWG4UhjqL1kHIHIGQyyr+SldbVUjXVYnk8pP1eGB3ttiREujjjALPQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/live-announcer': 3.3.2
+ '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/textfield': 3.14.3(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/combobox': 3.8.2(react@18.2.0)
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/combobox': 3.10.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/dialog@3.5.12(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-7UJR/h/Y364u6Ltpw0bT51B48FybTuIBacGpEJN5IxZlpxvQt0KQcBDiOWfAa/GQogw4B5hH6agaOO0nJcP49Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/dialog': 3.5.8(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/focus@3.16.2(react@18.2.0):
+ resolution: {integrity: sha512-Rqo9ummmgotESfypzFjI3uh58yMpL+E+lJBbQuXkBM0u0cU2YYzu0uOrFrq3zcHk997udZvq1pGK/R+2xk9B7g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ clsx: 2.1.0
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/form@3.0.3(react@18.2.0):
+ resolution: {integrity: sha512-5Q2BHE4TTPDzGY2npCzpRRYshwWUb3SMUA/Cbz7QfEtBk+NYuVaq3KjvqLqgUUdyKtqLZ9Far0kIAexloOC4jw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/grid@3.8.8(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-7Bzbya4tO0oIgqexwRb8D6ZdC0GASYq9f/pnkrqocgvG9e1SCld4zOioKbYQDvAK/NnbCgXmmdqFAcLM/iazaA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/live-announcer': 3.3.2
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/grid': 3.8.5(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-stately/virtualizer': 3.6.8(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/i18n@3.10.2(react@18.2.0):
+ resolution: {integrity: sha512-Z1ormoIvMOI4mEdcFLYsoJy9w/EzBdBmgfLP+S/Ah+1xwQOXpgwZxiKOhYHpWa0lf6hkKJL34N9MHJvCJ5Crvw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@internationalized/date': 3.5.2
+ '@internationalized/message': 3.1.2
+ '@internationalized/number': 3.5.1
+ '@internationalized/string': 3.2.1
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/interactions@3.21.1(react@18.2.0):
+ resolution: {integrity: sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/label@3.7.6(react@18.2.0):
+ resolution: {integrity: sha512-ap9iFS+6RUOqeW/F2JoNpERqMn1PvVIo3tTMrJ1TY1tIwyJOxdCBRgx9yjnPBnr+Ywguep+fkPNNi/m74+tXVQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/link@3.6.5(react@18.2.0):
+ resolution: {integrity: sha512-kg8CxKqkciQFzODvLAfxEs8gbqNXFZCW/ISOE2LHYKbh9pA144LVo71qO3SPeYVVzIjmZeW4vEMdZwqkNozecw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/link': 3.5.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/listbox@3.11.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-y3a3zQYjT+JKgugCMMKS7K9sRoCoP1Z6Fiiyfd77OHXWzh9RlnvWGsseljynmbxLzSuPwFtCYkU1Jz4QwsPUIg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-types/listbox': 3.4.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/live-announcer@3.3.2:
+ resolution: {integrity: sha512-aOyPcsfyY9tLCBhuUaYCruwcd1IrYLc47Ou+J7wMzjeN9v4lsaEfiN12WFl8pDqOwfy6/7It2wmlm5hOuZY8wQ==}
+ dependencies:
+ '@swc/helpers': 0.5.7
+ dev: false
+
+ /@react-aria/menu@3.13.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-jF80YIcvD16Fgwm5pj7ViUE3Dj7z5iewQixLaFVdvpgfyE58SD/ZVU9/JkK5g/03DYM0sjpUKZGkdFxxw8eKnw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/menu': 3.6.1(react@18.2.0)
+ '@react-stately/tree': 3.7.6(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/menu': 3.9.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/overlays@3.21.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-djEBDF+TbIIOHWWNpdm19+z8xtY8U+T+wKVQg/UZ6oWnclSqSWeGl70vu73Cg4HVBJ4hKf1SRx4Z/RN6VvH4Yw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/button': 3.9.2(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/progress@3.4.11(react@18.2.0):
+ resolution: {integrity: sha512-RePHbS15/KYFiApYLdwazwvWKsB9q0Kn5DGCSb0hqCC+k2Eui8iVVOsegswiP+xqkk/TiUCIkBEw22W3Az4kTg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/progress': 3.5.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/radio@3.10.2(react@18.2.0):
+ resolution: {integrity: sha512-CTUTR+qt3BLjmyQvKHZuVm+1kyvT72ZptOty++sowKXgJApTLdjq8so1IpaLAr8JIfzqD5I4tovsYwIQOX8log==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/form': 3.0.3(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/radio': 3.10.2(react@18.2.0)
+ '@react-types/radio': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/selection@3.17.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-gO5jBUkc7WdkiFMlWt3x9pTSuj3Yeegsxfo44qU5NPlKrnGtPRZDWrlACNgkDHu645RNNPhlyoX0C+G8mUg1xA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/slider@3.7.6(react@18.2.0):
+ resolution: {integrity: sha512-ZeZhyHzhk9gxGuThPKgX2K3RKsxPxsFig1iYoJvqP8485NtHYQIPht2YcpEKA9siLxGF0DR9VCfouVhSoW0AEA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/slider': 3.5.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/slider': 3.7.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/ssr@3.9.2(react@18.2.0):
+ resolution: {integrity: sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/switch@3.6.2(react@18.2.0):
+ resolution: {integrity: sha512-X5m/omyhXK+V/vhJFsHuRs2zmt9Asa/RuzlldbXnWohLdeuHMPgQnV8C9hg3f+sRi3sh9UUZ64H61pCtRoZNwg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/toggle': 3.10.2(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/switch': 3.5.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/table@3.13.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-P2nHEDk2CCoEbMFKNCyBC9qvmv7F/IXARDt/7z/J4mKFgU2iNSK+/zw6yrb38q33Zlk8hDaqSYNxHlMrh+/1MQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/grid': 3.8.8(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/live-announcer': 3.3.2
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-aria/visually-hidden': 3.8.10(react@18.2.0)
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/flags': 3.0.1
+ '@react-stately/table': 3.11.6(react@18.2.0)
+ '@react-stately/virtualizer': 3.6.8(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/table': 3.9.3(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/tabs@3.8.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Jvt33/W+66n5oCxVwHAYarJ3Fit61vULiPcG7uTez0Mf11cq/C72wOrj+ZuNz6PTLTi2veBNQ7MauY72SnOjRg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/i18n': 3.10.2(react@18.2.0)
+ '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tabs': 3.6.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/tabs': 3.3.5(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@react-aria/textfield@3.14.3(react@18.2.0):
+ resolution: {integrity: sha512-wPSjj/mTABspYQdahg+l5YMtEQ3m5iPCTtb5g6nR1U1rzJkvS4i5Pug6PUXeLeMz2H3ToflPWGlNOqBioAFaOQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/form': 3.0.3(react@18.2.0)
+ '@react-aria/label': 3.7.6(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/textfield': 3.9.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/toggle@3.10.2(react@18.2.0):
+ resolution: {integrity: sha512-DgitscHWgI6IFgnvp2HcMpLGX/cAn+XX9kF5RJQbRQ9NqUgruU5cEEGSOLMrEJ6zXDa2xmOiQ+kINcyNhA+JLg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/toggle': 3.7.2(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/tooltip@3.7.2(react@18.2.0):
+ resolution: {integrity: sha512-6jXOSGPao3gPgUQWLbH2r/jxGMqIaIKrJgfwu9TQrh+UkwwiTYW20EpEDCYY2nRFlcoi7EYAiPDSEbHCwXS7Lg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/focus': 3.16.2(react@18.2.0)
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-stately/tooltip': 3.4.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/tooltip': 3.4.7(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/utils@3.23.2(react@18.2.0):
+ resolution: {integrity: sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ clsx: 2.1.0
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/visually-hidden@3.8.10(react@18.2.0):
+ resolution: {integrity: sha512-np8c4wxdbE7ZrMv/bnjwEfpX0/nkWy9sELEb0sK8n4+HJ+WycoXXrVxBUb9tXgL/GCx5ReeDQChjQWwajm/z3A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/interactions': 3.21.1(react@18.2.0)
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-hook/media-query@1.1.1(react@18.2.0):
+ resolution: {integrity: sha512-VM14wDOX5CW5Dn6b2lTiMd79BFMTut9AZj2+vIRT3LCKgMCYmdqruTtzDPSnIVDQdtxdPgtOzvU9oK20LopuOw==}
+ peerDependencies:
+ react: '>=16.8'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/checkbox@3.6.3(react@18.2.0):
+ resolution: {integrity: sha512-hWp0GXVbMI4sS2NbBjWgOnHNrRqSV4jeftP8zc5JsIYRmrWBUZitxluB34QuVPzrBO29bGsF0GTArSiQZt6BWw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/collections@3.10.5(react@18.2.0):
+ resolution: {integrity: sha512-k8Q29Nnvb7iAia1QvTanZsrWP2aqVNBy/1SlE6kLL6vDqtKZC+Esd1SDLHRmIcYIp5aTdfwIGd0NuiRQA7a81Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/combobox@3.8.2(react@18.2.0):
+ resolution: {integrity: sha512-f+IHuFW848VoMbvTfSakn2WIh2urDxO355LrKxnisXPCkpQHpq3lvT2mJtKJwkPxjAy7xPjpV8ejgga2R6p53Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-stately/select': 3.6.2(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/combobox': 3.10.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/flags@3.0.1:
+ resolution: {integrity: sha512-h5PcDMj54aipQNO18ig/IMI1kzPwcvSwVq5M6Ib6XE1WIkOH0dIuW2eADdAOhcGi3KXJtXVdD29zh0Eox1TKgQ==}
+ dependencies:
+ '@swc/helpers': 0.4.36
+ dev: false
+
+ /@react-stately/form@3.0.1(react@18.2.0):
+ resolution: {integrity: sha512-T1Ul2Ou0uE/S4ECLcGKa0OfXjffdjEHfUFZAk7OZl0Mqq/F7dl5WpoLWJ4d4IyvZzGO6anFNenP+vODWbrF3NA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/grid@3.8.5(react@18.2.0):
+ resolution: {integrity: sha512-KCzi0x0p1ZKK+OptonvJqMbn6Vlgo6GfOIlgcDd0dNYDP8TJ+3QFJAFre5mCr7Fubx7LcAOio4Rij0l/R8fkXQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/list@3.10.3(react@18.2.0):
+ resolution: {integrity: sha512-Ul8el0tQy2Ucl3qMQ0fiqdJ874W1ZNjURVSgSxN+pGwVLNBVRjd6Fl7YwZFCXER2YOlzkwg+Zqozf/ZlS0EdXA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/menu@3.6.1(react@18.2.0):
+ resolution: {integrity: sha512-3v0vkTm/kInuuG8jG7jbxXDBnMQcoDZKWvYsBQq7+POt0LmijbLdbdZPBoz9TkZ3eo/OoP194LLHOaFTQyHhlw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/menu': 3.9.7(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/overlays@3.6.5(react@18.2.0):
+ resolution: {integrity: sha512-U4rCFj6TPJPXLUvYXAcvh+yP/CO2W+7f0IuqP7ZZGE+Osk9qFkT+zRK5/6ayhBDFpmueNfjIEAzT9gYPQwNHFw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/radio@3.10.2(react@18.2.0):
+ resolution: {integrity: sha512-JW5ZWiNMKcZvMTsuPeWJQLHXD5rlqy7Qk6fwUx/ZgeibvMBW/NnW19mm2+IMinzmbtERXvR6nsiA837qI+4dew==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/radio': 3.7.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/select@3.6.2(react@18.2.0):
+ resolution: {integrity: sha512-duOxdHKol93h6Ew6fap6Amz+zngoERKZLSKVm/8I8uaBgkoBhEeTFv7mlpHTgINxymMw3mMrvy6GL/gfKFwkqg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/form': 3.0.1(react@18.2.0)
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/select': 3.9.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/selection@3.14.3(react@18.2.0):
+ resolution: {integrity: sha512-d/t0rIWieqQ7wjLoMoWnuHEUSMoVXxkPBFuSlJF3F16289FiQ+b8aeKFDzFTYN7fFD8rkZTnpuE4Tcxg3TmA+w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/slider@3.5.2(react@18.2.0):
+ resolution: {integrity: sha512-ntH3NLRG+AwVC7q4Dx9DcmMkMh9vmHjHNXAgaoqNjhvwfSIae7sQ69CkVe6XeJjIBy6LlH81Kgapz+ABe5a1ZA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/slider': 3.7.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/table@3.11.6(react@18.2.0):
+ resolution: {integrity: sha512-34YsfOILXusj3p6QNcKEaDWVORhM6WEhwPSLCZlkwAJvkxuRQFdih5rQKoIDc0uV5aZsB6bYBqiFhnjY0VERhw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/flags': 3.0.1
+ '@react-stately/grid': 3.8.5(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/table': 3.9.3(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/tabs@3.6.4(react@18.2.0):
+ resolution: {integrity: sha512-WZJgMBqzLgN88RN8AxhY4aH1+I+4w1qQA0Lh3LRSDegaytd+NHixCWaP3IPjePgCB5N1UsPe96Xglw75zjHmDg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/list': 3.10.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@react-types/tabs': 3.3.5(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/toggle@3.7.2(react@18.2.0):
+ resolution: {integrity: sha512-SHCF2btcoK57c4lyhucRbyPBAFpp0Pdp0vcPdn3hUgqbu6e5gE0CwG/mgFmZRAQoc7PRc7XifL0uNw8diJJI0Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/checkbox': 3.7.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/tooltip@3.4.7(react@18.2.0):
+ resolution: {integrity: sha512-ACtRgBQ8rphBtsUaaxvEAM0HHN9PvMuyvL0vUHd7jvBDCVZJ6it1BKu9SBKjekBkoBOw9nemtkplh9R2CA6V8Q==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-stately/overlays': 3.6.5(react@18.2.0)
+ '@react-types/tooltip': 3.4.7(react@18.2.0)
+ '@swc/helpers': 0.5.7
+ react: 18.2.0
dev: false
- /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
+ /@react-stately/tree@3.7.6(react@18.2.0):
+ resolution: {integrity: sha512-y8KvEoZX6+YvqjNCVGS3zA/BKw4D3XrUtUKIDme3gu5Mn6z97u+hUXKdXVCniZR7yvV3fHAIXwE5V2K8Oit4aw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-stately/collections': 3.10.5(react@18.2.0)
+ '@react-stately/selection': 3.14.3(react@18.2.0)
+ '@react-stately/utils': 3.9.1(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
+ /@react-stately/utils@3.9.1(react@18.2.0):
+ resolution: {integrity: sha512-yzw75GE0iUWiyps02BOAPTrybcsMIxEJlzXqtvllAb01O9uX5n0i3X+u2eCpj2UoDF4zS08Ps0jPgWxg8xEYtA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@swc/helpers': 0.5.7
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
+ /@react-stately/virtualizer@3.6.8(react@18.2.0):
+ resolution: {integrity: sha512-Pf06ihTwExRJltGhi72tmLIo0pcjkL55nu7ifMafAAdxZK4ONxRLSuUjjpvYf/0Rs92xRZy2t/XmHREnfirdkQ==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-aria/utils': 3.23.2(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ '@swc/helpers': 0.5.7
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==}
+ /@react-types/accordion@3.0.0-alpha.17(react@18.2.0):
+ resolution: {integrity: sha512-Wsp31bYRu9wy4zAAV2W8FLvVGFF3Vk/JKn2MxqhzaSHwHBw/dfgJTvRRUW+OmBgnqVN97ur893TP9A3odpoZEg==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
+ /@react-types/breadcrumbs@3.7.3(react@18.2.0):
+ resolution: {integrity: sha512-eFto/+6J+JR58vThNcALZRA1OlqlG3GzQ/bq3q8IrrkOZcrfbEJJCWit/+53Ia98siJKuF4OJHnotxIVIz5I3w==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/link': 3.5.3(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==}
+ /@react-types/button@3.9.2(react@18.2.0):
+ resolution: {integrity: sha512-EnPTkGHZRtiwAoJy5q9lDjoG30bEzA/qnvKG29VVXKYAGeqY2IlFs1ypmU+z1X/CpJgPcG3I5cakM7yTVm3pSg==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/number': 1.0.1
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==}
+ /@react-types/checkbox@3.7.1(react@18.2.0):
+ resolution: {integrity: sha512-kuGqjQFex0As/3gfWyk+e9njCcad/ZdnYLLiNvhlk15730xfa0MmnOdpqo9jfuFSXBjOcpxoofvEhvrRMtEdUA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/number': 1.0.1
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
- aria-hidden: 1.2.3
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
- react-remove-scroll: 2.5.5(@types/react@18.2.64)(react@18.2.0)
dev: false
- /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==}
+ /@react-types/combobox@3.10.1(react@18.2.0):
+ resolution: {integrity: sha512-XMno1rgVRNta49vf5nV7VJpVSVAV20tt79t618gG1qRKH5Kt2Cy8lz2fQ5vHG6UTv/6jUOvU8g5Pc93sLaTmoA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-slot@1.0.2(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
+ /@react-types/dialog@3.5.8(react@18.2.0):
+ resolution: {integrity: sha512-RX8JsMvty8ADHRqVEkppoynXLtN4IzUh8d5z88UEBbcvWKlHfd6bOBQjQcBH3AUue5wjfpPIt6brw2VzgBY/3Q==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==}
+ /@react-types/grid@3.2.4(react@18.2.0):
+ resolution: {integrity: sha512-sDVoyQcH7MoGdx5nBi5ZOU/mVFBt9YTxhvr0PZ97dMdEHZtJC1w9SuezwWS34f50yb8YAXQRTICbZYcK4bAlDA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==}
+ /@react-types/link@3.5.3(react@18.2.0):
+ resolution: {integrity: sha512-yVafjW3IejyVnK3oMBNjFABCGG6J27EUG8rvkaGaI1uB6srGUEhpJ97XLv11aj1QkXHBy3VGXqxEV3S7wn4HTw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==}
+ /@react-types/listbox@3.4.7(react@18.2.0):
+ resolution: {integrity: sha512-68y5H9CVSPFiwO6MOFxTbry9JQMK/Lb1M9i3M8TDyq1AbJxBPpgAvJ9RaqIMCucsnqCzpY/zA3D/X417zByL1w==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==}
+ /@react-types/menu@3.9.7(react@18.2.0):
+ resolution: {integrity: sha512-K6KhloJVoGsqwkdeez72fkNI9dfrmLI/sNrB4XuOKo2crDQ/eyZYWyJmzz8giz/tHME9w774k487rVoefoFh5w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@react-types/overlays@3.8.5(react@18.2.0):
+ resolution: {integrity: sha512-4D7EEBQigD/m8hE68Ys8eloyyZFHHduqykSIgINJ0edmo0jygRbWlTwuhWFR9USgSP4dK54duN0Mvq0m4HEVEw==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
+ /@react-types/progress@3.5.2(react@18.2.0):
+ resolution: {integrity: sha512-aQql22kusEudsHwDEzq6y/Mh29AM+ftRDKdS5E5g4MkCY5J4FMbOYco1T5So83NIvvG9+eKcxPoJUMjQQACAyA==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
+ /@react-types/radio@3.7.1(react@18.2.0):
+ resolution: {integrity: sha512-Zut3rN1odIUBLZdijeyou+UqsLeRE76d9A+npykYGu29ndqmo3w4sLn8QeQcdj1IR71ZnG0pW2Y2BazhK5XrrQ==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
+ /@react-types/select@3.9.2(react@18.2.0):
+ resolution: {integrity: sha512-fGFrunednY3Pq/BBwVOf87Fsuyo/SlevL0wFIE9OOl2V5NXVaTY7/7RYA8hIOHPzmvsMbndy419BEudiNGhv4A==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
+ /@react-types/shared@3.22.1(react@18.2.0):
+ resolution: {integrity: sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
react: 18.2.0
dev: false
- /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
+ /@react-types/slider@3.7.1(react@18.2.0):
+ resolution: {integrity: sha512-FKO3YZYdrBs00XbBW5acP+0L1cCdevl/uRJiXbnLpGysO5PrSFIRS7Wlv4M7ztf6gT7b1Ao4FNC9crbxBr6BzA==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@types/react': 18.2.64
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
+ /@react-types/switch@3.5.1(react@18.2.0):
+ resolution: {integrity: sha512-2LFEKMGeufqyYmeN/5dtkDkCPG6x9O4eu6aaBaJmPGon7C/l3yiFEgRue6oCUYc1HixR7Qlp0sPxk0tQeWzrSg==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/rect': 1.0.1
- '@types/react': 18.2.64
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-use-size@1.0.1(@types/react@18.2.64)(react@18.2.0):
- resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
+ /@react-types/table@3.9.3(react@18.2.0):
+ resolution: {integrity: sha512-Hs/pMbxJdga2zBol4H5pV1FVIiRjCuSTXst6idJjkctanTexR4xkyrtBwl+rdLNoGwQ2pGii49vgklc5bFK7zA==}
peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.64)(react@18.2.0)
- '@types/react': 18.2.64
+ '@react-types/grid': 3.2.4(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
- /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
+ /@react-types/tabs@3.3.5(react@18.2.0):
+ resolution: {integrity: sha512-6NTSZBOWekCtApdZrhu5tHhE/8q52oVohQN+J5T7shAXd6ZAtu8PABVR/nH4BWucc8FL0OUajRqunqzQMU13gA==}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.21)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)
- '@types/react': 18.2.64
- '@types/react-dom': 18.2.21
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
- react-dom: 18.2.0(react@18.2.0)
dev: false
- /@radix-ui/rect@1.0.1:
- resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
+ /@react-types/textfield@3.9.1(react@18.2.0):
+ resolution: {integrity: sha512-JBHY9M2CkL6xFaGSfWmUJVu3tEK09FaeB1dU3IEh6P41xxbFnPakYHSSAdnwMXBtXPoSHIVsUBickW/pjgfe5g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.0
+ '@react-types/shared': 3.22.1(react@18.2.0)
+ react: 18.2.0
dev: false
- /@react-hook/media-query@1.1.1(react@18.2.0):
- resolution: {integrity: sha512-VM14wDOX5CW5Dn6b2lTiMd79BFMTut9AZj2+vIRT3LCKgMCYmdqruTtzDPSnIVDQdtxdPgtOzvU9oK20LopuOw==}
+ /@react-types/tooltip@3.4.7(react@18.2.0):
+ resolution: {integrity: sha512-rV4HZRQxLRNhe24yATOxnFQtGRUmsR7mqxMupXCmd1vrw8h+rdKlQv1zW2q8nALAKNmnRXZJHxYQ1SFzb98fgg==}
peerDependencies:
- react: '>=16.8'
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
dependencies:
+ '@react-types/overlays': 3.8.5(react@18.2.0)
+ '@react-types/shared': 3.22.1(react@18.2.0)
react: 18.2.0
dev: false
@@ -3321,6 +5647,25 @@ packages:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
dev: true
+ /@swc/helpers@0.4.14:
+ resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@swc/helpers@0.4.36:
+ resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==}
+ dependencies:
+ legacy-swc-helpers: /@swc/helpers@0.4.14
+ tslib: 2.6.2
+ dev: false
+
+ /@swc/helpers@0.5.7:
+ resolution: {integrity: sha512-BVvNZhx362+l2tSwSuyEUV4h7+jk9raNdoTSdLfwTshXJSaGmYKluGRJznziCI3KX02Z19DdsQrdfrpXAU3Hfg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/@swc/types@0.1.6:
resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==}
dependencies:
@@ -4017,6 +6362,11 @@ packages:
wrap-ansi: 7.0.0
dev: true
+ /clsx@1.2.1:
+ resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
+ engines: {node: '>=6'}
+ dev: false
+
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
@@ -4049,10 +6399,25 @@ packages:
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ /color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+ dev: false
+
/color2k@2.0.3:
resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==}
dev: false
+ /color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+ dev: false
+
/comma-separated-tokens@1.0.8:
resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
dev: false
@@ -4061,6 +6426,10 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
+ /compute-scroll-into-view@3.1.0:
+ resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
+ dev: false
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -4116,6 +6485,10 @@ packages:
'@babel/runtime': 7.24.0
dev: true
+ /date-fns@3.6.0:
+ resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
+ dev: false
+
/dayjs@1.11.10:
resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
dev: false
@@ -4472,6 +6845,11 @@ packages:
rimraf: 3.0.2
dev: true
+ /flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+ dev: false
+
/flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
dev: true
@@ -4487,6 +6865,25 @@ packages:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
+ /framer-motion@11.0.22(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-kWyldNJLyKDvLWjPYFmgngQYLiU8973BtAeVBc83r2cnil/NBUQJb1ff/6/EweNQYb5BW3PaXFjZa4D3pn/W2Q==}
+ peerDependencies:
+ '@emotion/is-prop-valid': '*'
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ peerDependenciesMeta:
+ '@emotion/is-prop-valid':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@@ -4708,6 +7105,15 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
+ /intl-messageformat@10.5.11:
+ resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/fast-memoize': 2.2.0
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ tslib: 2.6.2
+ dev: false
+
/invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
dependencies:
@@ -4725,6 +7131,10 @@ packages:
is-decimal: 1.0.4
dev: false
+ /is-arrayish@0.3.2:
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+ dev: false
+
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -4920,13 +7330,33 @@ packages:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: false
+ /lodash.foreach@4.5.0:
+ resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==}
+ dev: false
+
+ /lodash.get@4.4.2:
+ resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ dev: false
+
/lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
dev: false
+ /lodash.kebabcase@4.1.1:
+ resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
+ dev: false
+
+ /lodash.mapkeys@4.6.0:
+ resolution: {integrity: sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==}
+ dev: false
+
/lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ /lodash.omit@4.5.0:
+ resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==}
+ dev: false
+
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: false
@@ -5609,6 +8039,16 @@ packages:
react: 18.2.0
dev: false
+ /react-day-picker@8.10.0(date-fns@3.6.0)(react@18.2.0):
+ resolution: {integrity: sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg==}
+ peerDependencies:
+ date-fns: ^2.28.0 || ^3.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ date-fns: 3.6.0
+ react: 18.2.0
+ dev: false
+
/react-dom@18.2.0(react@18.2.0):
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
peerDependencies:
@@ -5690,6 +8130,25 @@ packages:
use-sidecar: 1.1.2(@types/react@18.2.64)(react@18.2.0)
dev: false
+ /react-remove-scroll@2.5.9(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-bvHCLBrFfM2OgcrpPY2YW84sPdS2o2HKWJUf1xGyGLnSoEnOTOBpahIarjRuYtN0ryahCeP242yf+5TrBX/pZA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.64
+ react: 18.2.0
+ react-remove-scroll-bar: 2.3.6(@types/react@18.2.64)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.64)(react@18.2.0)
+ tslib: 2.6.2
+ use-callback-ref: 1.3.1(@types/react@18.2.64)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
/react-resizable-panels@2.0.13(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-DZxLv5Pc6rfuqkgQ+2JW3eLPiX3BgAAR38Cd0lXuCVHXEZLrD+3W4Nag5TqCoNgEM/4IUU9L/pLM2toOUOd6UQ==}
peerDependencies:
@@ -5717,6 +8176,20 @@ packages:
tslib: 2.6.2
dev: false
+ /react-textarea-autosize@8.5.3(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.24.0
+ react: 18.2.0
+ use-composed-ref: 1.3.0(react@18.2.0)
+ use-latest: 1.2.1(@types/react@18.2.64)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
/react-use-websocket@4.8.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-FTXuG5O+LFozmu1BRfrzl7UIQngECvGJmL7BHsK4TYXuVt+mCizVA8lT0hGSIF0Z0TedF7bOo1nRzOUdginhDw==}
peerDependencies:
@@ -5930,6 +8403,12 @@ packages:
dependencies:
loose-envify: 1.4.0
+ /scroll-into-view-if-needed@3.0.10:
+ resolution: {integrity: sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==}
+ dependencies:
+ compute-scroll-into-view: 3.1.0
+ dev: false
+
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -5961,6 +8440,12 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
+ /simple-swizzle@0.2.2:
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ dependencies:
+ is-arrayish: 0.3.2
+ dev: false
+
/sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
@@ -6095,12 +8580,36 @@ packages:
'@svgmoji/twemoji': 3.2.0
dev: false
+ /tailwind-merge@1.14.0:
+ resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==}
+ dev: false
+
/tailwind-merge@2.2.2:
resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==}
dependencies:
'@babel/runtime': 7.24.0
dev: false
+ /tailwind-variants@0.1.20(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ==}
+ engines: {node: '>=16.x', pnpm: '>=7.x'}
+ peerDependencies:
+ tailwindcss: '*'
+ dependencies:
+ tailwind-merge: 1.14.0
+ tailwindcss: 3.4.1
+ dev: false
+
+ /tailwind-variants@0.2.1(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-2xmhAf4UIc3PijOUcJPA1LP4AbxhpcHuHM2C26xM0k81r0maAO6uoUSHl3APmvHZcY5cZCY/bYuJdfFa4eGoaw==}
+ engines: {node: '>=16.x', pnpm: '>=7.x'}
+ peerDependencies:
+ tailwindcss: '*'
+ dependencies:
+ tailwind-merge: 2.2.2
+ tailwindcss: 3.4.1
+ dev: false
+
/tailwindcss-animate@1.0.7(tailwindcss@3.4.1):
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
peerDependencies:
@@ -6316,6 +8825,41 @@ packages:
tslib: 2.6.2
dev: false
+ /use-composed-ref@1.3.0(react@18.2.0):
+ resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.64
+ react: 18.2.0
+ dev: false
+
+ /use-latest@1.2.1(@types/react@18.2.64)(react@18.2.0):
+ resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.64
+ react: 18.2.0
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.64)(react@18.2.0)
+ dev: false
+
/use-sidecar@1.1.2(@types/react@18.2.64)(react@18.2.0):
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
engines: {node: '>=10'}
diff --git a/dashboard/public/locales/en.json b/dashboard/public/locales/en.json
@@ -8,17 +8,26 @@
"hosts": "Hosts",
"username": "Username",
"password": "Password",
+ "inbounds": "Inbounds",
"submit": "Submit",
"login": "Login",
"edit": "Edit",
"actions": "Actions",
"settings": "Settings",
"logs": "Logs",
+ "note": "Note",
"config": "Config",
+ "tag": "Tag",
+ "protocol": "Protocol",
+ "apply": "Apply",
"open": "Open",
"delete": "Delete",
"port": "Port",
"create": "Create",
+ "path": "Path",
+ "host": "Host",
+ "alpn": "ALPN",
+ "security": "Security",
"page": {
"settings": {
"certificate": {
@@ -60,33 +69,91 @@
},
"usage_coefficient": "Usage Coefficient",
"add_as_new_host": "Add as new hosts",
- "events": {
- "delete": {
- "error": "Failed to delete {{name}}",
- "success": {
- "title": "{{name}} is successfuly deleted",
- "desc": ""
- }
+ "certificate-alert": {
+ "title": "Nodes Certificate Configuration",
+ "desc": "If you aim to configure your nodes certificate, checkout settings page.",
+ "click": "Click Here"
+ }
+ },
+ "services": {
+ "settings": {
+ "title": "Servicecs Settings",
+ "detail": "Details"
+ },
+ "dialogs": {
+ "creation": {
+ "title": "Services Creation"
+ },
+ "deletion": {
+ "title": "Services Deletion"
+ },
+ "edition": {
+ "title": "Services Edition"
+ }
+ }
+ },
+ "users": {
+ "data_limit": "Data Limit",
+ "used_traffic": "Used Traffic",
+ "data_limit_reset_strategy": "Data Limit Reset Strategy",
+ "expire_date": "Expire Date",
+ "dialogs": {
+ "edition": {
+ "title": "Users Edition"
+ },
+ "creation": {
+ "title": "Users Creation"
+ },
+ "deletion": {
+ "title": "Users Deletion"
},
- "create": {
- "error": "Failed to create {{name}}",
- "success": {
- "title": "{{name}} is successfuly created",
- "desc": ""
+ "mutation": {
+ "note": {
+ "desc": "Leave a note about your user"
}
+ }
+ }
+ },
+ "hosts": {
+ "allowinsecure": "Allow insecure",
+ "dialogs": {
+ "edition": {
+ "title": "Hosts Edition"
},
- "update": {
- "error": "Failed to update {{name}}",
- "success": {
- "title": "{{name}} is successfuly updated",
- "desc": ""
+ "creation": {
+ "title": "Hosts Creation"
+ },
+ "deletion": {
+ "title": "Hosts Deletion"
+ },
+ "mutation": {
+ "allowinsecure": {
+ "alert": "Due to security concerns, it is not recommended to allow Insecure"
}
}
- },
- "certificate-alert": {
- "title": "Nodes Certificate Configuration",
- "desc": "If you aim to configure your nodes certificate, checkout settings page.",
- "click": "Click Here"
+ }
+ }
+ },
+ "events": {
+ "delete": {
+ "error": "Failed to delete {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly deleted",
+ "desc": ""
+ }
+ },
+ "create": {
+ "error": "Failed to create {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly created",
+ "desc": ""
+ }
+ },
+ "update": {
+ "error": "Failed to update {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly updated",
+ "desc": ""
}
}
},
@@ -100,5 +167,17 @@
"selected": "Selected",
"toggle-column": "Toggle columns",
"filter-placeholder": "Filter {{name}}"
+ },
+ "statuses": {
+ "active": "Active",
+ "connected": "Connected",
+ "healthy": "Healthy",
+ "disabled": "Disabled",
+ "expired": "Expired",
+ "on_hold": "On Hold",
+ "connecting": "Connecting",
+ "unhealthy": "Unhealthy",
+ "limited": "Limited",
+ "error": "Error"
}
}
diff --git a/dashboard/public/locales/ku-sor-latin.json b/dashboard/public/locales/ku-sor-latin.json
@@ -0,0 +1,118 @@
+{
+ "name": "Naw",
+ "status": "Dox",
+ "address": "Edrês",
+ "users": "Bekarhêneran",
+ "nodes": "Girêkan",
+ "services": "Rajekan",
+ "hosts": "Hostkan",
+ "username": "Naw Bekarhêneran",
+ "password": "Têperrewişe",
+ "inbounds": "înbawendkan",
+ "submit": "Nardin",
+ "login": "Çûnejûrewe",
+ "edit": "Desitkarîkirdn",
+ "actions": "Firman",
+ "settings": "Sazkarîyekan",
+ "logs": "Tomarkan",
+ "config": "Kanfîg",
+ "open": "Kirnewe",
+ "delete": "Sirrînewe",
+ "port": "Port",
+ "create": "Create",
+ "page": {
+ "settings": {
+ "certificate": {
+ "copy": "Copy Certificate",
+ "error": "Certificate Unavailable",
+ "copied": "Certificate Copied"
+ }
+ },
+ "login": {
+ "username": {
+ "error": {
+ "isRequired": "Username is required"
+ }
+ },
+ "password": {
+ "error": {
+ "is-required": "Password is required"
+ }
+ }
+ },
+ "nodes": {
+ "settings": {
+ "title": "Nodes Settings",
+ "detail": "Details",
+ "log-container": {
+ "title": "Marznode Xray config logs"
+ }
+ },
+ "dialogs": {
+ "creation": {
+ "title": "Nodes Creation"
+ },
+ "deletion": {
+ "title": "Nodes Deletion"
+ },
+ "edition": {
+ "title": "Nodes Edition"
+ }
+ },
+ "usage_coefficient": "Usage Coefficient",
+ "add_as_new_host": "Add as new hosts",
+ "certificate-alert": {
+ "title": "Nodes Certificate Configuration",
+ "desc": "If you aim to configure your nodes certificate, checkout settings page.",
+ "click": "Click Here"
+ }
+ },
+ "services": {
+ "dialogs": {
+ "creation": {
+ "title": "Services Creation"
+ },
+ "deletion": {
+ "title": "Services Deletion"
+ },
+ "edition": {
+ "title": "Services Edition"
+ }
+ }
+ }
+ },
+ "events": {
+ "delete": {
+ "error": "Failed to delete {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly deleted",
+ "desc": ""
+ }
+ },
+ "create": {
+ "error": "Failed to create {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly created",
+ "desc": ""
+ }
+ },
+ "update": {
+ "error": "Failed to update {{name}}",
+ "success": {
+ "title": "{{name}} is successfuly updated",
+ "desc": ""
+ }
+ }
+ },
+ "delete-confirmation": {
+ "title": "Are you sure of this?",
+ "desc": "This action cannot be undone. This will permanently delete your account and remove your data from our servers."
+ },
+ "table": {
+ "row-per-page": "Rows per page",
+ "no-result": "No results",
+ "selected": "Selected",
+ "toggle-column": "Toggle columns",
+ "filter-placeholder": "Filter {{name}}"
+ }
+}
diff --git a/dashboard/src/assets/undraw_connected_world_wuay.svg b/dashboard/src/assets/undraw_connected_world_wuay.svg
@@ -0,0 +1,639 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ data-name="Layer 1"
+ width="1176.60617"
+ height="873.97852"
+ viewBox="0 0 1176.60617 873.97852"
+ version="1.1"
+ id="svg31"
+ sodipodi:docname="undraw_connected_world_wuay.svg"
+ inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs31" />
+ <sodipodi:namedview
+ id="namedview31"
+ pagecolor="#ffffff"
+ bordercolor="#999999"
+ borderopacity="1"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:zoom="1.4142136"
+ inkscape:cx="368.75618"
+ inkscape:cy="478.00418"
+ inkscape:window-width="3440"
+ inkscape:window-height="1400"
+ inkscape:window-x="0"
+ inkscape:window-y="40"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg31" />
+ <title
+ id="title1">connected world</title>
+ <path
+ d="M1095.6635,225.46254C962.121,39.6324,680.01881-35.74836,402.58037,45.43851,255.907,88.35958,114.48682,174.35831,44.40241,340.87958-80.881,638.55435,182.16734,733.62442,354.17234,763.9244c83.17231,14.65143,161.50651,39.26261,233.089,72.77077C716.04472,896.97936,944.00013,950.39754,1115.8936,699.2859,1240.4822,517.27986,1184.616,349.24377,1095.6635,225.46254Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#f2f2f2"
+ id="path1" />
+ <path
+ d="M321.42889,262.2282a34.38541,34.38541,0,0,0-2.24759-8.60455,3.89486,3.89486,0,0,0-1.9801-2.43877,4.08011,4.08011,0,0,0-1.96474-.022l-10.08728,1.5435a3.86686,3.86686,0,0,0-2.30153.89427c-1.31382,1.38169-.0201,3.60656-.06032,5.51275-.04523,2.14349-1.94974,3.88337-4.015,4.459a15.17731,15.17731,0,0,1-6.37968-.0791l-14.105-2.19194a23.25611,23.25611,0,0,0,10.67057-7.12071c1.85618-2.1989,2.84369-6.30419.1611-7.34549a6.58539,6.58539,0,0,0-2.4499-.19671c-6.39055.04969-11.41938-5.286-17.402-7.53322a19.24089,19.24089,0,0,0-21.65464,6.45538l7.5139.36227a3.33516,3.33516,0,0,1,2.00147.53379c1.6467,1.35295-.40057,3.95167-.16859,6.07024.3014,2.75248,3.95606,3.34017,6.711,3.6185s6.2499,2.51667,4.92472,4.94791c-13.84664,4.7694-27.9371-9.32314-42.479-7.58839-3.68047.43906-7.15584,1.88493-10.74918,2.79409-21.95074,5.55382-44.64391-9.26441-67.06781-6.12617a85.16281,85.16281,0,0,0-14.64041,3.86122c-3.05193,1.00208-6.23529,2.085-8.4528,4.409s-3.06148,6.29847-.96073,8.72854a49.12567,49.12567,0,0,1-17.21577-1.63646,9.645,9.645,0,0,1,4.95868,8.50029A102.14535,102.14535,0,0,0,85.821,282.01419a44.07342,44.07342,0,0,0,5.416,7.21479l-11.44534,7.353c3.86678.97425,5.866,6.24693,3.61733,9.54,4.00941-1.78367,6.49425-6.39789,10.78165-7.33339,2.80882-.61288,5.66686.53616,8.33145,1.61556s5.59324,2.12606,8.35166,1.31595,4.793-4.38683,3.04022-6.66564a142.71908,142.71908,0,0,1,36.25271-5.66392,4.54655,4.54655,0,0,1,2.7456.52105c1.59825,1.10883,1.17774,3.50381,1.09165,5.44712s1.42851,4.49732,3.16535,3.62139c-2.0434,1.77191-.29656,5.10765,1.66387,6.97094s4.32331,4.43434,3.12309,6.85811c-.31325.63259-.84455,1.13873-1.14595,1.77705-.88965,1.88416.52289,4.08076,2.189,5.332s3.70692,2.12572,4.86428,3.85837.63178,4.76548-1.43777,5.00743l-5.88236-7.46869a15.31355,15.31355,0,0,0-3.97364,7.53022c6.23775,5.09923,7.176,15.47823,1.9538,21.61341-2.66868,3.13523-6.46374,5.04033-9.776,7.48581s-6.37716,5.92783-6.36883,10.045c.01439,7.1131-.56681,13.72146,2.09864,20.31629a312.966,312.966,0,0,0,16.99045,35.44742c1.68084,3.00616,3.85316,6.30106,7.2582,6.81867q-6.45495-15.71421-11.62147-31.91738c2.24339.00878,4.83588.1869,6.151,2.0044,1.089,1.505.85507,3.55121,1.19345,5.37785a16.65908,16.65908,0,0,0,2.12446,4.99431L187.123,447.63613c1.70352,3.03448,3.65756,6.29169,6.91332,7.52057,2.08158.78568,4.48987.63767,6.4058,1.76882,1.50176.88663,2.51323,2.46048,4.04419,3.29566,4.32885,2.36148,10.34856-2.16748,14.394.652,1.15671.80618,1.89258,2.08691,2.9584,3.00991,3.7363,3.23562,9.8654,1.07107,14.17856,3.48476,2.77976,1.55559,4.22039,4.66667,5.70306,7.486,3.71393,7.0621,9.72327,13.98083,17.68257,14.54317,2.50017.17664,5.054-.2974,7.4979.25869s4.84966,2.68894,4.45736,5.16446c-.67255,4.244,1.42431,8.89112.86116,13.151-1.02579,7.7595-12.03211,11.16939-12.97751,18.93909-.207,1.70118.117,3.45712-.28806,5.12229-.49646,2.04085-2.02916,3.70248-2.57379,5.731-1.03211,3.84421,1.72207,7.67,4.74769,10.25626s6.63464,4.8164,8.28878,8.43676c1.74839,3.82665.88959,8.2885,1.4582,12.457,1.24134,9.10039,9.10157,15.84677,17.19082,20.19673,2.46463,1.32534,5.11094,2.60844,6.70615,4.90762,2.08209,3.00091,1.87467,6.957,2.56992,10.54272,1.70271,8.78155,9.09527,16.01718,9.30517,24.95982.14919,6.35613-3.384,12.12238-5.49458,18.11972a42.25685,42.25685,0,0,0,3.45065,35.0456c1.57886,2.666,3.46722,5.17956,4.58411,8.06975,1.9931,5.15754,1.34639,11.02046,3.18408,16.2354,2.42959,6.8946,9.10562,12.58934,8.46666,19.87152,3.0309,6.29406,9.72369,9.38665,16.45363,11.26l12.06158,3.3575c2.30949.64288,4.72281,1.29086,7.07448.82537s4.596-2.41823,4.53529-4.81476c-5.91483-1.33393-12.01936-2.75242-16.89516-6.35673s-8.21581-10.02271-6.36585-15.797c.85781-2.67751,2.68278-5.76942.94774-7.98179-.99343-1.26672-2.81-1.59767-3.93051-2.75344-1.74775-1.80265-1.14729-4.831.10918-7.0048s3.07257-4.11641,3.57937-6.57554a6.8609,6.8609,0,0,0-3.21584-7.13792,17.05434,17.05434,0,0,0,5.97-3.83059c1.57-1.79291,2.29521-4.557,1.06019-6.59515,3.66753.46513,7.99742.69293,10.40495-2.1126,1.92251-2.24033,1.79046-5.5897,1.03082-8.44244s-2.04361-5.62357-2.08361-8.57544a156.26659,156.26659,0,0,0,25.353-.85968,16.43929,16.43929,0,0,0-7.70814-9.65354c3.81059-.64475,7.28211-5.20677,8.486-8.87922s.89686-7.67268.15275-11.46513a6.1519,6.1519,0,0,1-.114-3.0037c.42911-1.36751,1.77248-2.202,3.01534-2.91574l18.91439-10.86271a11.01742,11.01742,0,0,0,3.02461-2.2329c1.98167-2.3277,1.68812-5.84149.67344-8.72517s-2.64-5.59533-3.03084-8.62723c-1.169-9.06757,8.53762-15.57351,11.81344-24.10911,1.28556-3.34968,1.54756-6.99072,1.79634-10.57.2672-3.84428.28706-8.30958-2.66466-10.78692-2.82948-2.37472-7.25051-1.845-10.21125-4.05388-2.71448-2.02517-3.651-5.95833-6.61642-7.59409-2.69305-1.4855-6.06961-.54073-9.06479-1.23939-5.27364-1.23013-8.59236-7.30815-13.97824-7.87093-3.03881-.31753-6.47807,1.16807-8.96869-.60169-2.19461-1.55942-2.28256-4.69377-2.70031-7.35339a20.53588,20.53588,0,0,0-16.57469-16.62806c-3.13319-.50246-6.54363-.31164-9.20909-2.03347-2.699-1.74352-3.93652-5.00776-6.0566-7.42227-3.41691-3.89143-8.79842-5.274-13.83964-6.45913l-20.50551-4.82056c-3.64012-.85575-8.33221-1.30951-10.2856,1.87908a14.73808,14.73808,0,0,0-1.2167,3.82666,11.85046,11.85046,0,0,1-11.14436,8.38821,13.17908,13.17908,0,0,0-7.77154-6.01327c-2.07929-.57947-4.30492-.64392-6.288-1.49645a8.83267,8.83267,0,0,1-3.83257-12.25263,10.99469,10.99469,0,0,0-1.87879-13.22509c-3.48719-3.13068-8.53151-3.88711-13.20736-3.57386-1.22464-2.67214.823-5.687,3.02956-7.62888s4.886-3.851,5.36649-6.75084c.75588-4.56146-5.06429-8.026-9.48338-6.66591s-7.23961,5.65241-9.10407,9.88349c-1.06976,2.42763-1.97922,4.984-3.66664,7.031s-4.40481,3.51266-6.97507,2.85573c-3.63876-.93-5.0441-5.25313-5.84943-8.9215-1.0805-4.92177-2.16729-9.91182-1.94089-14.94571s1.92341-10.20254,5.63535-13.6103c6.04878-5.55311,15.328-5.00874,23.49132-4.12292-1.92865-2.173-1.452-5.83518.61156-7.88051a8.95973,8.95973,0,0,1,8.12084-1.99506,11.19111,11.19111,0,0,1,6.29121,3.76152c2.31979,2.82828,2.97946,6.647,4.73289,9.85732s5.69616,5.94849,8.92328,4.22617c2.78738-1.48763,3.22979-5.35275,2.53606-8.43517s-2.16714-6.07975-1.91585-9.22926c.4795-6.00963,6.70912-9.627,12.20639-12.102S291.737,382.61548,292.60792,376.65a10.72992,10.72992,0,0,1,.65234-3.42029,6.70927,6.70927,0,0,1,2.46136-2.31466c16.04394-10.60287,32.35471-21.33517,50.69218-27.12878.954-.30143,1.066.03357,2.03827-.20258,1.36074-.78645.45911-2.96205-.84552-3.83847s-3.04843-1.54853-3.37942-3.08495c-.24331-1.12941.42213-2.23839.595-3.38071.42476-2.807-2.93323-5.39866-5.541-4.27645-1.473-1.95077,1.44164-4.21747,3.79839-4.86633a103.15015,103.15015,0,0,1,21.67038-3.54,3.90329,3.90329,0,0,1,2.46588.41943c1.23093.85266,1.07366,2.80835.20129,4.0254s-2.22935,1.98119-3.31646,3.011a9.05261,9.05261,0,0,0-2.34812,9.105c3.826,1.94617,7.98552,3.94962,12.223,3.264s7.99857-5.44675,6.00679-9.24924c-1.8548-3.541-7.42626-4.33966-8.38436-8.22052-1.12177-4.5438,5.31041-8.585,3.86151-13.03528-.63466-1.94937-2.57739-3.09662-4.06811-4.504a12.22124,12.22124,0,0,1-2.67445-13.55158,15.41851,15.41851,0,0,1-13.52264-4.2317c-3.23448-3.26425-5.8149-8.41353-10.40792-8.26747-4.21485.134-7.84523,5.0513-11.78634,3.55111-.96958-.36907-1.99186-1.12025-2.93131-.68012a2.42225,2.42225,0,0,0-1.09342,1.815c-1.00154,4.78839.72138,10.24417-1.88839,14.38191-2.83993,4.50267-9.4088,5.12692-12.85167,9.18721-1.86891,2.20407-2.593,5.17405-4.31085,7.49776s-5.36393,3.80111-7.42549,1.77609a10.23468,10.23468,0,0,0-2.78041-12.44508,27.30929,27.30929,0,0,0-6.14119-2.98712,36.42167,36.42167,0,0,1-6.86076-3.82371,6.75781,6.75781,0,0,1-2.51864-2.69494,6.14136,6.14136,0,0,1,.17224-4.26168,17.42557,17.42557,0,0,1,13.86714-11.49368c2.74488-.37343,5.93955-.24185,7.75607-2.33327.96116-1.10661,1.46548-2.77969,2.86062-3.22913a4.21943,4.21943,0,0,1,2.64107.32524l10.24533,3.60618a7.19076,7.19076,0,0,0,3.64975.60364,2.47448,2.47448,0,0,0,2.13965-2.60046c-.32735-1.70141-2.94535-2.51787-2.70713-4.234a2.82667,2.82667,0,0,1,.85747-1.44135,36.6289,36.6289,0,0,1,29.0513-11.47224c1.29313,2.1238-.752,4.63875-2.45369,6.45178s-3.06918,5.05247-1.01125,6.44805a5.64254,5.64254,0,0,0,2.72791.61435,23.81858,23.81858,0,0,1,7.2608,2.20231q5.31051,2.31106,10.41719,5.05725c-.30072-2.24471-.58773-4.60949.26309-6.70836s3.26893-3.74515,5.38105-2.92776c2.03552.78775,3.07945,3.483,5.24807,3.72993,2.89281.32939,4.03409-3.94424,2.82574-6.59315s-3.60044-4.86693-3.80011-7.77157c-.13471-1.95958.611-4.38989-.95429-5.57648a4.26049,4.26049,0,0,0-1.84682-.64758l-39.08387-7.19215c-2.32088-.42709-5.67415-.09975-5.77707,2.25786-.05746,1.316,1.11807,2.61792.59742,3.82788-.55569,1.2914-2.3812,1.17333-3.71082,1.63009-2.06306.70871-3.0983,3.15844-2.90016,5.33082a14.83392,14.83392,0,0,0,2.448,6.00751C327.82036,263.48679,323.97107,263.29136,321.42889,262.2282Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path2" />
+ <path
+ d="M290.24382,229.0508a12.65625,12.65625,0,0,0-13.90248,4.16352c-.64354.84733-1.184,2.0154-.64526,2.93291.77242,1.31538,2.74054.79583,4.19156.3253a10.54923,10.54923,0,0,1,6.62071-.15794c1.36251.4678,2.58147,1.29457,3.94993,1.74469a3.97776,3.97776,0,0,0,4.0557-.59267c.93918-.95786.99811-2.447.99977-3.7885a3.04683,3.04683,0,0,0-.7764-2.50416,3.98083,3.98083,0,0,0-1.79553-.53108,6.18453,6.18453,0,0,1-3.61949-2.11485"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path3" />
+ <path
+ d="M304.33664,225.127a3.21956,3.21956,0,0,0-3.11178,4.53438,13.04966,13.04966,0,0,0,5.203.33925,4.44715,4.44715,0,0,0,3.63666-3.33425,8.37214,8.37214,0,0,1-5.92789-1.13214"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path4" />
+ <path
+ d="M351.61977,218.5739a59.85328,59.85328,0,0,0-13.342,4.5323,10.02439,10.02439,0,0,1,6.40246,10.06844,5.24308,5.24308,0,0,0,.06075,2.48936c.49,1.18793,1.90992,1.63367,3.15823,1.93858a20.82257,20.82257,0,0,0,6.927.88415,7.05639,7.05639,0,0,0,5.73376-3.50382,24.97233,24.97233,0,0,1,1.19237-2.81861c2.99219-4.55705,11.8812.9531,15.09379-3.45134,1.13168-1.55153,1.02817-3.887,2.50344-5.11644a5.62408,5.62408,0,0,1,2.57353-.98213,180.73105,180.73105,0,0,1,19.54841-2.78411c3.10923-.27057,7.16188-1.387,7.18775-4.50784a54.14874,54.14874,0,0,0-34.54122,4.64674c-3.85042,1.92855-8.943,5.98531-12.65192,3.42852-1.3887-.95731-1.31994-3.5351-3.23126-4.61157C356.28076,217.68557,353.69409,218.13319,351.61977,218.5739Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path5" />
+ <path
+ d="M389.91886,225.73594l5.49742,1.05632a7.12377,7.12377,0,0,0-7.41336,7.7201c5.14811,1.7198,10.76072.04624,16.18368.27485s11.73261,4.10232,10.80688,9.45057c-.27991,1.61713-1.2141,3.23318-.72831,4.8008.34049,1.09875,1.3095,1.87838,1.85645,2.89032,1.13975,2.10869.22882,4.77587-1.21034,6.69274s-3.37358,3.44632-4.63683,5.48342c-3.14187,5.06657-1.35681,11.61664.51479,17.27691a15.23135,15.23135,0,0,0,2.92877,5.84883c2.77285,2.94822,7.29158,3.20463,11.33846,3.26369,2.94546.043,6.31961-.10253,8.18228-2.38464,2.4318-2.97941.73135-7.62792,2.3324-11.12466,1.45407-3.17575,5.15873-4.53818,8.51521-5.50446,6.14911-1.77024,12.41566-3.27523,18.229-5.94915,7.2187-3.32032,13.96506-8.49468,21.89925-8.92208,2.22592-.1199,4.507.1428,6.65112-.46707s4.18088-2.46362,4.01856-4.68685c-.1387-1.89959-1.74585-3.29449-3.00165-4.72649s-2.242-3.634-1.08784-5.14908l20.79655-3.88442c-1.47415-4.01745-2.62255-9.30851.76489-11.92352,1.22221-.94351,2.85865-1.32062,3.89928-2.46127,1.77363-1.9441.88175-5.293-1.16563-6.94635s-4.81568-2.03716-7.43825-2.255c-9.11882-.75732-18.29-.25689-27.42647.24392q-26.78979,1.46846-53.57959,2.93691c-3.59534.19707-7.74639-.104-11.04389,1.12259-2.79157,1.03843-4.77642,2.94458-7.96917,3.61429C401.73856,223.26352,395.25234,222.42689,389.91886,225.73594Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path6" />
+ <path
+ d="M488.4034,269.1892a2.21206,2.21206,0,0,0-1.60017.36291,2.02023,2.02023,0,0,0-.5209,1.23389,8.1485,8.1485,0,0,0,1.1836,5.83234,5.71115,5.71115,0,0,0,5.228,2.50649c2.47536-.31565,4.29959-2.42746,6.5753-3.45795,3.50743-1.58681,18.40286-4.06052,8.099-9.62727-3.55093-1.91843-5.84544-.22491-8.64415,1.03851A19.66887,19.66887,0,0,1,488.4034,269.1892Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path7" />
+ <path
+ d="M578.65322,222.59334a5.88312,5.88312,0,0,0-2.86244,2.49162,2.514,2.514,0,0,0,.94284,3.335,3.75215,3.75215,0,0,0,1.40355.22264l4.89215.14615c2.07829.06209,4.67431.50471,5.23278,2.50751.41469,1.48714-.51346,3.39813.60642,4.46087a3.1547,3.1547,0,0,0,1.66421.64909,11.34113,11.34113,0,0,0,4.92928.15908c3.55953-.95476,1.68918-3.12726,2.81027-5.06171,1.71533-2.95984,1.41838-1.16811,4.44085-2.86446,2.23211-1.25277,5.11647-3.52532,3.25342-6.71829C602.72674,216.36834,583.434,220.208,578.65322,222.59334Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path8" />
+ <path
+ d="M675.2121,219.80181l-2.84073.37908c-6.40592.85484-12.84814,1.71755-19.01791,3.64123a31.65235,31.65235,0,0,0,8.32883,2.04373,25.58457,25.58457,0,0,1,4.66545.66319c2.7251.81124,5.471,2.90612,8.10377,1.833,1.63239-.66538,2.16508-2.36506,3.5173-3.26585.93372-.622,4.47516-1.62874,4.87106-2.25654C686.04046,217.76429,677.67232,219.47351,675.2121,219.80181Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path9" />
+ <path
+ d="M687.68607,232.71281A53.27668,53.27668,0,0,0,677.20288,240.39c-1.33471,1.25468-2.698,2.81516-2.57694,4.643.16086,2.42938,2.74871,3.83854,4.99074,4.78778l9.08123,3.84485c1.10167-1.55276.09336-3.69619-1.04522-5.2221s-2.4916-3.29135-1.98856-5.12757c.57406-2.09545,3.129-2.80951,5.27146-3.1705,3.49077-.58817,12.90738-.541,11.77592-6.16669C701.37832,227.35,691.19017,230.75418,687.68607,232.71281Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path10" />
+ <path
+ d="M685.85992,607.84c-.86453,2.50287-.94655,5.45128.54891,7.63652,1.67807,2.45208,5.0364,3.36612,7.9419,2.74429a14.307,14.307,0,0,0,7.37358-4.74082,25.39213,25.39213,0,0,0,4.24116-6.50393,50.76722,50.76722,0,0,0,3.14358-11.50232l2.8196-14.804c.63007-3.3086.60568-13.45221-5.47541-10.14731-1.66126.90284-5.50764,8.03123-7.2486,10.05264-3.13778,3.64323-3.55293,7.17824-5.20477,11.59189C691.93085,597.69533,687.77256,602.3028,685.85992,607.84Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path11" />
+ <path
+ d="M1007.042,683.59732a44.3323,44.3323,0,0,1-5.77846-2.75084,48.70737,48.70737,0,0,0-2.9293,15.96489l13.61588-7.70478c2.04826-1.159,4.36977-2.76948,4.32573-5.12252a1.62057,1.62057,0,0,0-.75277-1.47353,1.83562,1.83562,0,0,0-.95451-.112c-2.019.16826-3.85988,1.16172-5.76449,1.85256s-4.13169,1.056-5.87919.03077"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path12" />
+ <path
+ d="M1078.86859,688.17155a29.472,29.472,0,0,0-4.36645,1.567c-3.12461,1.58981-5.25021,4.60947-8.062,6.70342-2.69071,2.00378-5.92975,3.10394-9.1095,4.17362-.93537.82681-.50556,2.492.50978,3.21833a6.31536,6.31536,0,0,0,3.59613.80831c3.30343.07292,6.78371.10473,9.6772-1.49081a30.51837,30.51837,0,0,0,4.55609-3.61614c3.38307-2.82274,7.44579-4.68517,11.46743-6.485a13.162,13.162,0,0,0,3.99692-2.38972c2.52713-2.48973,2.70483-6.33069-.93912-7.17807C1087.25079,682.79774,1081.67207,687.2646,1078.86859,688.17155Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path13" />
+ <path
+ d="M1110.60476,667.44113a11.35853,11.35853,0,0,0-3.47525-9.30664c-.03724,3.42765-.14133,7.07923-2.06913,9.91362-1.37358,2.01952-3.52722,3.38376-5.0321,5.30744s-2.17288,4.97289-.40769,6.66088a6.61488,6.61488,0,0,0,3.92025,1.35022c3.51377.41362,7.58086.64415,10.04531-1.89439,1.34513-1.38557,1.99943-3.43772,3.64-4.4564a4.42852,4.42852,0,0,0,1.597-1.14283c.6774-1.07684-.39893-2.496-1.6105-2.884s-2.5467-.2056-3.76434-.5741-2.33475-1.73769-1.71-2.84589"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path14" />
+ <path
+ d="M1054.19984,541.77a15.79465,15.79465,0,0,1-5.63593.3323c-3.12814-.5751-5.5628-2.93262-8.08828-4.866A35.677,35.677,0,0,0,1019.63,529.953c-6.86252-.12959-13.78915,1.73-20.52914.43257.44035,2.44927,2.53621,4.28628,4.77242,5.37816s4.70424,1.64135,6.95118,2.711a16.59674,16.59674,0,0,1,8.03921,8.36349c.72369,1.68923,1.179,3.52752,2.27524,5.0025,2.2406,3.01482,6.48759,3.67683,10.23573,3.43028,4.88672-.32145,9.9906-1.7269,14.53687.09374,3.47789,1.39278,5.96707,4.43682,8.871,6.80376s6.99409,4.12365,10.32859,2.41582a17.07456,17.07456,0,0,1-11.81436-16.42993c3.27045.30074,12.6902.18435,12.18281-5.37265C1065.04963,538.07226,1057.00806,541.26169,1054.19984,541.77Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path15" />
+ <path
+ d="M1011.4166,580.08712c.58068-3.18486,3.75678-5.99733,2.76744-9.07981-.6842-2.13171-3.15585-3.18416-5.39406-3.23672s-4.437.61415-6.67494.67693a32.52991,32.52991,0,0,0-4.3708.06208c-4.44246.73025-7.18069,5.3866-11.36728,7.04224-2.54567,1.00671-5.40551.81426-8.05306,1.51021-6.00991,1.57979-9.81258,7.25885-14.01373,11.83761a50.01052,50.01052,0,0,1-25.38405,14.80352c-3.4171.79123-7.09045,1.29744-9.80657,3.51674-3.59681,2.93889-4.48219,7.97714-5.28242,12.55248a207.33279,207.33279,0,0,1-10.093,37.05085l14.27043,1.822c2.71314.34641,5.52446.68539,8.1389-.11824a23.62759,23.62759,0,0,0,5.35325-2.85151,53.44248,53.44248,0,0,1,20.87945-7.53674c3.737-.51305,7.655-.60706,11.16192.782s6.51552,4.53912,6.80943,8.29966a8.76685,8.76685,0,0,1,8.76213,2.131,15.23057,15.23057,0,0,1,4.18328,8.35106c.3759,1.95234.752,4.29163,2.56365,5.11066,1.478.6682,3.17346-.05148,4.79031-.18086,5.48649-.439,10.03922,5.95835,15.43188,4.85672,5.78353-1.18148,7.20343-9.84311,12.84567-11.57814,3.24055-.99649,7.786.21524,9.33774-2.79908,1.36774-2.65685-1.36107-5.72282-1.07966-8.69778.3465-3.66316,4.66743-5.218,7.99847-6.781,11.484-5.38855,16.93355-20.845,11.36868-32.24457-3.29717-6.75422-9.78474-12.071-10.98287-19.49093-.92182-5.70876,1.32859-12.36578-2.31117-16.85931-1.85157-2.28588-4.98653-3.54764-6.08831-6.2752-.69353-1.7169-.41478-3.66488-.788-5.47855s-1.95554-3.7108-3.74653-3.2407c-5.19889,1.3646-6.85784,17.42481-9.6413,21.327C1018.77034,591.30233,1010.08416,587.39516,1011.4166,580.08712Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path16" />
+ <path
+ d="M915.32233,547.8381c-1.77663-.49816-3.71661-.9889-5.4189-.277s-2.69642,3.21122-1.33017,4.45137c10.68847-.41637,21.44238-.82984,32.04.62169,12.21017,1.67239,24.29409,5.815,36.55784,4.59626a186.05361,186.05361,0,0,0-21.32606-4.94866l-12.0059-2.29346a92.83038,92.83038,0,0,0-9.74919-1.50643C927.24065,547.9162,922.0566,549.72637,915.32233,547.8381Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path17" />
+ <path
+ d="M926.02269,510.61218c-.88733-.07409-1.9863-.13792-2.44535.625-.43858.72893.06343,1.692-.17241,2.5094-.3222,1.11667-1.78464,1.40194-2.93688,1.24991s-2.3984-.51613-3.41924.03944a2.89808,2.89808,0,0,0-1.1205,3.29188,8.47457,8.47457,0,0,0,1.97628,3.15037,32.1849,32.1849,0,0,0,5.12776,5.14334c3.67354,2.71163,8.65038,4.01837,10.96411,7.95468a5.278,5.278,0,0,0,1.46433,1.97083c1.11073.70357,2.55931.16832,3.75519-.37811l4.192-1.91541a4.76165,4.76165,0,0,0,1.95967-1.33278c.95772-1.29948.36947-3.1471-.43438-4.547s-1.83282-2.84867-1.66031-4.45369c.30757-2.86171,3.98705-3.95634,5.5-6.40481,1.525-2.468.53222-5.64793.708-8.544.20569-3.38674,2.33378-7.7921-1.09013-10.32252-2.90989-2.15054-5.69117-.16345-7.78036,2.21079C936.20479,505.86627,934.12159,511.2885,926.02269,510.61218Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path18" />
+ <path
+ d="M951.46826,460.00923c1.43117,2.74025,4.41473,4.37553,5.97536,7.04417,1.69159,2.89256,1.49886,6.62987,3.334,9.43356,1.88279,2.87652,5.67178,4.4037,6.72769,7.67544,1.15278,3.57193-1.46278,7.91337.62215,11.03437a4.63194,4.63194,0,0,0,6.79449.62426,4.98391,4.98391,0,0,0-.20571-6.95361c-1.23444-1.12551-3.007-1.61188-4.03768-2.92653a6.141,6.141,0,0,1-1.04577-2.54625,16.66947,16.66947,0,0,1,.26223-7.98917,3.55525,3.55525,0,0,0,.20093-2.08971c-.464-1.34873-2.29026-1.44442-3.572-2.07011-2.91117-1.42106-2.84052-5.52953-2.3319-8.7289-.33863,2.13-7.92588-1.49274-8.72038-2.69926-1.57831-2.39681-.71931-7.02026-1.03176-9.66886C951.03249,451.79057,949.71844,456.65879,951.46826,460.00923Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path19" />
+ <path
+ d="M875.03144,502.17106c-1.40039-1.56769-3.50969-3.20771-5.38715-2.26225-1.43239.72131-1.82641,2.70317-1.265,4.20545a9.25683,9.25683,0,0,0,3.05492,3.642c3.91255,3.22681,8.12569,6.13914,11.539,9.89012,6.10833,6.71269,9.34415,15.77036,15.98724,21.95431a8.9669,8.9669,0,0,0,5.034,2.7244c1.93541.18005,4.10878-1.05881,4.33125-2.9898.18325-1.59064-.92563-3.01436-2.00929-4.19309-2.58052-2.80691-5.40559-5.39057-7.84193-8.32349a6.99405,6.99405,0,0,1-2.00446-4.18629c-.01236-1.5792,1.42772-3.23208,2.95776-2.841-1.86083-.47563-3.24087-3.57576-5.972-4.15852-2.28244-.487-2.8346.926-5.55093-.239C882.72412,513.17191,878.6595,506.23257,875.03144,502.17106Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path20" />
+ <path
+ d="M996.76353,349.52453a42.89929,42.89929,0,0,1-4.3768-1.56347c-3.84661-1.15464-8.93608,1.67272-8.42335,5.656.34067,2.64657,2.80376,4.4309,4.164,6.72656,2.01724,3.40439,1.47946,7.72236.41941,11.5349a9.01737,9.01737,0,0,1-1.45541,3.28195A11.11578,11.11578,0,0,1,983.6445,377.64a46.10307,46.10307,0,0,0-13.4899,11.4604,3.3029,3.3029,0,0,0-.81466,1.53568c-.18345,1.34489,1.16841,2.32458,1.93271,3.44628,1.69777,2.49171.47065,5.8446.63849,8.85506a2.5036,2.5036,0,0,0,1.05491,2.19658c1.02329.5198,2.23586-.36314,2.7905-1.368,1.84062-3.33468.45407-8.6874,3.907-10.29523.65316-.30414,1.445-.43236,1.88074-1.00613.69131-.91021.02434-2.25793.37468-3.34588.526-1.63348,2.76013-1.70681,4.47468-1.63436a25.39755,25.39755,0,0,0,8.72416-1.16146,5.80725,5.80725,0,0,0,2.888-1.67236c1.0322-1.2882.94072-3.11986.73447-4.75764a64.49225,64.49225,0,0,0-7.61951-23.24965c3.03314.38746,6.33307.723,8.95044-.85772,1.46562-.88515,3.22315-3.53215,2.49625-5.33381C1001.41793,347.60265,999.34132,350.00081,996.76353,349.52453Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path21" />
+ <path
+ d="M607.91457,394.43107c.363,1.94681.71982,3.99671.08181,5.87148s-2.64505,3.44124-4.54026,2.8668c-1.47084-.44581-2.32046-1.92472-3.36488-3.05224-5.80814-6.27028-18.91221-2.64-22.50023-10.39738-1.46435-3.166-.46919-6.959-1.468-10.30111a9.16886,9.16886,0,0,0-9.28527-6.30783,19.07985,19.07985,0,0,0-5.34323,1.595,134.72654,134.72654,0,0,1-35.4012,8.8543,29.08667,29.08667,0,0,0-6.80218,1.23767c-4.9878,1.80826-8.39581,6.4324-10.82115,11.15106s-4.21585,9.82711-7.4675,14.01934c-3.41736,4.4059-8.20609,7.49115-12.67306,10.82829a12.93011,12.93011,0,0,0-4.18069,4.38171c-.96841,1.98814-.91378,4.30065-.83861,6.51083l.91295,26.84369c.11743,3.45276.26488,7.02894,1.81022,10.11882,1.92972,3.85843,5.74182,6.38553,8.38641,9.794a19.18331,19.18331,0,0,1,3.9797,12.25056c-.05629,1.77706-.23287,3.87893,1.15113,4.995a5.06175,5.06175,0,0,0,2.83036.814l36.31165,2.97192c6.38748.52278,13.46629,1.38234,17.63656,6.24877,1.96817,2.29673,3.54923,5.59956,6.56387,5.846,1.29309.10569,2.5513-.42512,3.84465-.52755,3.26305-.25843,6.1296,2.21818,7.93868,4.94608a21.94345,21.94345,0,0,1,3.52451,14.08047c-.29663,3.11179-1.26143,6.137-1.46943,9.256-.79146,11.86777,9.26915,22.17857,9.46416,34.07111.11471,6.99531-3.20608,13.5313-6.44367,19.73336,5.22532,7.91591.94656,18.4569,3.02688,27.711,1.97365,8.77961,9.294,15.65282,11.11811,24.46471.83506,4.03407.88337,8.99841,4.44062,11.07616a10.12238,10.12238,0,0,0,5.02475,1.00609,66.24189,66.24189,0,0,0,30.16507-6.86742c4.39862-2.18276,8.95721-5.44128,9.7254-10.29125.6195-3.91119-1.36394-8.28605.6546-11.6929,2.379-4.01531,8.47348-3.697,11.9738-6.78414,5.67861-5.00824,1.25052-14.55968,3.55132-21.77323,2.06814-6.4841,9.18735-9.92886,12.71629-15.74842a27.98563,27.98563,0,0,0,2.955-8.00882,114.2435,114.2435,0,0,0,3.00656-20.42635,122.43639,122.43639,0,0,1,.92415-12.51145c3.80475-23.63775,27.17324-39.466,34.76027-62.174.72457-2.16863,1.06484-5.05722-.86443-6.28433a5.52524,5.52524,0,0,0-3.6742-.38455l-16.73885,2.11033c-2.0791.26212-4.28291.50711-6.19226-.35645s-3.27777-3.279-2.265-5.11353c2.843-5.14971-3.00514-11.65727-5.60325-16.93475a249.89411,249.89411,0,0,0-24.88458-40.35668,4.10206,4.10206,0,0,1-1.091-2.36876l4.75068.15818c-1.60365-5.75439-4.25013-12.05139-9.84064-14.15637-3.15023-1.18615-6.63887-.776-10-.59234C627.764,397.35788,617.44293,395.90436,607.91457,394.43107Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path22" />
+ <path
+ d="M637.399,264.75532c2.5192,2.67527,5.34218,5.51171,8.98717,5.978,6.438.82367,11.06688-5.83384,14.014-11.6166a5.67618,5.67618,0,0,0,5.9231,5.25121,11.69277,11.69277,0,0,0,4.455-1.74172,87.76547,87.76547,0,0,1,41.57892-10.74849,4.49028,4.49028,0,0,1,3.429-4.93638c2.95542-.58592,5.61763,1.96926,7.04331,4.62354s2.31465,5.73081,4.57974,7.71757,6.65047,1.90021,7.54516-.97683c.85894-2.76209-2.01855-5.11757-4.40918-6.746s-4.91044-4.64241-3.30054-7.04556c12.21331-2.70351,24.50238-5.41726,36.99979-5.95462a15.49384,15.49384,0,0,0,6.22815-1.0729c1.90589-.93527,3.42074-3.0583,2.90823-5.11851a14.10379,14.10379,0,0,1-14.71819-5.55156c17.341-1.431,35.785-2.65073,51.15311,5.50893,1.84418,3.959-7.555,7.25286-5.0402,10.82367.80205,1.13886,2.40921,1.27242,3.8019,1.29827,10.67948.19828,21.4206.39271,31.97953-1.21963,3.85868-.58921,7.75618-1.421,11.63024-.94319,6.45273.79581,11.97173,5.10126,18.32,6.505,2.58381.57135,5.48094.5907,7.659-.91213s3.11429-4.92479,1.32943-6.87844c5.97714-5.85812,15.89735-4.40622,23.78266-1.60164s15.35549,7.32743,23.70133,7.95258c5.98472.44829,12.0526-1.16151,17.96623-.1383,3.71614.643,7.17469,2.29621,10.80669,3.3119,6.86932,1.921,14.1359,1.51549,21.26816,1.60794a149.0218,149.0218,0,0,1,53.10605,10.55252,15.78927,15.78927,0,0,1,5.90367,3.488c1.57334,1.68485,2.37574,4.303,1.31829,6.35142l-17.47272-2.553c1.64627,3.24081,5.90527,3.79308,9.364,4.91109s7.0449,4.93759,4.9663,7.9196c-3.74756-1.19324-7.14361,2.55357-9.03668,6.00094s-4.2,7.576-8.12732,7.786c-3.51681.18806-7.77007-2.80646-10.06239-.13277a68.62854,68.62854,0,0,1,8.0855,12.92662c2.26471,4.71812,3.87775,10.66311.81676,14.90809a3.864,3.864,0,0,1-2.06585,1.602c-2.4999.63286-4.12418-2.42539-5.917-4.279-2.25912-2.33583-5.6756-2.99743-8.73495-4.0929s-6.28211-3.25045-6.52148-6.49119c-.14893-2.01631.91563-3.89065,1.69976-5.75419a22.16956,22.16956,0,0,0,1.68445-9.94358c-.17165-2.73525-.93862-5.58051-2.903-7.49163s-5.35589-2.51739-7.46472-.767c-.984.81673-1.77259,2.12315-3.05043,2.172-2.25783.08638-3.99138-3.85-5.80789-2.50629a6.17209,6.17209,0,0,1-.8387,4.12789c-5.42063,4.71438-13.748,2.71993-20.73623,4.3853a38.92136,38.92136,0,0,0-9.46064,4.13158,6.08717,6.08717,0,0,0-2.70418,2.26983c-.87231,1.69516.08944,3.86621,1.627,4.99333a12.91668,12.91668,0,0,0,5.36459,1.83107c8.5195,1.61352,17.16327,4.11131,23.88942,9.58345s11.137,14.5179,9.00854,22.92356l-16.80085-16.05362q.95718,10.11085,1.08638,20.2774a9.11644,9.11644,0,0,1-.53256,3.9003c-1.19773,2.64545-4.44394,3.53567-7.28856,4.11966a5.70921,5.70921,0,0,0-4.38278,7.31476c1.01068,3.29431,3.53069,5.86271,5.83813,8.42193s4.57815,5.46788,4.88022,8.90047-2.28766,7.30166-5.72523,7.063c-2.60594-.18094-4.5393-2.51378-5.65082-4.87771s-1.7729-4.99729-3.443-7.00589c-5.05494-6.07956-16.409-3.47482-20.93744-9.95611a10.24126,10.24126,0,0,0-2.11779,9.746c2.10671-1.31884,4.99076-.09347,6.57359,1.82283s2.32954,4.37313,3.57257,6.52544c1.67734,2.9043,4.34677,5.479,4.5809,8.82472a28.84532,28.84532,0,0,0,.06384,3.7953c.41589,2.0272,2.12934,3.4828,3.31734,5.17725,2.76431,3.94272,2.62772,9.35907.846,13.83256s-4.98271,8.21152-8.15324,11.83563c-5.53774,6.33-11.18851,12.62289-17.75369,17.87962-1.87333,1.5-3.8726,2.97492-5.03934,5.072s-1.22657,5.04064.56634,6.63586c-1.28287.06425-3.58355.69522-4.86642.75947a113.14129,113.14129,0,0,1-.29339-15.47719c-5.06262-2.43088-10.51361,4.07913-9.86032,9.657s4.68766,10.054,7.56,14.87984c2.10049,3.529,3.66153,7.64391,2.96027,11.69042s-4.31335,7.77945-8.40464,7.42256c-6.50767-.56766-9.22974-9.91006-15.674-10.97926a2.63321,2.63321,0,0,0-1.696.16838c-.95661.525-1.12289,1.805-1.1766,2.89487-.26365,5.34915-.49192,10.91093,1.5962,15.84273,3.05478,7.21493,10.94644,13.27462,9.291,20.93272-8.91784-4.14536-13.55448-14.14614-15.65967-23.7524s-2.45605-19.691-6.22975-28.77234c-2.8655,3.67278-8.88847.6366-11.50661-3.21642-2.48213-3.65287-4.01035-7.87845-6.41852-11.5805s-6.09728-7.017-10.509-7.22056c-4.62546-.21346-8.637,2.96071-12.16483,5.95986-2.90093,2.4662-5.87931,5.02945-7.575,8.43857-2.46757,4.96088-1.82209,10.80922-1.941,16.34863-.12858,5.98861-1.39774,12.30709-5.47933,16.69121s-11.61531,5.91115-16.1173,1.95995c-2.35035-2.06281-3.48835-5.14477-4.502-8.1031A396.68427,396.68427,0,0,1,785.59592,435.269c-.75647,3.36049-3.70732,7.69183-6.52629,5.71231a5.8442,5.8442,0,0,1-1.50354-1.93722c-5.25831-8.91217-14.99614-14.2578-24.835-17.463s-20.19059-4.70029-29.92034-8.22288a75.78674,75.78674,0,0,1-15.52117-7.7314,12.20707,12.20707,0,0,0-.746,12.48676c2.15828,3.82156,7.04226,6.03267,11.223,4.69689,2.16045-.69029,3.98494-2.19009,6.12862-2.93084s5.02093-.377,5.95831,1.68832c.89725,1.97685-.45894,4.36829.21381,6.43236,1.02464,3.14369,5.766,3.38589,7.42395,6.24663,1.23358,2.12847.21858,4.95491-1.54274,6.67243s-4.1113,2.65952-6.26134,3.85511c-6.97621,3.87928-11.93713,10.50151-18.03392,15.65374s-14.69866,8.91387-21.96463,5.609c1.732-8.77015-8.715-15.20895-10.63689-23.93945-.63259-2.87357-.30466-5.92608-1.20778-8.72642-1.30756-4.05445-4.90466-6.84213-7.85557-9.91467a38.91161,38.91161,0,0,1-10.67287-28.3102c.15946-3.60819.82236-7.27515.00035-10.79208s-3.7338-6.92093-7.342-6.76154c-8.24107.364-18.62305.977-22.94678-6.04816-1.54315-2.50731-2.21469-6.17955.01642-8.10051,1.57391-1.35511,3.89718-1.22746,5.9641-1.02413l18.56832,1.8266c4.34286.42722,9.03739.77979,12.76409-1.4906s5.34151-8.297,1.89073-10.96811c-2.52136-1.95171-7.03872-1.84588-7.77165-4.949-.61041-2.58441,2.25017-5.51674.70519-7.67656-1.10779-1.54864-3.59834-1.119-5.10753.04194s-2.60418,2.85872-4.29321,3.73772c-2.96291,1.542-6.50316.07446-9.6909-.92292s-7.46125-1.08208-9.00743,1.87863c-1.7292,3.31119,1.53379,7.65-.18233,10.96795-2.2689,4.38675-9.95258,1.88949-13.13906,5.66279-3.65645,4.32983,2.48811,10.78622,1.255,16.31763a10.1577,10.1577,0,0,1-10.00739-.56224,9.72033,9.72033,0,0,1-4.20064-9.05054c.30523-2.4883,1.60251-5.02832.73329-7.37976-.70278-1.90118-2.61164-3.033-4.38571-4.01338l-18.04423-9.97108c-1.67528,3.10774.44265,6.9605,3.09144,9.29471s5.96651,4.09225,7.70655,7.1642a9.40377,9.40377,0,0,1-3.53854,12.39776,2.1708,2.1708,0,0,1-1.78861.312,2.4953,2.4953,0,0,1-1.16-1.55988c-3.18374-8.14738-7.96377-16.18036-15.60589-20.43642s-18.62306-3.381-23.63443,3.78855c-1.19031,1.70291-1.98919,3.644-3.02611,5.44441-5.509,9.56533-17.31937,14.09487-28.3537,13.799a5.63043,5.63043,0,0,1-3.09314-.72684c-1.78331-1.23165-1.703-3.84517-1.43-5.99521l1.15826-9.12428c.23259-1.83222.56962-3.85742,2.01978-5.00116,2.04417-1.61224,4.993-.5948,7.59623-.63229a9.62676,9.62676,0,0,0,8.738-6.74362,10.84933,10.84933,0,0,0-3.02046-10.78926c-1.19315-1.12066-2.79462-2.52837-2.16442-4.03911a3.33909,3.33909,0,0,1,2.3416-1.57681c4.67608-1.35792,9.617-1.71384,14.21512-3.31608s9.0573-4.88037,10.14623-9.6263c.33371-1.45441.48564-3.21624,1.79205-3.93732a5.37372,5.37372,0,0,1,2.071-.42313,10.07754,10.07754,0,0,0,8.64425-10.50577c2.20364-1.53979,5.291-.40712,7.42286,1.23062s4.014,3.80148,6.608,4.50746c4.83414,1.3157,9.5058-2.96444,14.51574-2.98428,2.10683-.00834,4.28782.73659,6.26989.02231,2.00933-.72411,3.20926-2.7243,4.75141-4.202s4.24806-2.379,5.67206-.78714l-1.21261-8.982a17.65786,17.65786,0,0,0,14.37055-2.5981l-15.672-5.29531a3.40736,3.40736,0,0,1-1.46551-.78358c-1.13939-1.2269-.00768-3.1388.91883-4.53347,2.21645-3.33642,2.58852-8.83231-1.05637-10.49336-2.48789-1.13378-5.34358.22716-7.73152,1.55863L589.75211,276.674c-.3635,2.17427,2.29537,3.40652,3.943,4.87108a6.61107,6.61107,0,0,1-4.3112,11.55174,8.23769,8.23769,0,0,1,1.47117,6.984l-7.69617.55351a3.33426,3.33426,0,0,1-2.49618-.4872c-.82313-.73105-.7115-2.01211-.90228-3.09635-.46046-2.61692-3.0229-4.45106-5.63806-4.92135s-5.29053.13252-7.88012.72774a4.703,4.703,0,0,1-3.38729-.07817,3.3824,3.3824,0,0,1-1.34008-1.69143c-1.13531-2.75275-.07412-5.98837,1.74928-8.34246s4.31952-4.075,6.5613-6.03479a38.24257,38.24257,0,0,0,11.37146-17.63761c4.23676-1.77513,8.623-4.187,12.85971-5.96217a39.35045,39.35045,0,0,1,21.15126-4.09809l14.34808.27406c4.248.08114,8.61091.18511,12.53894,1.8046s7.37949,5.12222,7.65068,9.36234a2.87395,2.87395,0,0,1-.92,2.62744,3.38952,3.38952,0,0,1-1.814.40888C643.04984,263.629,641.36068,264.61614,637.399,264.75532Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path23" />
+ <path
+ d="M523.03553,309.72274a4.19848,4.19848,0,0,0,1.14487-4.22261,7.85348,7.85348,0,0,0-8.13191,1.53554,13.70974,13.70974,0,0,0-2.17858,2.8801c-1.88539,3.076-3.553,6.75021-2.46035,10.18862a2.89439,2.89439,0,0,0,1.32464,1.81177,3.48245,3.48245,0,0,0,1.544.24185,51.7614,51.7614,0,0,0,6.21361-.38244c1.26609-.1548,2.73663-.51234,3.22593-1.69027.64319-1.5484-.91358-3.30074-.45975-4.91483a5.36939,5.36939,0,0,1,1.32582-1.89868,2.51014,2.51014,0,0,0,.7819-2.10731c-.18315-.75735-1.34281-1.187-1.76026-.529"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path24" />
+ <path
+ d="M533.80571,295.7594a17.38476,17.38476,0,0,0-5.63067-.35359,2.45549,2.45549,0,0,0-1.19979.27266,2.00179,2.00179,0,0,0-.73936,1.07069,5.31932,5.31932,0,0,0,3.0969,6.51863,6.65526,6.65526,0,0,1,1.92043.77174c1.59252,1.23559.5773,3.76114.87877,5.7541.33852,2.23792,2.50476,4.11641,2.1076,6.34467-.31289,1.75549-2.18785,3.14554-1.886,4.903.31617,1.84067,2.65189,2.39377,4.51369,2.54117a5.67657,5.67657,0,0,0,3.19791-.36651,4.95168,4.95168,0,0,0,2.01759-2.92189,18.72866,18.72866,0,0,0,.94353-7.052,6.687,6.687,0,0,0-.7952-3.11257,17.37836,17.37836,0,0,0-1.85827-2.12786C536.8058,303.85243,540.56167,297.66337,533.80571,295.7594Z"
+ transform="translate(-11.69692 -13.01074)"
+ fill="#3f3d56"
+ id="path25" />
+ <path
+ d="M1002.86748,620.79489S729.66608,463.97233,612.04916,493.68608c0,0-249.26532,26.82491-278.15369,85.83971,0,0-79.23666-247.61456-108.125-255.86838"
+ transform="translate(-11.69692 -13.01074)"
+ fill="none"
+ stroke="#6c63ff"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ opacity="0.8"
+ id="path26" />
+ <path
+ d="M333.89547,579.52579C379.70417,457.36928,792.3951,322.00665,792.3951,322.00665,733.793,336.86352,612.04916,493.68608,612.04916,493.68608S354.53,306.32439,225.77045,323.65741c0,0,567.03734,18.57109,777.097,297.13748"
+ transform="translate(-11.69692 -13.01074)"
+ fill="none"
+ stroke="#6c63ff"
+ stroke-miterlimit="10"
+ stroke-width="2"
+ opacity="0.8"
+ id="path27" />
+ <circle
+ cx="214.07353"
+ cy="310.64667"
+ r="11.96804"
+ fill="#020817"
+ id="circle27" />
+ <circle
+ cx="322.19856"
+ cy="566.51505"
+ r="11.96804"
+ fill="#020817"
+ id="circle28" />
+ <circle
+ cx="780.69818"
+ cy="308.99591"
+ r="11.96804"
+ fill="#020817"
+ id="circle29" />
+ <circle
+ cx="991.17056"
+ cy="607.78414"
+ r="11.96804"
+ fill="#020817"
+ id="circle30" />
+ <circle
+ cx="600.35225"
+ cy="480.67534"
+ r="11.96804"
+ fill="#020817"
+ id="circle31" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 337.07463,727.89036 c -20.49692,-5.33843 -27.01804,-9.36208 -28.0116,-17.28362 -0.22515,-1.79511 -1.91969,-5.74524 -4.08208,-9.51568 -3.7547,-6.54686 -4.54201,-8.94504 -5.98963,-18.24446 -0.63245,-4.06286 -1.6094,-6.56124 -4.43649,-11.34561 -8.3988,-14.21355 -9.10493,-25.06601 -2.7006,-41.50505 2.50297,-6.42479 3.05243,-8.72945 3.08526,-12.94076 0.0371,-4.76374 -0.25948,-5.757 -4.22079,-14.1335 -2.89856,-6.12923 -4.49968,-10.57554 -5.00813,-13.90753 -1.17971,-7.73097 -2.17072,-9.18929 -8.92419,-13.13232 -6.80844,-3.97513 -13.43389,-10.17819 -15.44116,-14.45677 -0.80534,-1.7166 -1.60908,-5.71206 -1.94277,-9.65765 -0.31303,-3.70136 -1.07834,-7.71439 -1.70067,-8.91785 -0.62233,-1.20346 -3.12962,-3.93938 -5.57175,-6.07982 -4.87087,-4.26915 -7.28429,-7.59761 -7.28429,-10.04607 0,-0.87434 0.65878,-2.88102 1.46395,-4.45929 0.80517,-1.57827 1.46395,-4.30848 1.46395,-6.06714 0,-3.63024 3.07566,-8.99942 6.58778,-11.50027 1.13288,-0.80668 3.10099,-3.03067 4.37357,-4.94221 l 2.31379,-3.4755 -0.47219,-7.68574 c -0.2597,-4.22716 -0.63484,-8.26579 -0.83364,-8.97473 -0.57244,-2.0414 -3.84318,-3.25387 -9.77338,-3.62303 -3.1749,-0.19763 -6.53158,-0.8824 -7.96036,-1.62391 -3.77141,-1.95729 -8.39534,-7.128 -12.06754,-13.49452 -3.5988,-6.23925 -6.15892,-8.1506 -10.91719,-8.1506 -4.56697,0 -6.93249,-0.84503 -9.71654,-3.47103 l -2.73977,-2.58423 -6.24865,0.48031 c -6.17647,0.47476 -6.28061,0.45462 -9.01543,-1.74314 -1.52174,-1.22291 -3.84938,-2.42938 -5.17254,-2.68105 -6.37656,-1.21288 -6.50283,-1.37807 -21.45306,-28.06358 -7.1551,-12.77153 -11.18743,-20.76949 -11.80483,-23.41435 -0.51573,-2.20935 -1.50622,-4.43273 -2.2011,-4.94084 -1.39336,-1.01884 -5.37546,-1.26751 -5.37546,-0.33566 0,0.9514 4.91728,15.27551 7.78159,22.6679 1.45377,3.75197 2.40653,7.05377 2.11725,7.33733 -1.15559,1.13273 -5.199,-5.3148 -12.07074,-19.24777 -9.42171,-19.10325 -11.08491,-23.47999 -11.82167,-31.10895 -1.17205,-12.13629 0.34098,-16.42967 7.50431,-21.29419 9.78414,-6.64428 12.04943,-10.24077 11.47266,-18.21454 -0.25161,-3.47854 -0.819,-5.13228 -2.65401,-7.73564 l -2.33399,-3.31125 1.48113,-2.90324 c 0.81462,-1.59678 1.72147,-2.8904 2.01522,-2.8747 0.29377,0.0157 1.62964,1.51729 2.96862,3.33686 2.83495,3.85247 4.76661,4.06175 5.1085,0.55347 0.19055,-1.95531 -0.27079,-2.69576 -3.14908,-5.0543 -4.47198,-3.66446 -5.1186,-4.95644 -3.62301,-7.23899 1.50325,-2.29425 0.89476,-4.31809 -2.40319,-7.99295 -1.96026,-2.1843 -2.46552,-3.30599 -2.22558,-4.94084 0.21163,-1.44189 -0.004,-2.115 -0.67889,-2.115 -1.15853,0 -2.54526,-3.20598 -2.00062,-4.62526 0.20643,-0.53795 0.0406,-1.85836 -0.36841,-2.93426 -0.72362,-1.90325 -0.90756,-1.95605 -6.80065,-1.95185 -7.05205,0.005 -18.00499,1.51022 -27.1012,3.72434 -6.16681,1.50108 -6.40478,1.63561 -6.40478,3.62073 0,2.31591 -1.51215,4.16372 -3.89406,4.75848 -0.877668,0.21916 -4.2263,-0.46119 -7.441407,-1.51189 -7.14574,-2.33521 -9.296937,-2.0464 -14.049498,1.88623 l -3.528064,2.91939 -0.442962,-2.63361 c -0.243629,-1.44849 -1.145426,-3.33608 -2.003994,-4.19464 l -1.561031,-1.56103 5.518268,-3.52033 5.518268,-3.52033 -2.713701,-3.31171 c -1.52809,-1.86483 -2.423874,-3.5638 -2.050325,-3.88871 2.058978,-1.79085 20.10812,-7.41074 23.800734,-7.41074 1.821142,0 1.822652,-2.56527 0.0033,-5.54886 l -1.37508,-2.25498 7.571782,0.33676 7.57177,0.33675 -0.77559,-2.10764 c -1.79162,-4.86866 2.07916,-8.52452 12.55087,-11.85402 14.21221,-4.51879 20.98441,-4.49609 42.08057,0.14109 22.70101,4.98995 27.20906,5.20215 40.27231,1.89565 10.79875,-2.73332 12.02446,-2.61377 27.33585,2.66624 8.48635,2.92645 12.48154,3.94285 15.46909,3.93544 5.78132,-0.0144 7.3217,-0.56524 7.3217,-2.6185 0,-1.99094 -2.48954,-3.5156 -6.83609,-4.18659 -4.23478,-0.65375 -5.01811,-1.61589 -4.44221,-5.45625 0.59929,-3.99636 -0.0529,-4.5375 -5.48759,-4.55289 l -3.95632,-0.0112 1.39441,-1.54307 c 1.79685,-1.98841 7.23565,-4.70951 10.65406,-5.33036 3.99279,-0.72516 8.86847,0.6684 15.28255,4.36804 3.16125,1.8234 7.00251,3.48378 8.53615,3.68973 5.86239,0.78723 6.08232,0.90364 6.08232,3.21935 0,2.94723 -4.18321,7.48083 -9.02678,9.78288 -3.44861,1.63906 -3.62059,1.83278 -1.95233,2.199 5.96112,1.3086 16.98693,2.57878 18.95987,2.1842 3.40724,-0.68145 5.29096,-3.43708 4.73335,-6.92424 -0.53932,-3.37271 0.13497,-3.77346 8.45885,-5.02733 4.32614,-0.65166 5.61422,-0.62627 6.31124,0.12439 1.01203,1.08993 3.25877,7.56794 3.25877,9.39603 0,0.92951 1.09521,1.45379 4.39185,2.10236 2.41552,0.47523 4.39185,1.11225 4.39185,1.4156 0,0.30335 -1.15286,1.66895 -2.56191,3.03465 -2.84381,2.75634 -3.13358,4.01089 -1.37518,5.9539 1.42369,1.57316 0.8506,3.56178 -1.02646,3.56178 -0.74228,0 -4.27299,-0.98816 -7.84602,-2.19592 -3.57302,-1.20776 -6.98706,-2.19593 -7.58675,-2.19593 -0.59968,0 -1.9378,1.01205 -2.97358,2.249 -1.5633,1.86692 -2.80669,2.42446 -7.31876,3.28179 -3.13288,0.59527 -6.6187,1.81578 -8.22848,2.88108 -5.68026,3.75901 -8.78467,11.45482 -5.9897,14.8484 0.74487,0.9044 4.45666,3.20503 8.24843,5.11251 3.79729,1.91026 7.55112,4.35977 8.35672,5.45305 1.36375,1.85078 1.89963,6.29495 1.12871,9.36071 -0.36272,1.44248 3.38906,1.90438 5.6481,0.69537 0.91336,-0.48881 2.70654,-2.85103 3.98485,-5.24938 1.66871,-3.13084 3.22314,-4.90987 5.51168,-6.3081 1.75312,-1.0711 4.5055,-2.74695 6.1164,-3.72412 3.69219,-2.23968 5.17625,-5.7642 5.19118,-12.32867 0.0143,-6.28791 0.46632,-7.00735 3.98758,-6.34676 2.19474,0.41174 3.60231,0.10763 6.98489,-1.5091 5.53557,-2.64576 7.1895,-2.18522 12.36659,3.44347 4.52355,4.91814 8.47997,7.1316 12.79102,7.15603 2.7861,0.0158 2.82826,0.0568 2.37739,2.31112 -0.73486,3.67428 0.81995,7.8143 4.35335,11.5918 3.75484,4.01421 4.00261,5.72805 1.43158,9.90236 -1.03713,1.68388 -1.81305,4.07335 -1.82619,5.6238 -0.0199,2.34774 0.42616,3.05671 3.45404,5.48981 5.5445,4.45539 6.29178,5.92493 4.35783,8.56977 -0.87796,1.20068 -1.50404,1.23056 -8.36432,0.3991 -4.07843,-0.4943 -7.81333,-1.1447 -8.29978,-1.44534 -1.48391,-0.91711 -0.10872,-4.27025 3.00173,-7.31911 3.05249,-2.99206 3.62119,-5.05023 1.81062,-6.55287 -2.30593,-1.91375 -23.8899,1.81058 -27.25173,4.70231 -1.97309,1.69718 -1.96456,4.42199 0.0115,3.66372 1.08373,-0.41587 4.81306,2.20608 4.12344,2.89903 -0.70341,0.7068 -47.81891,-4.54099 -61.80115,-6.8835 -18.19279,-3.04792 -24.0711,-3.65691 -35.29861,-3.65691 -9.42984,0 -9.71787,-0.0462 -9.71787,-1.56026 0,-0.86148 -1.40382,-2.96409 -3.13451,-4.69477 -5.0825,-5.0825 -11.4231,-5.31471 -16.63166,-0.60909 -3.47898,3.14305 -4.71325,6.54237 -4.02995,11.09894 0.62969,4.19909 4.46167,8.35255 8.94544,9.69592 3.00834,0.90132 5.14141,0.53658 10.60947,-1.81415 0.98881,-0.4251 2.01973,0.65723 4.95489,5.20193 8.3712,12.9617 28.39366,55.81271 29.3591,62.83278 0.27683,2.01293 0.93745,5.55001 1.46804,7.86018 0.90111,3.92335 0.86564,4.33357 -0.53794,6.22179 -3.34827,4.50434 -7.8824,2.17087 -11.62182,-5.98112 -3.30168,-7.19773 -6.56128,-9.93321 -11.83019,-9.92805 -4.0335,0.004 -7.36089,2.26611 -7.94969,5.40467 -0.26304,1.40213 -0.28746,2.85805 -0.0543,3.23537 0.24914,0.40312 -2.81509,0.82454 -7.43019,1.02187 -6.08552,0.26019 -8.52914,0.6836 -10.8514,1.88023 -8.56596,4.41394 -11.51269,13.88718 -8.65664,27.82965 1.63598,7.98644 3.2871,11.40405 6.06554,12.55492 4.36079,1.80631 8.35581,-1.27867 11.74376,-9.0686 2.89911,-6.66592 7.04649,-10.65394 11.07967,-10.65394 3.73791,0 7.80748,4.27603 6.78393,7.12809 -0.25455,0.7093 -2.22205,3.15916 -4.3722,5.44414 -2.89245,3.07383 -3.90939,4.71324 -3.90939,6.30239 0,2.05968 0.1619,2.16456 3.9435,2.55486 6.65557,0.68692 10.83644,3.66635 12.18798,8.68556 0.59643,2.21499 0.44535,3.56527 -0.80226,7.17035 -2.5672,7.41814 -0.15003,12.43044 6.70337,13.90023 4.57163,0.98044 6.2401,1.81849 9.20565,4.62388 2.05291,1.94203 2.65218,2.13829 5.1172,1.67585 3.52702,-0.66167 7.64294,-4.84394 8.90165,-9.04513 1.39325,-4.65026 3.53206,-5.71977 9.42107,-4.71103 2.61129,0.44729 4.87281,0.93829 5.02562,1.0911 0.45534,0.45534 12.25877,34.11577 22.28063,63.53878 l 9.35861,27.47581 -2.7913,2.34344 c -6.18713,5.19441 -5.7358,14.46486 0.94714,19.45439 3.03581,2.26657 9.22572,2.49473 12.82347,0.47268 5.72617,-3.21829 7.75363,-11.04071 4.45619,-17.19301 l -1.55382,-2.8991 3.6761,-3.38017 c 9.09866,-8.36625 25.88292,-17.42257 47.45144,-25.60349 l 7.39527,-2.80502 4.61403,1.60286 c 6.37679,2.21521 7.70045,4.13203 7.60658,11.01536 -0.11536,8.46055 -1.42154,12.37776 -6.71012,20.12373 -7.54311,11.04807 -8.07761,13.40883 -4.92954,21.77247 2.15236,5.7183 2.31812,9.08142 0.54898,11.13845 -0.70453,0.81918 -6.0571,4.20661 -11.8946,7.52765 -5.8375,3.32103 -11.20222,6.5373 -11.92159,7.14728 -1.14295,0.96913 -1.24571,1.87622 -0.81452,7.19033 0.62458,7.6977 -0.63741,11.43554 -5.2241,15.4729 l -3.20989,2.82545 2.59577,2.4948 c 1.42768,1.37214 3.049,3.35959 3.60294,4.41656 0.98938,1.88784 0.95921,1.92969 -1.7094,2.37087 -1.4941,0.247 -7.26785,0.45272 -12.83054,0.45715 -9.27356,0.007 -10.08534,0.1145 -9.76923,1.28902 2.55915,9.50861 2.85397,11.30316 2.22391,13.53661 -0.86846,3.07847 -4.64464,5.15889 -8.50881,4.68776 -2.68051,-0.32682 -2.74491,-0.27851 -2.74491,2.05888 0,2.88178 -2.0758,5.72029 -5.09902,6.97255 -2.61301,1.08234 -2.71583,1.53126 -0.75678,3.30417 2.11228,1.91159 1.912,5.95457 -0.46854,9.45783 -1.06286,1.56416 -2.09237,4.26244 -2.28779,5.99621 -0.33602,2.98111 -0.21475,3.23523 2.23311,4.67949 3.30609,1.95065 3.6709,3.00473 2.35104,6.79316 -2.3741,6.81446 -0.54395,13.90986 4.63457,17.96799 3.78575,2.96669 5.59772,3.83139 11.79876,5.6305 2.99838,0.86993 5.57159,1.94169 5.71826,2.38169 0.28885,0.86654 -2.22646,2.69585 -4.58207,3.33241 -0.80517,0.21758 -3.93436,-0.24783 -6.95376,-1.03423 z"
+ id="path31" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 533.97599,487.05883 c -1.40906,-0.35827 -12.23676,-1.44038 -24.06157,-2.40467 -15.81897,-1.29002 -21.66648,-2.01659 -22.13104,-2.74983 -0.34727,-0.5481 -0.63644,-2.33667 -0.6426,-3.97459 -0.0208,-5.51572 -2.02075,-10.37271 -6.10552,-14.82732 -6.47263,-7.05868 -7.0673,-8.21019 -7.8649,-15.22958 -0.39837,-3.50598 -0.46737,-6.6306 -0.15333,-6.94359 0.7963,-0.79363 11.7049,-6.67027 24.80617,-13.36347 l 11.05961,-5.65016 13.09557,8.18505 c 14.47386,9.04651 44.79249,28.93404 58.56728,38.41726 l 8.87295,6.10855 -0.79632,2.98339 c -0.54608,2.04588 -1.26416,3.07902 -2.28516,3.28772 -2.60156,0.53179 -48.56101,6.96726 -49.19337,6.8883 -0.33322,-0.0416 -1.75872,-0.36878 -3.16777,-0.72706 z"
+ id="path32" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 586.01961,641.75935 c -1.46365,-1.46582 -2.24923,-3.3061 -2.89032,-6.77077 -0.60444,-3.26657 -2.63996,-8.25096 -6.4942,-15.90245 l -5.61382,-11.1446 -0.078,-11.54664 c -0.058,-8.59042 -0.36331,-12.20253 -1.19249,-14.10853 -1.06609,-2.4506 -1.02428,-2.74385 0.96224,-6.74901 3.05091,-6.15112 4.50944,-12.55209 3.94821,-17.32728 -0.26107,-2.2213 -2.32995,-8.58042 -4.6524,-14.30009 l -4.18227,-10.29998 0.24293,-6.95377 c 0.61568,-17.62386 0.61577,-17.62273 -1.73363,-21.90209 -3.0591,-5.57204 -5.30777,-7.05503 -10.36155,-6.8334 -4.02071,0.17633 -4.07224,0.15154 -7.60743,-3.65988 -3.02329,-3.25951 -3.37001,-3.91814 -2.3023,-4.37351 0.69134,-0.29486 10.80229,-1.87505 22.46875,-3.51154 23.27857,-3.26535 21.28355,-3.38734 23.97375,1.46591 2.68162,4.83778 11.91389,6.58978 16.56703,3.1439 2.92665,-2.16732 5.2232,-5.98772 5.2232,-8.68897 0,-2.20555 0.24377,-2.4722 2.74491,-3.00265 4.40101,-0.93338 35.67689,-0.67063 44.10151,0.37051 8.42428,1.04109 28.76627,4.32886 31.74365,5.13056 1.83999,0.49545 1.7226,0.70941 -6.50149,11.85018 -4.64161,6.28777 -10.02747,14.60874 -12.0814,18.66537 -4.24128,8.37676 -5.30075,13.01323 -6.52323,28.54703 -0.8656,10.99889 -2.86942,21.47704 -4.85596,25.39231 -0.6761,1.33251 -3.4456,4.72848 -6.15443,7.54658 -7.10925,7.39602 -7.57906,8.53512 -8.04419,19.50378 -0.46455,10.95484 -0.66856,11.31032 -8.5637,14.92152 -3.12295,1.42843 -5.6153,3.09281 -6.16323,4.1158 -0.52639,0.98276 -0.86337,3.83331 -0.78768,6.66314 0.0784,2.93129 -0.29455,5.96712 -0.91566,7.45365 -2.94251,7.04241 -21.22817,14.27398 -36.17179,14.30514 -5.68213,0.0118 -6.23129,-0.12367 -8.10504,-2.00022 z"
+ id="path33" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 589.98319,471.77603 c -0.61868,-1.00103 -49.38585,-33.32073 -64.05893,-42.45408 -6.64268,-4.13477 -12.46238,-7.8891 -12.93267,-8.34295 -0.64094,-0.61852 3.30023,-2.82912 15.73747,-8.8271 18.20934,-8.78164 50.86096,-23.76698 55.21529,-25.34086 2.69756,-0.97504 2.80135,-0.94642 4.89957,1.35082 3.85734,4.22325 8.08194,2.29669 8.08194,-3.68565 0,-2.5016 0.16439,-2.74271 1.64695,-2.41556 4.50695,0.99451 13.83044,1.8604 20.03186,1.8604 5.7195,0 8.27479,0.41058 14.59544,2.34519 l 7.66209,2.3452 1.82103,3.65432 c 2.36702,4.75001 2.3156,5.56282 -0.35193,5.56282 -2.8229,0 -2.55109,0.71241 3.49094,9.14969 7.26001,10.13808 7.58574,8.10333 -3.29825,20.60311 -10.3329,11.86688 -26.35387,30.97186 -31.90563,38.04742 l -3.50893,4.47203 -3.02694,-1.04288 c -2.43888,-0.84025 -3.71296,-0.87829 -6.558,-0.19578 -1.94207,0.4659 -3.71307,1.1416 -3.93554,1.50158 -0.7638,1.23586 -3.13968,2.16642 -3.60576,1.41228 z"
+ id="path34" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 682.20099,480.49837 c -17.32539,-3.23313 -30.75126,-4.57498 -46.48044,-4.64549 -7.85043,-0.0352 -16.29265,0.19383 -18.76048,0.50893 l -4.48696,0.57291 -1.57532,-2.66996 -1.57532,-2.66996 5.6963,-7.02796 c 7.73158,-9.53906 20.65992,-24.89027 30.48178,-36.19432 9.44367,-10.86878 7.84422,-11.0361 14.70535,1.53838 2.34389,4.29568 5.88654,10.69237 7.87255,14.21485 4.44874,7.89048 5.08767,9.97629 4.07087,13.28933 -0.97145,3.16526 0.5248,5.90859 3.53665,6.48434 1.09557,0.20943 6.89598,-0.22593 12.8898,-0.96747 5.99381,-0.74154 11.37875,-1.16371 11.96652,-0.93816 2.01729,0.77411 2.06275,3.8722 0.12604,8.58819 -2.22252,5.41193 -5.78262,11.62469 -6.7749,11.82293 -0.39205,0.0783 -5.65365,-0.77962 -11.69244,-1.90654 z"
+ id="path35" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 680.55404,453.38782 c -2.1004,-0.62065 -2.37892,-1.0047 -2.37892,-3.28029 0,-2.96579 -0.87873,-4.83347 -5.87523,-12.48734 -3.59555,-5.50782 -5.08886,-9.22576 -5.1044,-12.70852 -0.0155,-3.46679 -1.46486,-7.05731 -4.08404,-10.11723 l -2.62591,-3.06779 1.99152,-2.37419 c 1.09533,-1.3058 3.57249,-4.10733 5.5048,-6.2256 l 3.51328,-3.85142 10.84274,3.94288 c 17.93793,6.523 39.0413,15.01835 41.29679,16.6244 4.29337,3.05715 2.20486,7.52517 -5.2991,11.33651 -1.86564,0.94759 -7.29078,5.35045 -12.05585,9.78415 -11.55929,10.75543 -19.0807,14.38796 -25.72568,12.42444 z"
+ id="path36" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 878.76001,494.47235 c -5.05074,-4.91957 -8.32584,-12.03865 -10.28121,-22.34828 -3.40381,-17.94647 -4.26044,-22.0457 -4.99917,-23.92257 -0.71863,-1.82576 -0.92715,-1.90503 -2.97652,-1.13148 -1.79207,0.67643 -2.68739,0.6012 -4.79259,-0.4027 -2.80988,-1.33994 -4.72263,-3.81317 -9.42339,-12.18462 -7.32925,-13.05246 -15.4646,-13.62789 -27.2266,-1.92581 -6.01784,5.98718 -6.93393,8.24426 -6.93393,17.084 0,3.2417 -0.19349,6.39824 -0.42997,7.01452 -0.34333,0.89468 -3.62561,-0.52179 -16.28646,-7.02847 -8.72106,-4.48194 -16.09318,-8.50016 -16.3825,-8.92938 -0.28931,-0.42922 -1.37569,-4.40368 -2.41417,-8.83213 -2.58261,-11.01307 -2.37566,-10.65812 -4.25572,-7.29924 -2.24068,4.00313 -4.28153,4.18081 -6.5977,0.57438 -0.98579,-1.53495 -3.22634,-4.15939 -4.97899,-5.83209 -7.01729,-6.69716 -14.89983,-10.19978 -33.45002,-14.86356 -13.69541,-3.44322 -19.63611,-5.55069 -26.93496,-9.55519 l -5.22807,-2.86836 -0.75122,1.98863 c -1.33838,3.54298 -1.58263,5.72641 -0.90491,8.08949 0.36546,1.27428 0.54948,2.31687 0.40894,2.31687 -0.74777,0 -19.13808,-6.88747 -19.67963,-7.37034 -0.90996,-0.81136 39.616,-41.12805 51.87828,-51.61039 16.02007,-13.69466 29.06879,-23.19284 38.77929,-28.2275 l 4.67009,-2.42132 1.58016,2.00884 c 2.29112,2.91268 5.23204,4.17552 9.72402,4.17552 2.8823,0 4.62806,-0.44797 6.44113,-1.65285 2.87243,-1.90888 5.78105,-7.15389 5.78105,-10.42474 0,-6.21807 -5.9313,-12.04117 -12.28974,-12.06555 -6.59855,-0.0253 -11.52154,4.55356 -12.34176,11.47905 l -0.41929,3.54028 -8.15291,2.80402 c -29.36533,10.09957 -88.6136,32.42096 -116.85123,44.0229 -14.71764,6.04702 -15.57028,6.1735 -21.43789,3.18007 -2.05756,-1.04969 -3.24215,-2.35694 -4.29728,-4.74223 -1.33414,-3.01603 -1.36137,-3.43849 -0.32384,-5.02198 0.62307,-0.95091 1.77643,-1.93319 2.56303,-2.18285 0.7866,-0.24965 6.27288,0.0548 12.19173,0.67646 17.72923,1.86226 22.70363,1.35178 25.4821,-2.61504 1.23196,-1.75887 1.60179,-6.92265 0.60783,-8.4867 -0.30986,-0.48759 -2.07294,-1.55426 -3.91796,-2.3704 -4.79867,-2.12268 -5.23351,-2.84733 -4.14678,-6.91049 0.78555,-2.93712 0.74815,-3.53851 -0.28433,-4.57098 -1.55245,-1.55246 -4.21301,-0.88511 -7.33816,1.84063 -3.29209,2.87135 -4.83893,3.20243 -9.02672,1.93208 -5.26477,-1.59706 -9.50533,-1.44166 -11.36342,0.41642 -1.3387,1.33871 -1.46677,2.05885 -1.03213,5.80379 0.80114,6.90261 -0.16043,8.10175 -7.36271,9.1818 -3.9565,0.59331 -6.91224,2.96585 -6.91224,5.54836 0,0.89844 0.68665,4.08061 1.5259,7.07149 0.83924,2.99088 1.25097,5.70101 0.91497,6.02252 -0.63406,0.60671 -3.06617,0.93141 -5.9285,0.79151 -0.91173,-0.0446 -2.88806,-1.21164 -4.39186,-2.5935 l -2.73415,-2.51247 0.17965,-6.51277 c 0.16389,-5.94181 0.0356,-6.64331 -1.46395,-8.00189 -1.76604,-1.60005 -20.06402,-11.93533 -21.13078,-11.93533 -0.35318,0 -0.64214,1.37639 -0.64214,3.05864 0,2.86913 0.36282,3.40528 5.8558,8.65296 5.47217,5.22781 5.8558,5.79244 5.8558,8.61852 0,3.69148 -1.14808,6.37763 -3.33958,7.81355 -1.95067,1.27813 -2.56512,0.76529 -4.40743,-3.67864 -2.18299,-5.26567 -7.61292,-12.62027 -11.33465,-15.35227 -6.20698,-4.55634 -13.37703,-5.85842 -19.79362,-3.59451 -4.09542,1.44495 -6.53083,3.81794 -10.12173,9.8623 -1.59067,2.67751 -3.40641,5.295 -4.03498,5.81667 -0.94978,0.78826 -3.15143,0.49134 -13.03311,-1.75766 -16.10169,-3.66463 -14.6827,-3.08457 -14.16075,-5.78871 0.64319,-3.33226 3.07586,-5.10104 6.30538,-4.58462 10.76284,1.72105 16.12738,-9.72982 8.58348,-18.32185 -2.99805,-3.41459 -2.14001,-4.15412 7.14496,-6.15809 4.02586,-0.8689 8.5038,-2.18362 9.95097,-2.9216 3.54695,-1.80876 7.02098,-5.90924 7.95957,-9.39488 0.76776,-2.85127 1.8293,-3.74475 4.4491,-3.74475 2.23035,0 6.45193,-4.24938 7.415,-7.46384 1.3905,-4.64108 3.16405,-4.5566 9.74137,0.46398 4.05162,3.09267 7.17045,3.37099 12.82022,1.14406 2.27863,-0.89816 5.44008,-1.46395 8.17996,-1.46395 4.211,0 4.65173,-0.1713 7.72177,-3.00117 2.51341,-2.31678 3.68058,-2.91998 5.11827,-2.64515 l 1.86238,0.35602 -0.45034,-4.30862 -0.45034,-4.30862 h 3.99984 c 3.92171,0 9.88525,-1.77786 9.88525,-2.94701 0,-0.32568 -3.21154,-1.64522 -7.13676,-2.93231 -3.92522,-1.2871 -7.86119,-2.79317 -8.74661,-3.34682 l -1.60985,-1.00665 1.84955,-4.03994 c 2.99593,-6.54399 0.91312,-11.20912 -4.65222,-10.42011 -3.6205,0.51329 -16.30288,7.61554 -16.30288,9.12977 0,0.63165 1.31756,2.36481 2.92791,3.85147 2.17234,2.00549 2.9279,3.27324 2.9279,4.91267 0,2.71037 -2.26735,5.74247 -4.76239,6.36868 -1.5617,0.39196 -1.73845,0.68893 -1.10954,1.86408 0.41146,0.76881 0.7481,2.22278 0.7481,3.23104 0,1.60425 -0.40065,1.89329 -3.20794,2.31427 -5.33445,0.79995 -5.78959,0.5487 -7.68034,-4.2398 -0.45316,-1.14765 -1.91052,-2.54949 -3.37797,-3.24927 -2.18449,-1.04171 -3.28282,-1.1118 -7.14992,-0.45626 -5.71944,0.96955 -7.13087,0.34932 -7.13087,-3.13354 0,-3.68892 0.88195,-4.99015 8.38398,-12.36971 4.89621,-4.81627 7.24559,-7.76878 8.73678,-10.97963 1.12182,-2.41552 2.25767,-4.81464 2.52412,-5.33139 0.8114,-1.57364 17.35984,-8.94838 22.62457,-10.08255 3.80489,-0.81967 8.06078,-0.96545 18.4845,-0.63316 15.75863,0.50236 20.09218,1.41924 23.6839,5.01097 3.41669,3.41669 4.23308,8.47422 1.3679,8.47422 -0.62847,0 -3.20649,0.35939 -5.72892,0.79866 -5.3983,0.94007 -5.46972,1.71756 -0.4625,5.0342 6.48919,4.29827 12.48472,2.06965 17.66102,-6.56484 0.92551,-1.54382 1.53693,-2.06936 1.53858,-1.32246 0.004,1.67187 2.78928,3.51839 5.30771,3.51839 1.12823,0 4.37843,-1.17191 7.22266,-2.60424 10.16948,-5.12127 20.90904,-8.01922 35.23376,-9.50742 2.83869,-0.29492 4.20886,-0.76026 4.20886,-1.42943 0,-0.54569 0.84449,-1.65644 1.87665,-2.46834 3.07626,-2.41978 5.87705,-0.61958 9.1669,5.89198 2.39958,4.74947 4.42,6.45757 7.63829,6.45757 5.47253,0 5.46778,-4.14995 -0.0106,-9.22419 -5.98142,-5.54022 -5.65754,-6.33187 3.37764,-8.25577 10.05078,-2.14015 19.2711,-3.55401 28.41682,-4.35747 6.97384,-0.61266 7.79337,-0.84392 9.33269,-2.63348 2.68314,-3.11934 2.21863,-3.86175 -2.63593,-4.2129 -3.00155,-0.21711 -5.12612,-0.85946 -6.94876,-2.10091 -1.44394,-0.9835 -2.62759,-2.009 -2.63034,-2.2789 -0.0101,-0.98752 9.95298,-1.51565 21.47807,-1.13852 9.00736,0.29474 13.10303,0.75811 17.20348,1.94632 4.89224,1.41765 11.08777,4.06731 11.08777,4.74192 0,0.14928 -1.31755,1.86584 -2.9279,3.81458 -3.05432,3.69615 -3.52574,5.24128 -2.04953,6.71749 1.33983,1.33983 25.70893,1.14704 35.87822,-0.28384 10.07972,-1.41828 12.62349,-1.11646 21.25897,2.52239 8.51039,3.58613 11.42218,4.13088 14.7185,2.75359 2.91323,-1.21722 4.41045,-3.50466 3.93203,-6.00732 -0.38713,-2.02519 0.96288,-3.3995 4.5094,-4.59057 5.57427,-1.87208 12.62754,-0.65251 24.31401,4.20408 11.54809,4.79908 13.74255,5.24365 25.53212,5.17244 9.60985,-0.058 11.13333,0.11493 16.08018,1.82568 6.55357,2.26641 14.95108,3.31954 26.53418,3.32765 15.22613,0.0107 34.07808,3.51976 49.05628,9.13134 7.0443,2.63914 10.8079,5.58291 10.8079,8.45362 0,1.77601 -0.6433,1.79699 -10.3579,0.33788 -4.0812,-0.61299 -7.5594,-0.9755 -7.7293,-0.80558 -0.7895,0.78949 3.4551,3.5581 7.0629,4.60692 4.0506,1.17753 8.0964,4.33824 8.0964,6.3251 0,0.6411 -1.0042,1.2612 -2.4954,1.54096 -2.3981,0.44988 -7.7523,5.29453 -7.7523,7.01453 0,0.40026 -1.217,2.07486 -2.7045,3.72133 l -2.7045,2.99357 -5.6276,-0.49816 c -3.61049,-0.3196 -5.79482,-0.22762 -6.09409,0.2566 -0.25656,0.41512 1.09226,3.16345 2.99737,6.10741 6.30932,9.74963 8.13032,16.4207 5.74272,21.03776 -1.7335,3.35227 -3.1828,3.37352 -6.21312,0.0911 -1.84103,-1.99418 -4.41862,-3.61643 -8.13604,-5.12052 -5.28503,-2.13837 -8.73517,-4.90694 -8.73517,-7.00954 0,-0.56652 0.70336,-2.77153 1.56302,-4.90002 1.85801,-4.60032 2.20379,-12.26454 0.7128,-15.79908 -1.76466,-4.18331 -7.38814,-5.91998 -9.96156,-3.07638 -1.55874,1.72239 -3.11762,1.82754 -5.08074,0.34271 -2.07071,-1.56621 -2.91795,-1.3345 -3.81554,1.04347 -1.3049,3.45706 -3.68585,4.43209 -13.52161,5.53725 -9.2088,1.03471 -12.49201,2.00869 -17.56381,5.21037 -5.41909,3.42093 -3.25589,7.67706 4.84688,9.53633 15.56073,3.57058 23.39191,7.79999 28.63869,15.46698 3.21719,4.70119 5.19757,11.2738 4.27384,14.18422 -0.45003,1.41791 -0.96063,1.10733 -5.72369,-3.48151 -2.87627,-2.77106 -6.59673,-6.30409 -8.26769,-7.85117 l -3.03812,-2.81287 0.40169,12.16056 c 0.46651,14.12299 0.41053,14.26959 -6.17946,16.18536 -3.34386,0.97208 -4.15065,1.54871 -4.9953,3.57027 -1.60351,3.83773 -0.78231,5.56981 7.40944,15.62826 2.69753,3.31222 3.15136,7.94451 1.0404,10.61956 -3.14452,3.9848 -6.54103,2.13197 -10.21903,-5.57459 -2.64224,-5.5363 -3.9768,-6.53051 -11.53707,-8.59482 -6.26324,-1.71015 -11.20104,-3.9407 -11.20104,-5.05982 0,-0.39441 -0.26838,-0.7171 -0.59641,-0.7171 -1.04508,0 -3.06347,5.08015 -3.06347,7.71058 0,2.34273 0.1718,2.53707 2.2426,2.53707 2.89514,0 5.00233,2.25561 9.57178,10.24597 2.5288,4.42198 3.5571,7.01921 3.5571,8.98435 0,1.96174 0.74376,3.84547 2.56192,6.4886 2.77868,4.0395 3.29786,7.83473 1.80637,13.2047 -1.41803,5.10553 -13.31538,19.17667 -24.60687,29.10288 -6.25249,5.49648 -8.05043,8.30686 -7.27947,11.37862 0.25457,1.01427 0.15414,1.84414 -0.2232,1.84414 -0.37733,0 -1.19562,0.19554 -1.81842,0.43453 -0.97155,0.37282 -1.16198,-0.69273 -1.34083,-7.50275 l -0.20845,-7.93727 -2.06025,-0.23618 c -4.23325,-0.48529 -8.08668,4.24865 -8.00229,9.83082 0.0476,3.14949 1.8504,7.30718 5.44182,12.5502 6.11689,8.92992 6.55289,16.49367 1.16815,20.2653 -3.44135,2.4104 -6.07774,1.54724 -11.79103,-3.86041 -8.85055,-8.37706 -11.47582,-7.9235 -11.46941,1.98153 0.005,7.69252 0.66573,10.23278 4.12565,15.86092 5.21707,8.48643 6.82352,11.70432 6.83663,13.69445 0.007,1.10712 -0.29417,2.01294 -0.66993,2.01294 -0.37574,0 -2.36339,-1.63658 -4.41698,-3.63685 z"
+ id="path37" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 666.09753,394.48628 c -1.61035,-0.57377 -6.30414,-2.23334 -10.43065,-3.68793 l -7.50275,-2.64471 v -8.41046 c 0,-11.63007 -1.45284,-14.45315 -7.99826,-15.54172 -2.21918,-0.36908 -0.0246,-1.40475 19.03136,-8.98142 38.38748,-15.26287 92.31327,-35.30088 93.72997,-34.82865 0.38813,0.12938 -1.69685,1.90648 -4.63329,3.94913 -17.51405,12.1831 -36.68448,29.48958 -66.28357,59.83878 -6.14366,6.29934 -11.57857,11.43014 -12.0776,11.40178 -0.49902,-0.0284 -2.22487,-0.52103 -3.83521,-1.0948 z"
+ id="path38" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 654.87799,405.25462 c -2.88473,-4.46325 -6.2657,-12.1718 -5.82631,-13.2839 0.11573,-0.2929 4.56765,1.00121 9.89315,2.8758 l 9.68273,3.40835 -5.37185,5.8252 -5.37186,5.8252 z"
+ id="path39" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0377284;stroke-opacity:1"
+ d="m 790.44923,472.81715 c -1.99067,-2.11073 -3.21402,-4.96111 -6.49213,-15.12657 -2.22159,-6.88916 -3.94559,-12.61942 -3.8311,-12.73391 0.1789,-0.1789 30.53807,15.58444 31.11137,16.15391 0.70624,0.70152 -3.16897,8.54135 -5.14779,10.41436 -3.37525,3.19478 -5.05814,3.89302 -9.3829,3.89302 -3.4107,0 -4.0585,-0.26925 -6.25745,-2.60081 z"
+ id="path40" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 712.33345,412.02768 -5.73433,-2.28497 0.79349,-0.39117 c 0.43643,-0.21513 1.69932,-0.85168 2.80643,-1.41454 2.2422,-1.13995 3.53636,-1.4602 4.96896,-1.22964 1.23757,0.19918 1.94625,0.58231 2.55612,1.38188 0.59776,0.78371 0.70283,1.72367 0.49031,4.38616 l -0.14665,1.83726 z"
+ id="path41" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 891.74442,529.10879 c -0.39407,-0.0946 -1.25871,-0.43635 -1.92144,-0.75947 -2.40178,-1.171 -6.26533,-5.6223 -9.8876,-11.39176 -3.63953,-5.79695 -5.0104,-7.89175 -6.27524,-9.58905 -2.05316,-2.75515 -5.41118,-5.96538 -10.48372,-10.02231 -2.51916,-2.01479 -4.80506,-3.93037 -5.07977,-4.25684 -1.35038,-1.60484 -1.83158,-3.16732 -1.37282,-4.45769 l 0.24667,-0.69382 5.57611,3.6845 c 3.06686,2.02647 5.78197,3.94353 6.03359,4.26013 3.40327,4.28224 6.83651,6.82297 9.5097,7.03755 1.16903,0.0938 1.22892,0.1258 4.11876,2.19796 1.61286,1.1565 2.99392,2.1563 3.06902,2.22176 0.0751,0.0655 -0.0338,0.44461 -0.24193,0.84255 -0.29292,0.55998 -0.35778,0.94082 -0.28695,1.68479 0.2023,2.12487 1.08097,3.30794 7.03289,9.46929 1.84723,1.91223 3.60085,3.84252 3.89694,4.28953 1.08035,1.63104 1.12373,3.01141 0.1302,4.14298 -1.02148,1.1634 -2.61338,1.6882 -4.06441,1.3399 z"
+ id="path42" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 924.11684,523.56541 c -0.51991,-0.22656 -0.99778,-0.81353 -1.88643,-2.31715 -0.5179,-0.87629 -2.46817,-2.72568 -3.69829,-3.507 -0.55059,-0.34971 -1.94807,-1.15412 -3.1055,-1.78757 -3.85429,-2.10942 -5.62267,-3.52278 -8.39536,-6.70992 -2.54395,-2.92421 -3.25193,-4.63419 -2.51151,-6.06601 0.59486,-1.15034 0.82195,-1.22569 3.69365,-1.22569 2.5939,0 2.63363,-0.006 3.11073,-0.48198 0.43096,-0.4298 0.4813,-0.61417 0.46496,-1.70303 -0.016,-1.06439 0.039,-1.27842 0.42884,-1.6682 0.42949,-0.42949 0.54349,-0.44715 2.88743,-0.44715 2.81951,0 3.98535,-0.24276 5.83588,-1.21518 1.63691,-0.86017 3.01295,-2.23226 6.04445,-6.02708 1.37298,-1.71869 2.90559,-3.46755 3.4058,-3.88635 1.87427,-1.56922 3.71984,-2.03949 5.25595,-1.33924 2.61867,1.19373 3.27457,3.25887 2.48602,7.82739 -0.30595,1.77259 -0.38145,2.96052 -0.37341,5.87555 0.014,5.08009 -0.10934,5.37432 -3.41367,8.14246 -2.33009,1.95198 -2.72481,2.56657 -2.72481,4.24254 0,1.36473 -0.0521,1.2222 1.61188,4.41232 1.15039,2.20552 1.06586,3.70313 -0.26576,4.70809 -0.69311,0.52308 -5.89798,2.91323 -7.01893,3.22318 -0.91922,0.25417 -1.14829,0.24792 -1.83192,-0.05 z"
+ id="path43" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 955.77676,544.11009 c -3.23219,-0.30534 -7.17197,-0.92642 -12.6945,-2.00119 -3.08269,-0.59995 -7.21066,-1.3797 -9.17327,-1.73278 -1.9626,-0.35309 -3.87317,-0.70235 -4.24571,-0.77615 -0.48927,-0.0969 -1.23316,-0.61684 -2.67929,-1.87261 -1.10108,-0.95614 -1.93794,-1.76276 -1.8597,-1.79248 0.30359,-0.11533 10.40822,1.72511 23.51571,4.28311 6.42583,1.25404 15.91299,3.63015 15.72281,3.93786 -0.12243,0.19811 -6.35634,0.16488 -8.58605,-0.0458 z"
+ id="path44" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 923.08957,538.92453 c -0.0461,-0.0461 -2.50963,-0.17191 -5.47456,-0.27962 -3.93452,-0.14293 -7.46301,-0.13864 -13.06171,0.0159 -7.34291,0.20269 -7.68134,0.1975 -7.91448,-0.12134 -0.59544,-0.8143 -0.0409,-2.78923 0.98918,-3.52269 1.32694,-0.94486 2.69271,-0.94226 6.30701,0.012 l 2.25042,0.59416 h 7.51684 7.51684 l 1.86159,1.62032 c 1.02388,0.89118 1.8616,1.65289 1.8616,1.69269 0,0.10162 -1.75048,0.0908 -1.85273,-0.0114 z"
+ id="path45" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 958.97797,483.7562 c -1.85092,-0.56303 -3.04032,-2.01131 -3.2399,-3.94509 -0.0547,-0.53019 0.0442,-2.18227 0.21977,-3.67128 0.58788,-4.98501 0.34358,-5.6039 -3.82435,-9.68857 -3.48364,-3.41403 -3.58482,-3.58206 -4.68332,-7.77723 -1.09516,-4.18243 -1.52455,-4.94713 -4.5608,-8.12247 -2.75479,-2.88098 -3.35513,-3.81442 -3.69531,-5.74568 -0.46199,-2.62271 0.77767,-5.62955 2.96225,-7.18511 l 0.49884,-0.35521 0.0829,3.70472 c 0.12599,5.62762 0.31301,6.00091 3.878,7.74059 2.24207,1.0941 4.04165,1.62958 5.03217,1.49736 l 0.6516,-0.087 0.001,2.4922 c 10e-4,2.22571 0.0474,2.59476 0.43361,3.45138 0.52921,1.1739 1.50255,2.08416 2.69373,2.51916 2.07444,0.75755 2.44383,0.97383 2.7462,1.6079 0.28168,0.5907 0.27535,0.7217 -0.11335,2.34455 -0.75661,3.15891 -0.67406,6.87618 0.20495,9.22911 0.39486,1.05696 1.28004,1.98038 2.72587,2.84361 1.65237,0.98655 2.27733,1.5533 2.84451,2.57953 0.45182,0.81752 0.5384,1.18018 0.5384,2.25514 0,2.072 -1.01467,3.56698 -2.86376,4.21938 -0.80111,0.28265 -1.79039,0.31896 -2.53326,0.093 z"
+ id="path46" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 961.37458,392.01668 c -0.24254,-0.1248 -0.60671,-0.5475 -0.80928,-0.93935 -0.35428,-0.68533 -0.35987,-0.83159 -0.14698,-3.84287 0.29897,-4.22899 0.0978,-5.2219 -1.43162,-7.06478 -0.7676,-0.92495 -1.28851,-1.84969 -1.28851,-2.28743 0,-0.55589 0.6049,-1.4704 2.1477,-3.24697 3.38798,-3.90136 7.33467,-7.10863 12.20243,-9.91631 2.33997,-1.34966 3.25147,-2.14428 3.9541,-3.44703 1.18154,-2.1907 1.9078,-5.87998 1.77344,-9.00882 -0.14202,-3.30744 -0.48438,-4.12354 -3.16451,-7.54346 -2.27836,-2.90723 -2.72877,-4.46409 -1.84227,-6.36778 1.26149,-2.70899 5.1757,-4.26127 8.07783,-3.20349 4.45329,1.62316 4.79649,1.67913 7.13932,1.16433 1.34595,-0.29575 1.39954,-0.29407 1.88089,0.0588 1.17406,0.86059 1.35803,2.1328 0.55534,3.84045 -1.30312,2.77227 -4.33965,3.97728 -8.92632,3.54233 -1.0616,-0.10068 -1.99006,-0.18311 -2.06323,-0.1832 -0.0732,-8e-5 0.47413,1.21447 1.21625,2.69901 3.18055,6.36235 5.33482,13.34889 6.22424,20.18579 0.38039,2.92402 0.17986,4.11629 -0.88575,5.26639 -0.79568,0.85877 -1.69989,1.27558 -4.06046,1.87175 -2.2721,0.57383 -3.51442,0.70828 -7.30207,0.79027 -2.19605,0.0475 -2.6721,0.11189 -3.33352,0.45061 -1.02364,0.52423 -1.21207,0.9384 -1.22796,2.69902 -0.0159,1.76109 -0.13365,1.94846 -1.66031,2.64166 -2.08491,0.94667 -2.61382,1.92847 -3.28747,6.10243 -0.25623,1.58765 -0.64053,3.29261 -0.85399,3.78881 -0.35567,0.82679 -1.409,1.99747 -1.79724,1.99747 -0.0889,0 -0.27133,0.0403 -0.40537,0.0897 -0.13404,0.0493 -0.44215,-0.0125 -0.68468,-0.13724 z"
+ id="path47" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00117901;stroke-opacity:1"
+ d="m 948.34263,371.90751 c -1.88908,-0.12811 -3.67165,-1.44782 -5.0447,-3.73482 -0.46193,-0.7694 -0.77285,-1.44488 -1.53217,-3.32875 -0.83857,-2.08047 -1.1324,-2.7167 -1.66385,-3.60269 -1.22817,-2.04754 -3.00396,-3.42917 -5.74669,-4.47116 -1.18848,-0.45151 -2.53142,-0.82839 -4.84951,-1.36098 -2.5919,-0.59549 -3.29496,-0.76799 -4.24317,-1.04107 -2.75161,-0.79247 -4.62373,-1.77834 -5.99509,-3.15708 -0.28704,-0.28859 -0.65211,-0.71311 -0.84163,-0.9787 -0.0603,-0.0845 -0.11879,-0.15363 -0.12998,-0.15363 -0.0518,0 -0.59282,0.69754 -0.88103,1.13585 -0.88371,1.34396 -1.40903,2.79798 -1.62674,4.50265 -0.0517,0.40489 -0.0587,1.7755 -0.0111,2.17305 0.067,0.55928 0.23063,1.43757 0.30356,1.62938 0.0122,0.032 0.0161,0.0643 0.009,0.0716 -0.0273,0.0273 -0.26356,-0.11927 -0.36216,-0.22468 -0.12493,-0.13356 -0.1832,-0.24486 -0.24212,-0.46249 -0.0751,-0.27742 -0.0942,-0.4998 -0.10758,-1.25404 -0.0136,-0.76793 0.008,-1.10864 0.1083,-1.70413 0.25283,-1.5014 0.85948,-3.35882 1.54364,-4.72623 0.53527,-1.06984 1.03034,-1.66712 1.38186,-1.66712 0.28114,0 0.547,0.31412 0.55044,0.65035 0.004,0.37305 0.43237,0.81707 1.30178,1.34875 1.88117,1.15042 5.46427,2.52714 9.52822,3.66099 0.39,0.10881 0.95099,0.26535 1.24664,0.34786 5.68502,1.58661 7.48759,2.69523 9.29238,5.71509 0.3615,0.60487 0.53422,0.9345 1.37835,2.63054 0.81608,1.63968 1.12339,2.2175 1.61193,3.03083 1.63985,2.73009 3.22235,4.23606 4.77534,4.54441 0.28045,0.0557 0.84068,0.0549 1.10321,-0.002 0.97129,-0.20884 1.86843,-0.85349 2.77272,-1.99239 0.42305,-0.5328 0.80066,-1.266 1.01314,-1.96718 0.73613,-2.42932 0.17966,-5.44381 -1.45601,-7.88744 -0.24074,-0.35966 -0.43924,-0.61752 -1.13895,-1.47956 -4.5462,-5.60087 -6.32856,-8.13394 -7.09029,-10.07666 -0.26457,-0.67473 -0.43387,-1.415 -0.4354,-1.90372 l -4.4e-4,-0.14296 h 0.0997 0.0996 l 0.0158,0.21159 c 0.0346,0.46502 0.12713,0.92894 0.27896,1.39929 0.60616,1.87782 1.67822,3.62331 3.59416,5.85189 0.40496,0.47104 0.74148,0.84869 1.58472,1.77842 1.44384,1.59193 2.09833,2.36502 2.7941,3.30044 1.72346,2.31711 2.62201,4.48657 2.73056,6.59266 0.0188,0.36366 -0.019,0.9154 -0.0923,1.35106 -0.36735,2.18135 -1.69118,4.10046 -3.40841,4.94106 -0.70263,0.34394 -1.4772,0.50148 -2.21846,0.45121 z"
+ id="path48" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00117901;stroke-opacity:1"
+ d="m 942.86426,345.84599 c 0,-0.66864 0.2273,-1.56263 0.6628,-2.60676 0.57939,-1.38913 1.15387,-2.04442 2.27654,-2.59676 0.63604,-0.31293 1.38224,-0.5775 2.8364,-1.00565 1.95314,-0.57508 2.69796,-0.83256 3.40826,-1.17824 0.5986,-0.29131 0.98246,-0.56002 1.36148,-0.95305 0.89223,-0.9252 1.26634,-2.18793 1.42205,-4.79988 0.039,-0.65473 0.0389,-3.89212 -2.1e-4,-5.2382 -0.0379,-1.30313 -0.13478,-4.3061 -0.30179,-9.35181 -0.0753,-2.27507 -0.13692,-4.21795 -0.13692,-4.31751 v -0.18102 h 0.10293 c 0.0566,0 0.10294,0.005 0.10294,0.011 0,0.006 0.0356,0.43577 0.0792,0.955 0.43688,5.20756 0.71974,10.64135 0.81181,15.59498 0.013,0.69824 0.0355,1.62207 0.05,2.05298 0.0276,0.81885 0.0187,1.20493 -0.0398,1.72127 -0.0967,0.85481 -0.34847,1.824 -0.60848,2.3426 -0.73854,1.47304 -2.28655,2.5633 -4.67315,3.29128 -0.70078,0.21376 -1.28783,0.36013 -2.36748,0.59028 -0.68022,0.14501 -1.13563,0.29474 -1.60004,0.52608 -0.62476,0.31121 -1.08606,0.64775 -1.56853,1.14429 -0.99906,1.0282 -1.56126,2.3425 -1.60587,3.75417 l -0.0128,0.40602 h -0.0996 -0.0997 z"
+ id="path49" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 860.954,236.4046 c -2.06885,-0.18589 -4.80628,-1.03765 -9.30073,-2.89393 -0.72969,-0.30138 -1.86561,-0.77045 -2.52427,-1.04239 -4.02935,-1.66357 -6.50996,-2.38346 -9.24259,-2.68228 -1.00391,-0.10977 -3.64242,-0.10928 -4.9542,9.3e-4 -1.29896,0.10914 -3.10626,0.31551 -5.07808,0.57985 -2.04322,0.27391 -2.94771,0.3775 -4.57484,0.52391 -2.2499,0.20244 -5.4945,0.41427 -6.9309,0.45249 -0.91529,0.0244 -0.77379,0.009 0.8006,-0.0863 3.89393,-0.23604 7.1202,-0.60049 11.48286,-1.29716 4.31777,-0.68949 5.51297,-0.8075 7.80639,-0.77074 1.86191,0.0298 2.84521,0.16001 4.56857,0.60483 2.01388,0.5198 3.5423,1.11402 7.70862,2.99696 1.06937,0.4833 2.39722,1.06925 2.95077,1.30213 3.67211,1.5448 6.52179,2.19525 8.91689,2.03531 1.16896,-0.0781 2.08057,-0.30153 2.99666,-0.73457 0.68357,-0.32313 1.15807,-0.65678 1.62932,-1.14566 1.00482,-1.04242 1.53125,-2.30646 1.53125,-3.67675 0,-1.0211 -0.20359,-1.6288 -0.84635,-2.52637 -0.0537,-0.075 0.24057,-0.36634 0.90772,-0.8989 2.15721,-1.722 4.74967,-2.71485 8.03611,-3.07762 0.88976,-0.0982 3.41438,-0.11216 4.36897,-0.0241 3.09611,0.28551 6.09968,0.93441 9.3593,2.02201 2.20461,0.73558 3.87526,1.404 9.14595,3.65927 4.98918,2.1348 7.89788,3.17942 10.75322,3.86186 0.71572,0.17106 2.10501,0.44642 2.76545,0.54812 0.22646,0.0349 0.34398,0.0657 0.26116,0.0686 -0.47682,0.0165 -2.83237,-0.39207 -4.21174,-0.73045 -2.66347,-0.65338 -5.12822,-1.5369 -10.80329,-3.87259 -2.613,-1.07543 -4.07287,-1.6473 -5.81006,-2.27595 -4.45791,-1.61323 -7.98545,-2.51216 -11.34562,-2.89122 -0.89522,-0.10099 -3.64562,-0.11615 -4.39185,-0.0242 -1.76032,0.2169 -3.26276,0.61252 -4.75729,1.25269 -1.16026,0.49699 -1.88303,0.95597 -2.44393,1.55196 -0.38417,0.40822 -0.58957,0.76988 -0.71439,1.25792 -0.1097,0.42894 -0.11363,0.75396 -0.0165,1.3626 0.098,0.61362 0.0664,1.50523 -0.0715,2.01839 -0.13282,0.4944 -0.48378,1.20146 -0.81975,1.65149 -1.03915,1.39191 -3.12647,2.54616 -5.15287,2.84945 -0.47048,0.0704 -1.4906,0.0962 -1.99914,0.0505 z"
+ id="path50" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 671.81611,238.34745 c -6.35094,-2.70648 -7.25995,-3.23121 -8.22152,-4.74591 -0.68494,-1.07894 -0.70306,-2.30851 -0.0533,-3.61251 1.12902,-2.26565 7.57922,-7.50621 12.52935,-10.17965 2.22925,-1.20396 5.58379,-2.28103 7.91594,-2.54165 1.65688,-0.18515 2.07092,-0.17254 3.17093,0.0966 2.13986,0.52346 3.25697,1.60547 3.7411,3.62356 0.54992,2.29232 -1.11603,4.07502 -4.67541,5.00308 -0.6019,0.15694 -2.63242,0.49106 -4.51228,0.7425 -3.84299,0.51401 -5.41758,0.93129 -6.51556,1.72666 -0.82489,0.59755 -1.12036,1.04112 -1.33888,2.01 -0.25467,1.12918 0.14741,2.3002 1.43971,4.19297 1.66663,2.44104 2.12111,3.48724 2.01131,4.62996 -0.048,0.49936 -0.16062,0.9778 -0.25031,1.0632 -0.0911,0.0867 -2.40541,-0.80031 -5.24113,-2.00876 z"
+ id="path51" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 659.69275,215.34212 c -0.2013,-0.0499 -1.35458,-0.48835 -2.56286,-0.97442 -2.61953,-1.0538 -3.20157,-1.19412 -6.44478,-1.5537 -3.05212,-0.33839 -4.7418,-0.67849 -7.00432,-1.40985 l -1.73845,-0.56194 1.09797,-0.33614 c 3.31237,-1.01408 8.48562,-1.96828 17.8419,-3.29095 6.40569,-0.90555 9.05058,-1.01676 10.06466,-0.4232 0.77443,0.4533 0.92623,1.23902 0.4454,2.30532 -0.38914,0.86295 -0.5981,0.99654 -3.09881,1.98104 -1.95696,0.77043 -2.05619,0.8374 -3.56838,2.40773 -0.8555,0.88839 -1.78727,1.6994 -2.0706,1.80224 -0.52039,0.18889 -2.28695,0.22102 -2.96173,0.0539 z"
+ id="path52" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 579.54145,223.45162 c -2.54735,-0.493 -2.83641,-0.84898 -2.83641,-3.49304 0,-1.93999 -0.20893,-2.57036 -1.04945,-3.16631 -1.10037,-0.78019 -2.18254,-0.97932 -6.22069,-1.14462 -4.31351,-0.17658 -4.74204,-0.28581 -5.24026,-1.33573 -0.43949,-0.92616 -0.36859,-1.59703 0.2708,-2.56234 1.05174,-1.58782 3.13733,-2.60638 7.72128,-3.77088 8.39378,-2.13236 16.62064,-2.39287 20.10788,-0.63675 1.78257,0.89768 2.78789,2.79592 2.33584,4.4105 -0.46645,1.66597 -2.98591,3.76191 -5.39032,4.48422 -2.10382,0.632 -2.97426,1.76815 -3.17888,4.14926 -0.14663,1.70617 -0.48441,2.30973 -1.55861,2.78489 -1.04337,0.46153 -3.35216,0.59221 -4.96118,0.2808 z"
+ id="path53" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 524.5518,310.42316 c -2.36368,-0.346 -3.84042,-1.4199 -3.84218,-2.79409 -3.8e-4,-0.29616 0.42212,-1.31144 0.9519,-2.28742 1.32166,-2.4348 1.3175,-3.01748 -0.042,-5.87225 l -1.00213,-2.10443 -0.0915,-2.66272 c -0.0731,-2.12764 -0.15639,-2.76151 -0.41441,-3.15429 -0.33845,-0.51521 -1.19949,-1.01993 -2.4066,-1.41069 -0.88107,-0.28522 -2.21145,-1.48299 -2.6908,-2.42259 -0.8102,-1.58813 -0.75636,-3.83681 0.11266,-4.70528 0.45723,-0.45694 0.5229,-0.4669 3.07043,-0.46564 1.46181,7.2e-4 3.05385,0.10448 3.631,0.23664 1.47185,0.33705 2.88328,1.23979 3.59032,2.29635 0.71331,1.06594 0.86638,1.59916 1.24243,4.32799 0.49012,3.55658 0.73475,4.15171 2.62799,6.39319 1.68852,1.9991 1.93256,2.71209 1.91429,5.5929 -0.0277,4.37287 -1.25805,7.91659 -3.0355,8.74322 -0.82712,0.38467 -2.20859,0.49513 -3.61595,0.28911 z"
+ id="path54" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 500.69038,308.4166 c -1.59592,-1.4723 -1.583,-5.01326 0.0313,-8.58904 0.8164,-1.80835 2.51198,-4.44938 3.52284,-5.4872 1.87575,-1.92576 4.70276,-2.67507 7.45193,-1.97516 l 0.77772,0.198 v 0.98856 c 0,1.07947 -0.35701,2.12132 -0.93929,2.74114 -0.35391,0.37672 -0.35731,0.4206 -0.0668,0.86395 0.24996,0.38148 0.40464,0.44736 0.84403,0.35948 1.14073,-0.22815 1.64088,1.0094 0.8483,2.09898 -0.22646,0.31131 -0.68065,0.93721 -1.00931,1.39088 -0.82732,1.14196 -0.88164,1.63906 -0.39821,3.64434 0.36225,1.50265 0.38583,1.80613 0.17908,2.30528 -0.56215,1.35713 -2.21404,1.81183 -7.16332,1.97174 l -3.40518,0.11002 z"
+ id="path55" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 478.74894,265.71759 c -1.65098,-0.58892 -2.65602,-1.5782 -3.55082,-3.49516 -0.45767,-0.98047 -0.50907,-1.28987 -0.51052,-3.07304 -0.002,-1.9465 0.008,-1.9909 0.51182,-2.42467 0.47742,-0.41086 0.65869,-0.44187 2.5837,-0.44187 3.58603,0 6.28762,-0.6704 10.16992,-2.5237 2.55003,-1.2173 3.8168,-1.57494 5.10691,-1.44179 2.05496,0.21209 5.6453,2.5141 5.97076,3.82825 0.44399,1.79278 -1.52481,3.12006 -7.50929,5.06245 -4.2122,1.36715 -4.28936,1.40112 -6.49198,2.85813 -1.01899,0.67405 -2.26117,1.38074 -2.7604,1.57044 -1.05465,0.40073 -2.52862,0.43463 -3.5201,0.081 z"
+ id="path56" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 408.98608,277.14542 c -5.69435,-0.79077 -7.99462,-2.98832 -10.05756,-9.60845 -1.33433,-4.28195 -1.74893,-6.27598 -1.86786,-8.98335 -0.19338,-4.40218 0.64867,-6.59339 3.94182,-10.25756 3.25119,-3.61749 3.91964,-4.83812 3.94383,-7.20169 0.0157,-1.52947 -0.12489,-1.88636 -1.45376,-3.69151 -1.10574,-1.50203 -1.16925,-2.0143 -0.54779,-4.418 0.68252,-2.63985 0.61326,-4.11908 -0.27051,-5.7772 -1.10993,-2.08245 -3.73034,-3.97822 -6.8586,-4.96195 -1.83949,-0.57846 -4.62786,-0.65714 -9.85715,-0.27814 -4.50687,0.32664 -5.77144,0.29322 -8.23628,-0.21766 l -1.44099,-0.29867 0.1094,-1.04664 c 0.17323,-1.65744 0.76606,-2.98667 1.85809,-4.16619 1.18471,-1.27963 2.53498,-1.997 4.33268,-2.30185 l 1.33965,-0.22718 -2.74491,-0.51926 -2.74491,-0.51927 1.29168,-0.61364 c 2.49104,-1.18343 4.61119,-1.62324 10.85445,-2.2517 5.83566,-0.58742 6.79155,-0.85187 10.54511,-2.91733 1.10711,-0.60921 2.50701,-1.27753 3.11089,-1.48515 1.41238,-0.4856 4.46392,-0.89902 6.67928,-0.9049 0.95614,-0.003 4.74411,-0.16872 8.41771,-0.3693 3.67361,-0.20059 17.17855,-0.93927 30.01099,-1.64152 31.04413,-1.69887 31.4696,-1.71648 38.6117,-1.59755 10.76632,0.17926 13.708,0.76241 15.89008,3.14996 1.92953,2.11121 2.02467,5.03399 0.21346,6.55802 -0.31072,0.26146 -1.22214,0.81728 -2.02538,1.23517 -1.85251,0.96379 -2.78466,1.98523 -3.28246,3.59692 -0.61933,2.00517 -0.42936,4.60905 0.57306,7.8545 0.20266,0.65613 0.32873,1.23271 0.28015,1.28129 -0.0486,0.0486 -4.67329,0.94622 -10.27713,1.99475 -5.60384,1.04853 -10.26141,1.95129 -10.35016,2.00614 -0.0887,0.0549 -0.25254,0.43831 -0.36397,0.85213 -0.40044,1.48713 0.26216,2.99436 2.33844,5.31932 1.59959,1.79119 2.06308,2.69489 2.06308,4.0226 0,0.83663 -0.10282,1.16533 -0.59473,1.90139 -0.69337,1.03749 -1.97851,1.9556 -3.31202,2.36613 -0.62566,0.19261 -2.17317,0.34117 -4.60247,0.44183 -6.5266,0.27044 -8.70627,0.98281 -17.8419,5.83113 -7.68277,4.07729 -9.86546,4.94191 -19.28524,7.63941 -6.67177,1.91057 -7.73532,2.25794 -9.35329,3.05493 -2.45359,1.20861 -3.87177,2.70278 -4.5174,4.75946 -0.23601,0.75182 -0.41378,2.09308 -0.5264,3.97159 -0.0935,1.56003 -0.25628,3.25774 -0.36168,3.7727 -0.27829,1.35968 -1.20401,2.79711 -2.2538,3.4996 -1.55795,1.04256 -2.35539,1.19543 -6.52274,1.25039 -2.06326,0.0272 -4.24776,-0.0195 -4.85446,-0.1037 z"
+ id="path57" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 358.39341,265.22081 c -1.54087,-0.84829 -7.32496,-3.58985 -9.69867,-4.59701 -2.12688,-0.90243 -4.34623,-1.51896 -6.34082,-1.76148 -2.9287,-0.3561 -3.81001,-1.04602 -3.67511,-2.87702 0.0948,-1.28614 0.79783,-2.62676 2.32039,-4.42454 2.17654,-2.56998 2.8414,-4.08678 2.41509,-5.50971 l -0.22406,-0.74783 h -2.73127 c -7.87885,0 -15.33466,2.46947 -21.64923,7.17052 -0.7862,0.58532 -1.47534,1.06421 -1.53142,1.06421 -0.0561,0 0.11369,-0.28272 0.37725,-0.62827 0.26357,-0.34555 0.47921,-0.71322 0.47921,-0.81703 0,-0.28243 -0.65901,-0.58291 -2.28721,-1.04288 -0.80529,-0.22749 -1.29947,-0.41929 -1.09818,-0.42621 0.2013,-0.007 1.13978,0.19471 2.08553,0.44808 0.94575,0.25337 1.75285,0.42737 1.79356,0.38666 0.0407,-0.0407 -0.17269,-0.46304 -0.47422,-0.9385 -0.30153,-0.47547 -0.81346,-1.57608 -1.13762,-2.4458 -0.78218,-2.09858 -0.85484,-4.24125 -0.18703,-5.51568 0.83594,-1.5953 1.47605,-2.04586 3.68409,-2.59315 2.43042,-0.60242 2.86769,-1.27535 2.2182,-3.41366 -0.54926,-1.80829 -0.51299,-2.32278 0.21505,-3.05082 0.72951,-0.72952 1.63542,-1.00466 3.31231,-1.00601 1.39766,-10e-4 40.6014,7.10726 41.96279,7.60866 1.3342,0.49139 1.57549,1.11783 1.60811,4.17497 0.0329,3.08527 0.17434,3.53162 2.08217,6.5715 1.80725,2.87963 2.10555,3.60939 2.10864,5.15855 0.007,3.29299 -2.20017,5.06361 -4.47485,3.5905 -0.44745,-0.28978 -1.26646,-0.99626 -1.82002,-1.56997 -1.24439,-1.28969 -2.09331,-1.74659 -3.24085,-1.74425 -1.74965,0.004 -3.47111,1.2348 -4.33405,3.09981 -0.34021,0.73527 -0.38533,1.17022 -0.38533,3.71499 v 2.87957 c 0,-0.001 -0.6176,-0.34264 -1.37245,-0.7582 z"
+ id="path58" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 338.72157,225.09792 c -0.70452,-0.13385 -1.89856,-0.42658 -2.65341,-0.65051 -2.72798,-0.80927 -3.22152,-1.4631 -3.02334,-4.00518 0.31418,-4.03007 -1.59049,-7.73705 -5.00971,-9.7502 l -1.1309,-0.66585 2.24785,-0.94933 c 6.77576,-2.8616 13.8793,-4.42462 16.35583,-3.59884 1.33839,0.44627 1.81401,0.93557 2.86947,2.95196 0.90241,1.72401 1.01537,1.85907 1.95139,2.33317 2.15851,1.09331 4.4039,0.55559 9.57036,-2.29187 4.61418,-2.54307 7.86068,-3.88061 12.58482,-5.18487 7.42971,-2.05123 15.22436,-2.40351 23.56046,-1.06484 0.93627,0.15035 1.00385,0.48358 0.33092,1.63185 -1.00641,1.7173 -3.09639,2.48275 -8.2574,3.02426 -9.71845,1.01969 -18.64737,2.51111 -20.08793,3.35534 -0.83597,0.48991 -1.35969,1.29526 -1.86201,2.8633 -0.50584,1.57903 -1.11713,2.66085 -1.84041,3.25704 -1.05674,0.87105 -2.0054,1.05539 -4.92768,0.9575 -5.02688,-0.16839 -6.52514,-0.12135 -7.44537,0.23375 -1.16974,0.45139 -1.99672,1.43399 -2.73213,3.24627 -0.75046,1.84937 -1.92014,3.14592 -3.54704,3.93179 -1.00855,0.48719 -1.28423,0.53397 -3.38539,0.5745 -1.33535,0.0258 -2.82058,-0.0572 -3.56838,-0.19924 z"
+ id="path59" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 277.78463,224.51069 c -3.83754,-1.72679 -3.45004,-1.62163 -5.9473,-1.61401 -1.95107,0.006 -2.52588,0.0797 -3.90909,0.50162 -1.79883,0.54868 -2.42506,0.60236 -3.15377,0.27034 -1.16226,-0.52956 -1.10656,-1.93415 0.14129,-3.56246 2.51701,-3.28442 7.337,-5.14797 11.50338,-4.44754 0.93399,0.15702 1.53144,0.3688 1.89066,0.6702 0.80505,0.67547 1.53861,1.01017 3.11712,1.42223 2.02334,0.52819 2.21588,0.81395 2.20616,3.27434 -0.009,2.31985 -0.36959,3.16771 -1.59975,3.76322 -1.23601,0.59834 -2.48253,0.5168 -4.2487,-0.27794 z"
+ id="path60" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 290.3418,216.75573 c -0.77115,-0.18205 -0.93073,-0.42928 -0.93426,-1.44742 -0.004,-1.13927 0.68575,-2.25274 1.69933,-2.7434 0.82329,-0.39855 1.50764,-0.50861 1.325,-0.21309 -0.3333,0.5393 2.46169,1.47647 4.40339,1.47647 0.74425,0 1.35318,0.0699 1.35318,0.15545 0,0.33334 -1.04567,1.68836 -1.64296,2.12903 -0.34613,0.25537 -0.92095,0.54532 -1.27738,0.64434 -0.75897,0.21085 -4.03122,0.20993 -4.9263,-0.001 z"
+ id="path61" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 505.07354,362.69521 c -1.75594,-0.62553 -2.36236,-1.62297 -2.4485,-4.02731 -0.0539,-1.50557 0.52671,-7.11648 0.76066,-7.35044 0.16677,-0.16676 24.23547,5.33442 24.51812,5.6039 0.18655,0.17786 -1.64979,1.34789 -3.84893,2.45237 -3.26699,1.64078 -7.86631,2.94506 -11.9852,3.39878 -2.52213,0.27783 -6.11055,0.23818 -6.99615,-0.0773 z"
+ id="path62" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 507.94443,418.48573 c -1.3757,-0.88278 -17.69456,-10.6557 -21.67923,-12.9831 -1.88446,-1.10068 -3.40788,-2.05025 -3.38539,-2.11015 0.0225,-0.0599 0.79661,-0.74079 1.72027,-1.5131 2.34296,-1.95905 4.46111,-4.2753 5.90567,-6.458 1.2174,-1.83947 1.929,-3.20701 5.46045,-10.49387 2.69526,-5.56145 4.92648,-8.6626 7.79121,-10.82889 0.8187,-0.6191 2.06498,-1.39242 2.7695,-1.71849 1.55228,-0.71843 4.74655,-1.44464 7.59425,-1.72654 10.5086,-1.04027 22.80642,-3.96849 33.33577,-7.93753 l 1.76933,-0.66695 6.79822,1.74938 c 3.73902,0.96216 7.10108,1.8486 7.47125,1.96987 0.91661,0.30029 1.10324,0.95107 1.31939,4.60063 0.0957,1.61613 0.22051,3.30898 0.27731,3.76189 0.36466,2.90733 1.94922,5.13212 4.60854,6.4706 1.66275,0.8369 3.10648,1.24506 7.55306,2.13537 3.94273,0.78943 5.8558,1.26182 5.8558,1.44597 0,0.0607 -2.491,1.21632 -5.53556,2.56817 -20.87106,9.26717 -40.90505,18.63133 -59.8978,27.99704 l -8.79676,4.33786 z"
+ id="path63" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00117901;stroke-opacity:1"
+ d="m 560.97901,362.91127 c -2.30407,-0.60517 -8.4621,-2.19286 -8.52384,-2.19766 -0.0793,-0.006 1.09211,-0.30796 1.58152,-0.40747 0.81028,-0.16476 1.0046,-0.19069 1.51708,-0.20252 2.26923,-0.0523 4.48135,0.7642 6.22709,2.29855 0.27556,0.2422 0.70687,0.67764 0.84959,0.85773 0.0576,0.0727 0.0616,0.0854 0.026,0.0834 -0.0231,-10e-4 -0.77793,-0.19573 -1.67746,-0.43199 z"
+ id="path64" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.026678;stroke-opacity:1"
+ d="m 472.0938,426.18393 c -0.35101,-11.08325 -0.32741,-11.50562 0.76938,-13.77129 0.80633,-1.66565 2.09673,-3.02797 4.49034,-4.74058 1.84736,-1.32178 3.59085,-2.33519 3.87441,-2.25202 0.65661,0.19259 22.58154,13.24107 23.84207,14.18945 0.8527,0.64155 0.23623,1.07179 -6.46981,4.5153 -4.07677,2.0934 -11.51352,5.98573 -16.52611,8.64963 -5.0126,2.6639 -9.22729,4.84345 -9.36599,4.84345 -0.1387,0 -0.41513,-5.14527 -0.61429,-11.43394 z"
+ id="path65" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.026678;stroke-opacity:1"
+ d="m 253.37378,373.7751 c -9.47201,-21.97927 -18.75026,-40.40952 -25.42134,-50.4968 l -3.56327,-5.38798 0.89094,-2.63458 c 0.49002,-1.44902 0.90742,-2.68685 0.92757,-2.75074 0.0639,-0.20262 29.10201,1.87029 41.16998,2.93895 12.73092,1.12738 19.96752,2.64805 36.70335,7.71269 9.27859,2.80791 25.33453,8.15671 25.75908,8.58125 0.14504,0.14506 -0.34354,0.49461 -1.08574,0.7768 -10.55468,4.01288 -24.90111,11.90431 -40.71785,22.39735 -5.69579,3.77866 -6.51981,4.50832 -6.89267,6.10329 -1.14307,4.8897 -1.61205,5.95821 -3.52679,8.03547 -1.44523,1.56789 -4.07996,3.2803 -8.77193,5.70124 -3.68844,1.90314 -7.81756,4.4594 -9.17582,5.6806 l -2.46957,2.22035 z"
+ id="path66" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00943211;stroke-opacity:1"
+ d="m 331.67631,329.80628 c -9.96039,-3.67942 -23.37238,-8.02 -34.03685,-11.01549 -1.96261,-0.55127 -3.50513,-1.00674 -3.42782,-1.01216 0.51917,-0.0364 19.61086,2.06579 32.43234,3.57111 l 5.8558,0.6875 -0.0533,0.93092 c -0.0744,1.29919 0.3555,1.89489 2.28593,3.16757 2.04457,1.34794 2.83107,2.46567 2.54289,3.61386 -0.1497,0.59647 -0.51104,0.7593 -1.93911,0.87386 -1.09423,0.0878 -1.38726,0.0224 -3.65988,-0.81717 z"
+ id="path67" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0188642;stroke-opacity:1"
+ d="m 324.44805,554.61739 c -0.70452,-0.18038 -2.07973,-0.28704 -3.05602,-0.23702 l -1.77507,0.0909 -7.78097,-23.05722 c -8.27665,-24.52607 -11.83671,-34.82958 -18.86389,-54.59568 -2.41496,-6.79283 -4.39084,-12.38298 -4.39084,-12.42256 0,-0.0925 -0.27342,-0.15615 10.33465,2.40508 12.5922,3.04028 15.35076,4.41315 18.6604,9.28682 3.58611,5.28077 5.08888,6.24984 10.87539,7.01304 6.59509,0.86985 9.98251,2.39572 13.75879,6.19768 3.34131,3.36403 5.02797,6.98901 6.05068,13.00406 0.47439,2.79018 1.07301,4.06557 2.39705,5.10705 0.86665,0.68172 1.46186,0.7643 5.50888,0.7643 3.2335,0 4.92016,0.15999 5.86987,0.5568 2.47946,1.03599 2.47953,1.1532 0.002,3.39653 -14.35326,12.99537 -27.34702,28.15695 -33.97852,39.64734 -1.03027,1.78516 -1.97628,3.22889 -2.10223,3.20828 -0.12595,-0.0206 -0.80543,-0.18504 -1.50996,-0.36542 z"
+ id="path68" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0188642;stroke-opacity:1"
+ d="m 330.14751,552.91585 c 6.22123,-10.69572 17.52316,-24.12447 30.29656,-35.99783 l 5.80204,-5.39321 2.23587,1.64596 c 3.18765,2.34661 4.32311,2.73629 8.85129,3.03766 2.61849,0.17428 4.44662,0.48584 5.22947,0.89124 1.12972,0.58503 4.82184,5.09619 4.82609,5.89669 0.001,0.20129 -2.17865,1.17158 -4.84382,2.15619 -22.41231,8.27998 -41.37511,18.6064 -51.20827,27.88608 -0.94162,0.88861 -1.82191,1.61566 -1.95622,1.61566 -0.1343,0 0.21085,-0.7823 0.76699,-1.73844 z"
+ id="path69" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 369.74131,603.81715 c 0.14937,-0.13612 5.19354,-3.09624 8.50693,-4.9922 4.60252,-2.63361 7.72655,-4.527 10.20191,-6.18308 2.06064,-1.37863 2.35347,-1.63783 2.8251,-2.50069 0.46197,-0.8452 0.64642,-1.68385 0.64595,-2.93686 -7.6e-4,-1.97435 -0.45077,-3.87901 -1.77808,-7.52562 -1.42739,-3.92158 -1.81251,-5.62592 -1.74644,-7.72881 0.038,-1.20948 0.2087,-2.12633 0.61924,-3.32575 0.81712,-2.38731 2.24297,-4.88858 5.6847,-9.97223 2.25306,-3.32792 3.2701,-4.99261 4.26345,-6.97838 2.00851,-4.01514 2.73375,-7.45348 2.84997,-13.51156 0.0735,-3.83041 -0.30563,-5.94833 -1.34031,-7.48766 -1.00327,-1.4926 -2.71294,-2.55529 -5.98479,-3.72001 -1.93733,-0.68965 -4.85582,-1.69339 -4.92373,-1.69339 -0.0661,0 -1.12716,0.39835 -6.42188,2.41097 -5.36552,2.03953 -8.60202,3.3404 -12.68448,5.09833 -15.11025,6.50658 -26.91964,13.26189 -34.41356,19.68555 -0.81993,0.70283 -4.92189,4.4498 -5.00483,4.57171 -0.0284,0.0417 0.1902,0.49078 0.70655,1.4513 1.2356,2.2985 1.55205,2.99803 1.87251,4.13927 0.18313,0.65218 0.17254,0.75328 -0.0187,0.17836 -0.63674,-1.91443 -1.61302,-3.46718 -3.08419,-4.90533 l -0.52641,-0.5146 0.70578,-0.71302 c 4.8799,-4.92993 11.43534,-9.74418 19.6914,-14.46118 9.94477,-5.68182 22.36713,-11.21493 37.21485,-16.57606 l 2.12578,-0.76756 0.23026,0.13644 c 0.94533,0.56015 2.06062,0.95062 4.23326,1.48211 2.15743,0.52776 3.0423,0.80679 3.91709,1.23516 2.30214,1.12734 3.61573,3.14563 4.06177,6.24075 0.24776,1.71927 0.21034,3.95743 -0.13351,7.98311 -0.39652,4.64256 -1.14948,7.5287 -2.73313,10.4764 -0.96549,1.7971 -1.8945,3.19381 -4.30571,6.4734 -2.72576,3.70741 -3.62857,5.0587 -4.61538,6.90802 -1.27848,2.39591 -1.94217,4.98499 -1.84706,7.20538 0.085,1.98338 0.48895,3.42184 1.8695,6.6564 1.03273,2.41966 1.37608,3.33858 1.63246,4.36898 0.62623,2.51691 0.52242,4.56859 -0.31714,6.26754 -0.30832,0.62391 -0.72286,1.15753 -1.28727,1.65707 -0.79221,0.70115 -1.30587,1.06416 -2.23927,1.58248 -0.33715,0.18723 -4.52414,2.58692 -9.30442,5.33264 -8.63059,4.95729 -8.69316,4.99222 -8.94153,4.99222 -0.14387,0 -0.23166,-0.0168 -0.20667,-0.0396 z"
+ id="path70" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 328.21,556.13514 c -0.0741,-0.0415 -0.0669,-0.07 0.088,-0.35126 4.68451,-8.50328 11.0278,-17.12348 19.22795,-26.12978 3.69175,-4.05467 8.43163,-8.8283 12.95011,-13.0423 1.7955,-1.67451 1.70785,-1.59855 1.84454,-1.59855 0.10042,0 -0.0411,0.14971 -0.87433,0.92511 -1.6464,1.53207 -3.23484,3.03146 -4.08217,3.85331 -9.41053,9.12756 -17.55775,18.56535 -23.50508,27.22843 -2.35284,3.42722 -4.53872,7.08003 -4.53872,7.58463 0,0.25826 0.5447,-0.16503 2.36367,-1.83687 3.96067,-3.64029 8.74999,-7.10154 15.02074,-10.85554 1.73577,-1.03912 3.47172,-2.03232 3.501,-2.00304 0.0126,0.0126 -0.45605,0.29695 -1.0414,0.63193 -5.30328,3.03492 -10.0159,6.19092 -13.94246,9.33715 -2.24364,1.79775 -3.60174,3.00543 -5.55857,4.94291 -1.15501,1.14358 -1.38538,1.35185 -1.45325,1.31387 z"
+ id="path71" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 325.86626,555.10297 c -0.44505,-0.15345 -1.31879,-0.359 -1.94431,-0.45741 -0.41966,-0.066 -0.78065,-0.082 -1.78419,-0.079 -1.15278,0.003 -1.31532,0.014 -1.94188,0.12595 -0.37609,0.0672 -0.69817,0.10672 -0.71574,0.0878 -0.0176,-0.019 -0.80866,-2.39164 -1.75799,-5.27265 -3.03463,-9.2095 -7.04901,-21.17168 -11.22665,-33.45356 -0.21984,-0.64631 -0.33313,-1.04078 -0.2989,-1.04078 0.032,0 0.41433,1.06056 0.91123,2.5276 2.46441,7.27591 4.2662,12.60751 8.17442,24.18856 2.36463,7.007 4.30605,12.74671 4.31426,12.75493 0.008,0.008 0.57372,-0.0109 1.25668,-0.0425 1.88093,-0.0869 2.68215,-0.0165 4.27771,0.37621 0.40072,0.0986 0.764,0.17932 0.80729,0.17932 0.0433,0 0.1421,-0.0722 0.21959,-0.16045 0.2154,-0.24533 0.85948,-1.24161 1.50042,-2.32091 0.31769,-0.53495 0.80464,-1.3535 1.08211,-1.81899 1.60611,-2.69438 3.93304,-6.12124 6.29057,-9.26406 1.22544,-1.63364 2.11714,-2.77827 2.14367,-2.75174 0.0122,0.0122 -0.31949,0.46839 -0.73708,1.01376 -3.70132,4.83387 -7.65796,10.85476 -9.95787,15.15307 -0.11088,0.20723 -0.22219,0.3742 -0.24736,0.37104 -0.0252,-0.003 -0.18985,-0.0554 -0.36598,-0.11615 z"
+ id="path72" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 290.63974,602.70161 c -2.08704,-4.45704 -3.43154,-7.84683 -4.2266,-10.65624 -0.31396,-1.1094 -0.51847,-2.05165 -0.73797,-3.39998 -0.24533,-1.50703 -0.38624,-2.27462 -0.57459,-3.12988 -0.6278,-2.85084 -1.52794,-4.60904 -3.11134,-6.07723 -1.15338,-1.06946 -2.29066,-1.85219 -5.23395,-3.60226 -3.97712,-2.36478 -7.51158,-5.0984 -10.61385,-8.20896 -1.4834,-1.48737 -2.50659,-2.66959 -3.38868,-3.91537 -1.22547,-1.73075 -1.67511,-2.71099 -2.19258,-4.77992 -0.50757,-2.02931 -0.85713,-4.23995 -1.14298,-7.22826 -0.24914,-2.60446 -0.54657,-4.59222 -0.96787,-6.46843 -0.32307,-1.43875 -0.57418,-2.16991 -0.9444,-2.74988 -0.84991,-1.3314 -3.07395,-3.70059 -5.51234,-5.8721 -1.12532,-1.00215 -1.94,-1.77712 -2.92084,-2.77847 -2.83922,-2.89858 -4.30382,-5.44159 -4.18747,-7.2708 0.0603,-0.94872 0.54304,-2.36858 1.5083,-4.43669 0.60249,-1.29087 1.06453,-2.90848 1.28815,-4.50981 0.0401,-0.28739 0.0923,-0.92397 0.1159,-1.41462 0.0236,-0.49065 0.0564,-0.95902 0.0729,-1.04081 l 0.03,-0.14872 27.82078,0.0115 27.82077,0.0115 0.81628,2.37892 c 1.3567,3.95386 3.06513,8.96044 7.93044,23.24021 2.55473,7.49817 4.6911,13.76686 4.7475,13.93041 l 0.10254,0.29736 -1.39534,1.16659 c -1.76878,1.47879 -2.17672,1.84683 -2.68574,2.42305 -1.66232,1.88177 -2.62153,3.95186 -2.97912,6.42927 -0.10873,0.75335 -0.10953,2.30553 -0.002,3.08802 0.2996,2.17182 1.11204,4.16369 2.40143,5.88761 1.17779,1.57471 2.65774,2.87871 4.00825,3.53173 1.45509,0.70358 3.18014,1.08013 5.20186,1.13546 2.5224,0.069 4.82772,-0.43449 6.57037,-1.43509 2.57994,-1.48136 0,0 5.40608,-7.07937 0.22112,-0.28956 0.18441,-0.66887 0.18323,-0.7091 -10e-4,-0.0402 -0.073,0.16982 -0.15969,0.46678 -1.27983,4.38656 -4.87835,7.65443 -9.32723,8.47021 -2.62496,0.48133 -5.30377,0.0814 -7.65762,-1.14335 -1.12989,-0.58788 -1.98538,-1.21998 -2.93827,-2.17101 -1.93306,-1.92928 -3.0707,-4.26074 -3.43779,-7.04536 -0.0851,-0.64544 -0.0707,-2.28199 0.0259,-2.95078 0.14383,-0.99577 0.3613,-1.843 0.69634,-2.71292 1.61661,-4.19741 5.49588,-7.15915 9.96278,-7.60637 0.78833,-0.0789 2.36527,-0.0322 3.0902,0.0915 2.60285,0.44432 4.86596,1.63034 6.66674,3.4938 1.50703,1.5595 2.84024,4.95536 3.35033,7.04406 0.22217,0.90975 -0.0284,-0.11845 7.2e-4,1.08523 l 0.0272,1.12084 0.033,-0.61013 c 0.0808,-1.49407 0,0 -0.28692,-2.87519 -0.10573,-1.05954 -0.60799,-2.77576 -1.94288,-5.25264 l -0.8876,-1.64694 0.12815,-0.11437 c 0.0705,-0.0629 0.88716,-0.81433 1.81482,-1.66982 0.92766,-0.8555 1.89337,-1.74107 2.14601,-1.96794 5.564,-4.99635 13.76728,-10.1998 24.31718,-15.42471 0.89324,-0.44239 1.80935,-0.89194 2.03581,-0.99901 0.22645,-0.10707 0.67936,-0.32244 1.00646,-0.4786 4.13648,-1.9748 9.38821,-4.25684 14.52514,-6.31162 2.35581,-0.94233 4.00641,-1.57933 8.95205,-3.45478 l 3.57661,-1.35629 1.73022,0.60045 c 0.95161,0.33026 2.17282,0.75574 2.71379,0.94552 3.8524,1.35148 5.5675,2.43262 6.60431,4.16311 0.50461,0.84221 0.83811,1.96096 1.01091,3.39121 0.20663,1.71028 0.16429,5.36335 -0.0929,8.01447 -0.44621,4.5998 -1.71198,8.09672 -4.62009,12.76382 -0.27437,0.44033 -1.0109,1.56231 -1.63672,2.49329 -1.74299,2.5929 -2.57077,3.84877 -3.19645,4.84955 -2.37168,3.79352 -3.36368,6.08062 -3.7006,8.53187 -0.08,0.58219 -0.0671,1.97663 0.0249,2.67629 0.20991,1.5976 0.59792,2.9802 1.64972,5.87867 0.89425,2.46429 1.2639,3.68478 1.55188,5.12383 0.33724,1.6852 0.34462,3.30952 0.02,4.41473 -0.20022,0.68175 -0.6256,1.43626 -1.04808,1.85898 -0.92772,0.92826 -5.76218,3.98071 -11.63726,7.34768 -3.99495,2.28948 -5.4667,3.14803 -8.10844,4.73005 l -1.28814,0.77141 h -39.18051 -39.1805 z m 43.24087,-33.57651 c -0.0146,-0.0365 -0.0254,-0.0257 -0.0276,0.0276 -0.002,0.0482 0.009,0.0752 0.024,0.06 0.0152,-0.0152 0.0168,-0.0547 0.004,-0.0877 z m 0.0457,-0.22874 c -0.0146,-0.0365 -0.0254,-0.0257 -0.0276,0.0276 -0.002,0.0482 0.009,0.0752 0.024,0.06 0.0152,-0.0152 0.0168,-0.0547 0.004,-0.0877 z m 0.0448,-0.23161 c -0.0127,-0.0315 -0.0231,-0.006 -0.0231,0.0572 0,0.0629 0.0104,0.0886 0.0231,0.0572 0.0127,-0.0315 0.0127,-0.0829 0,-0.11438 z m 0.0457,-0.27449 c -0.0127,-0.0315 -0.0231,-0.006 -0.0231,0.0572 0,0.0629 0.0104,0.0886 0.0231,0.0572 0.0127,-0.0315 0.0127,-0.0829 0,-0.11437 z m 0.0935,-0.73144 c -0.0109,-0.0569 -0.0203,-0.0211 -0.0208,0.0795 -5e-4,0.10064 0.008,0.1472 0.0199,0.10347 0.0115,-0.0437 0.0119,-0.12609 9.2e-4,-0.183 z"
+ id="path73"
+ sodipodi:nodetypes="csssssssssssssssssscccssscssscsssssccssssssscssscssscsssssssscssssssssscsssssscccccsccccscccsssssssssssscss" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d="m 319.49497,578.28276 c -1.82256,-0.3272 -3.22569,-0.9089 -4.40307,-1.8254 -2.21812,-1.72663 -3.82186,-4.05783 -4.56632,-6.6376 -0.32954,-1.14196 -0.46541,-2.12133 -0.46541,-3.35464 0,-1.91785 0.37244,-3.52656 1.20924,-5.22305 0.60362,-1.22377 1.31281,-2.21779 2.26727,-3.1779 0.34699,-0.34905 2.74329,-2.40841 3.65457,-3.14072 0.0193,-0.0155 -9.34195,-27.52026 -12.59395,-37.00305 -0.54322,-1.58402 -0.98767,-2.88732 -0.98767,-2.89622 0,-0.009 0.0858,-0.01 0.19074,-0.002 l 0.19073,0.0141 0.30804,0.91497 c 0.16943,0.50323 1.05331,3.10746 1.96418,5.78717 2.76425,8.13219 6.27036,18.58813 8.64434,25.77926 2.74027,8.30067 2.6226,7.9412 2.60281,7.95167 -0.009,0.005 -0.31655,0.15733 -0.68367,0.33916 -3.54322,1.75487 -5.97737,5.17601 -6.52066,9.1646 -0.10601,0.77833 -0.1064,2.29081 -7.7e-4,3.06275 0.28681,2.0961 1.08777,4.06448 2.31762,5.69559 0.62931,0.83464 1.49582,1.6999 2.35663,2.35324 1.44869,1.09951 3.3134,1.91462 5.12233,2.23906 0.22617,0.0406 0.22668,0.041 0.0457,0.0423 -0.10065,6.7e-4 -0.39437,-0.0367 -0.65273,-0.0831 z"
+ id="path74" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00235803;stroke-opacity:1"
+ d=""
+ id="path75" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.000294753;stroke-opacity:1"
+ d="m 321.67741,578.51687 c -0.24833,-0.008 -0.55259,-0.0233 -0.76056,-0.0392 -2.09937,-0.16021 -3.97224,-0.72495 -5.28557,-1.59381 -0.56047,-0.37079 -1.31208,-1.00451 -1.90878,-1.60939 -0.20937,-0.21224 -0.25121,-0.25846 -0.25121,-0.27747 0,-0.016 0.004,-0.0133 0.0583,0.0449 0.18487,0.19651 0.55853,0.56339 0.75377,0.74011 0.78383,0.70944 1.41576,1.15807 2.1616,1.53459 0.32619,0.16467 0.73704,0.34057 1.05221,0.45048 0.26635,0.0929 0.49059,0.16409 0.7234,0.22968 0.73753,0.20778 1.70864,0.38848 1.9972,0.37162 0.0601,-0.004 0.0779,-0.009 0.0543,-0.0158 -0.006,-0.002 -0.10008,-0.0199 -0.21016,-0.0407 -0.65428,-0.12313 -1.23997,-0.28253 -1.86997,-0.50894 -0.0849,-0.0305 -0.15826,-0.0577 -0.16297,-0.0605 -0.0215,-0.0124 0.0113,-0.002 0.1061,0.0323 0.0564,0.0207 0.17854,0.063 0.27132,0.094 1.57267,0.52516 3.24845,0.7188 4.89508,0.56564 1.83727,-0.17088 3.60033,-0.75889 5.17064,-1.72449 1.28457,-0.78988 2.41247,-1.82061 3.31574,-3.03005 0.51196,-0.68548 0.97394,-1.46619 1.30701,-2.20872 0.0187,-0.0416 0.0372,-0.0757 0.0411,-0.0758 0.004,-4e-5 0.007,10e-4 0.007,0.003 0,0.002 -0.0233,0.0573 -0.0519,0.12375 -0.79633,1.85273 -1.99167,3.43528 -3.5022,4.6367 -0.48689,0.38726 -1.07029,0.77315 -1.60133,1.05921 -0.67078,0.36134 -1.48841,0.66903 -2.35019,0.88443 -0.96696,0.24169 -1.97116,0.37657 -3.07087,0.41248 -0.14923,0.005 -0.75064,0.006 -0.88924,0.002 z"
+ id="path76" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.000294753;stroke-opacity:1"
+ d="m 334.1165,565.39374 c -0.11118,-1.21046 -0.42741,-2.45485 -0.91063,-3.58336 -0.3911,-0.91336 -0.91494,-1.81098 -1.49805,-2.56695 -0.0625,-0.081 -0.0657,-0.0858 -0.0582,-0.0858 0.006,0 0.15059,0.18632 0.2508,0.3231 0.49501,0.67567 0.90578,1.38497 1.24687,2.15304 0.16444,0.37029 0.29577,0.71004 0.44761,1.15801 0.10431,0.30773 0.14245,0.39981 0.15881,0.38345 0.0109,-0.0109 -0.0434,-0.24588 -0.12161,-0.52642 -0.22939,-0.82326 -0.459,-1.40592 -0.9183,-2.33031 -0.14473,-0.29129 -0.51624,-1.01073 -0.58396,-1.13084 -0.015,-0.0267 -0.0158,-0.03 -0.006,-0.03 0.008,1e-5 0.0686,0.10854 0.25632,0.4587 0.33241,0.62005 0.47429,0.90296 0.63486,1.26581 0.23045,0.52078 0.43873,1.08962 0.59663,1.62943 0.26515,0.90648 0.431,1.8137 0.50414,2.75767 0.007,0.0856 0.0113,0.16671 0.0103,0.18014 -10e-4,0.0137 -0.005,-0.0106 -0.009,-0.0557 z"
+ id="path77" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.000201341;stroke-opacity:1"
+ d="m 325.39258,564.99414 v -3.79297 h 3.76392 3.76393 l 0.0392,0.0811 c 0.4229,0.87464 0.72799,1.7564 0.93292,2.69629 0.13261,0.6082 0.22263,1.27573 0.2539,1.88281 0.006,0.11984 0.007,0.12471 0.005,0.0234 -0.003,-0.16044 -0.0158,-0.40513 -0.0329,-0.62696 -0.10368,-1.34756 -0.41312,-2.68209 -0.91047,-3.92662 -0.0277,-0.0692 -0.0503,-0.12678 -0.0503,-0.12793 0,-10e-4 1.85362,-0.002 4.11914,-0.002 h 4.11914 v 3.79297 3.79297 h -8.00195 -8.00195 z m 8.76455,1.03034 c -8.7e-4,-0.007 -0.002,-0.002 -0.002,0.0107 -2e-5,0.0129 6.9e-4,0.0186 0.002,0.0128 8.9e-4,-0.006 9.1e-4,-0.0164 4e-5,-0.0234 z"
+ id="path78" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.000201341;stroke-opacity:1"
+ d="m 325.39258,564.99414 v -3.79297 h 3.76395 3.76395 l 0.0431,0.0889 c 0.61208,1.26148 0.99796,2.62138 1.13973,4.0166 0.0151,0.14827 0.0293,0.32189 0.0374,0.45508 0.004,0.058 0.008,0.1248 0.01,0.14844 0.007,0.0961 -0.003,-0.20503 -0.0138,-0.38672 -0.0838,-1.44812 -0.39586,-2.85659 -0.92908,-4.19387 -0.0271,-0.0679 -0.0493,-0.12464 -0.0493,-0.12598 0,-10e-4 1.85362,-0.002 4.11914,-0.002 h 4.11914 v 3.79297 3.79297 h -8.00195 -8.00195 z"
+ id="path79" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 677.29101,604.348 c -0.89653,-0.44378 -1.92262,-1.34911 -2.47487,-2.18361 -0.80301,-1.21343 -0.9417,-1.79763 -0.93212,-3.92624 0.01,-2.1294 0.20338,-2.90828 1.30518,-5.24584 0.71166,-1.50983 2.08066,-4.05542 3.04223,-5.65685 2.63843,-4.39415 3.82833,-6.93514 5.51903,-11.78572 0.8462,-2.42773 1.94688,-5.00397 2.44594,-5.72497 0.49906,-0.72101 2.46547,-3.61786 4.36979,-6.43744 2.58233,-3.82346 3.79242,-5.30345 4.76074,-5.82259 2.79536,-1.49864 4.57433,0.64541 4.81632,5.80473 0.11773,2.50994 -0.13596,4.49332 -1.49458,11.68512 -2.12363,11.24136 -2.46387,12.74787 -3.69969,16.38127 -3.38595,9.955 -11.55869,15.9312 -17.65797,12.91214 z"
+ id="path80" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 1001.6168,664.27018 c -0.389,-0.0833 -2.68188,-1.13873 -5.09544,-2.34547 l -4.38829,-2.19409 -3.74344,-0.0306 c -2.05889,-0.0168 -3.94465,-0.0566 -4.19058,-0.0884 -0.77634,-0.10029 -1.81964,-2.25397 -2.42411,-5.00409 -1.56381,-7.11474 -5.92838,-11.38004 -11.13314,-10.87993 l -1.72942,0.16618 -0.36283,-1.34748 c -0.81233,-3.01677 -4.30309,-6.16733 -8.03545,-7.25236 -6.96486,-2.02474 -20.54635,1.04721 -30.17189,6.82447 -6.89599,4.13898 -7.47111,4.21675 -19.52924,2.64063 -4.43976,-0.58032 -8.1348,-1.11764 -8.21119,-1.19404 -0.0764,-0.0764 0.81149,-2.96923 1.97308,-6.42853 3.2986,-9.82344 5.58691,-18.73313 7.59073,-29.55496 2.23806,-12.08693 3.98565,-14.10847 14.3212,-16.56632 2.43075,-0.57804 5.45363,-1.44047 6.71751,-1.9165 2.35072,-0.88538 7.82025,-3.57973 9.72259,-4.78945 l 1.06066,-0.67449 10.45164,5.52103 c 5.7484,3.03657 13.82626,7.35067 17.9508,9.58689 l 7.49916,4.06587 -0.27313,1.06066 c -0.15022,0.58336 -0.27162,2.49255 -0.26977,4.24264 0.003,2.94835 0.0923,3.3464 1.21411,5.42133 1.33864,2.47591 3.24073,4.23225 5.88176,5.43105 2.69237,1.22211 7.07428,1.14672 9.751,-0.16777 4.30068,-2.11196 6.71818,-5.76821 6.94798,-10.50783 0.1868,-3.85405 -0.7636,-6.23202 -3.61768,-9.05196 -1.59509,-1.576 -2.70337,-2.33647 -4.1111,-2.82094 -2.62549,-0.90355 -6.28691,-0.8425 -8.81271,0.14696 -1.53157,0.59997 -2.02125,0.66679 -2.3456,0.32008 -0.22545,-0.241 -2.05001,-2.42692 -4.05456,-4.8576 -4.34015,-5.26276 -11.52798,-13.467 -16.72384,-19.0887 -2.06521,-2.23447 -3.75493,-4.17278 -3.75493,-4.30736 0,-0.50484 3.12546,-2.77993 4.97445,-3.62099 1.1002,-0.50046 3.27832,-1.05066 5.10182,-1.28873 4.41345,-0.57621 6.22603,-1.35883 9.89949,-4.27433 4.17288,-3.31187 5.32735,-3.81841 8.72487,-3.82812 1.49295,-0.004 3.95241,-0.17995 5.46547,-0.3904 3.96037,-0.55084 5.62547,-0.21407 7.32002,1.48049 1.2613,1.26131 1.3687,1.51304 1.1957,2.803 -0.1046,0.77948 -0.7584,2.59842 -1.4529,4.04207 -0.6946,1.44366 -1.3607,3.23688 -1.48031,3.98493 -0.80911,5.05989 4.32821,9.25918 8.95991,7.32393 2.8917,-1.20826 3.7328,-2.7221 6.0797,-10.94328 2.8509,-9.98678 5.4741,-14.04061 8.0103,-12.37884 1.3889,0.91004 1.9071,2.07843 2.2482,5.06858 0.4161,3.6484 0.8859,4.51369 3.7876,6.97531 4.604,3.90585 4.7574,4.31834 5.0554,13.5932 0.3,9.33521 0.3397,9.4434 6.9158,18.80229 3.522,5.01245 4.3762,6.58302 5.4456,10.01231 0.8775,2.8138 1.0688,8.3178 0.3914,11.26182 -0.7277,3.16246 -2.5008,7.19452 -4.2745,9.72021 -2.3026,3.27876 -5.2484,5.68319 -9.6609,7.88546 -1.9731,0.98477 -4.1047,2.17945 -4.7369,2.65484 -2.3406,1.76018 -2.7206,3.90605 -1.4874,8.40113 0.6511,2.37328 0.672,2.75103 0.2128,3.85004 -0.6301,1.50804 -2.2519,2.14766 -6.6739,2.63213 -3.9992,0.43814 -5.1214,1.18197 -8.5206,5.64802 -3.1142,4.09151 -4.2081,5.17444 -5.9698,5.91035 -1.2878,0.53796 -2.2192,0.61884 -3.6352,0.31567 z"
+ id="path81" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 1047.8701,551.56468 c -2.1251,-0.66448 -3.5788,-1.64771 -7.4508,-5.03959 -1.8882,-1.65397 -4.2009,-3.39636 -5.1395,-3.87197 -2.2675,-1.14904 -5.5672,-1.50529 -9.9397,-1.07315 -1.964,0.1941 -5.1619,0.36573 -7.1065,0.3814 -3.1919,0.0257 -3.7337,-0.0684 -5.5714,-0.96748 -2.4164,-1.18222 -3.3426,-2.32061 -4.8413,-5.95014 -2.609,-6.31846 -5.1901,-8.57015 -13.30242,-11.60465 -2.98306,-1.11584 -5.46338,-2.91058 -6.32495,-4.57668 l -0.49999,-0.96686 4.66351,-0.004 c 2.56493,-0.002 6.79334,-0.2087 9.39645,-0.45894 11.3072,-1.08698 19.1758,1.1322 28.0657,7.91536 4.5105,3.44163 5.5791,3.90961 8.9207,3.90666 1.9015,-0.002 4.1572,-0.32934 6.8833,-0.99985 5.248,-1.29085 7.0071,-1.04232 7.8236,1.10535 0.4319,1.13588 -0.3802,2.96254 -1.7511,3.93867 -1.3323,0.94866 -5.1189,1.78979 -8.0945,1.79806 -2.1747,0.006 -2.2096,0.0216 -2.2045,0.97841 0.01,1.81317 1.0684,5.4938 2.1801,7.57954 1.3422,2.51817 4.9006,5.94474 7.3318,7.06005 1.1235,0.51544 1.6079,0.90596 1.3372,1.07804 -0.6327,0.40223 -2.705,0.29412 -4.3757,-0.22828 z"
+ id="path82" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 986.94429,681.52047 c 0,-3.37096 2.11682,-13.12779 2.84818,-13.12779 0.14867,0 1.2416,0.45935 2.42874,1.02078 2.14848,1.01607 2.20726,1.4541 0.1951,1.4541 -1.00857,0 -1.44229,0.54975 -0.66811,0.84683 1.35348,0.51938 4.02808,0.13813 7.61119,-1.08494 4.21201,-1.43772 4.90901,-1.34562 4.90901,0.64864 0,1.82138 -2.126,3.52532 -9.84823,7.89325 -3.95812,2.23882 -7.25942,4.07058 -7.33623,4.07058 -0.0768,0 -0.13965,-0.77465 -0.13965,-1.72145 z"
+ id="path83" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d=""
+ id="path84" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 1090.8895,668.00383 c -3.1036,-0.60762 -4.3107,-2.39123 -3.5444,-5.23717 0.3072,-1.14054 1.1391,-2.27895 3.3437,-4.57528 1.6142,-1.68132 3.1753,-3.53425 3.4691,-4.11761 0.7266,-1.44272 1.3273,-4.43025 1.3273,-6.60143 0,-1.59368 0.062,-1.74203 0.5579,-1.33063 1.1096,0.92089 2.3625,3.99824 2.5429,6.24579 0.1244,1.54864 0.3232,2.2166 0.6599,2.2166 0.2651,0 0.4819,0.30057 0.4819,0.66794 0,1.34826 1.1306,2.17614 3.4106,2.49737 4.4797,0.63115 4.9378,1.6788 2.0125,4.6019 -1.1354,1.1345 -2.6212,2.72108 -3.3018,3.52572 -0.721,0.85247 -1.8276,1.67198 -2.6516,1.9638 -1.5621,0.55317 -5.8371,0.62675 -8.308,0.143 z"
+ id="path85" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 1046.6109,690.84171 c -1.1467,-0.64768 -1.6478,-2.15027 -0.9342,-2.80136 0.2683,-0.24477 1.7215,-0.8841 3.2294,-1.42073 3.4385,-1.22372 5.9476,-2.86352 9.9563,-6.50678 2.5653,-2.33147 3.6183,-3.03548 5.6569,-3.78237 1.3776,-0.50473 4.5593,-1.9655 7.0704,-3.24616 5.2699,-2.68771 6.9397,-2.98999 8.4873,-1.53641 1.5659,1.47088 1.111,4.0208 -1.0889,6.10376 -0.5521,0.52276 -3.0136,1.89803 -5.4701,3.05616 -5.2464,2.47348 -7.5076,3.86901 -10.9434,6.75388 -3.959,3.32411 -4.9685,3.69495 -10.3997,3.82043 -3.6408,0.0841 -4.7974,-0.007 -5.564,-0.44042 z"
+ id="path86" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 975.62775,597.80704 c -6.55019,-3.58948 -25.29242,-13.52338 -27.66272,-14.66201 -0.92366,-0.4437 -1.6775,-0.89434 -1.6752,-1.00144 0.002,-0.10709 1.05382,-1.06532 2.33672,-2.12941 1.28289,-1.06408 3.86192,-3.67404 5.73118,-5.79991 l 3.39864,-3.86521 2.7961,2.97148 c 4.85274,5.15711 11.46774,12.6522 16.90708,19.15645 4.34122,5.19114 5.19694,6.39653 4.91499,6.92337 -0.83989,1.56934 -1.07815,1.51307 -6.74679,-1.59332 z"
+ id="path87" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 586.72185,472.08699 c -14.42056,-10.30043 -46.29617,-31.22245 -69.44453,-45.58092 l -8.45657,-5.24545 -9.62154,4.91912 c -5.29186,2.70551 -13.36333,6.92124 -17.9366,9.36828 -4.57328,2.44705 -8.41033,4.44917 -8.52678,4.44917 -0.11645,0 -0.21173,-0.36612 -0.21173,-0.8136 0,-0.69685 1.05288,-1.37702 7.33624,-4.73934 4.03493,-2.15915 11.75123,-6.20015 17.14734,-8.98002 5.39611,-2.77986 9.8111,-5.14731 9.8111,-5.261 0,-0.11368 -5.72643,-3.62173 -12.72541,-7.79565 -6.99898,-4.17392 -12.72655,-7.70268 -12.72793,-7.84167 -10e-4,-0.139 0.28304,-0.40555 0.63204,-0.59233 0.5091,-0.27246 3.22357,1.21181 13.73069,7.50795 l 13.09615,7.84754 12.8742,-6.26519 c 18.27421,-8.8931 35.44836,-16.88804 56.42278,-26.26603 4.02214,-1.79837 5.59274,-2.34148 6.27557,-2.1701 0.50092,0.12572 0.91077,0.35636 0.91077,0.51252 0,0.15616 -3.69906,1.92819 -8.22012,3.93784 -19.41033,8.62804 -45.91073,21.03662 -59.79011,27.99619 l -6.66871,3.34391 9.85069,6.14754 c 20.60653,12.85996 42.72372,27.33487 61.7133,40.38915 7.94116,5.4591 8.69142,6.06106 8.31184,6.66887 -0.22948,0.36745 -0.49829,0.65499 -0.59736,0.63895 -0.0991,-0.016 -1.53246,-0.99511 -3.18532,-2.17573 z"
+ id="path88" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 584.96432,384.50312 c -0.28605,-0.1809 -0.44515,-0.39959 -0.35355,-0.48597 0.0916,-0.0864 3.90536,-1.77899 8.47504,-3.76134 4.56968,-1.98234 8.43514,-3.72545 8.58993,-3.87357 0.28773,-0.27535 -11.44463,-3.70957 -27.85859,-8.15459 -7.31298,-1.98041 -9.31728,-2.65071 -9.80324,-3.27851 -0.87292,-1.1277 -0.77754,-1.29648 0.52246,-0.92454 0.63198,0.18082 6.63797,1.82226 13.34664,3.64766 6.70868,1.82539 15.4791,4.27507 19.48982,5.44373 l 7.29223,2.12483 12.64708,-5.31453 c 11.84072,-4.97567 12.73664,-5.29511 14.05156,-5.01008 1.37845,0.2988 1.17089,0.40206 -11.20483,5.5741 -6.93512,2.89831 -12.48279,5.38706 -12.32817,5.53056 0.15462,0.1435 4.01996,1.39153 8.58963,2.7734 4.56968,1.38186 9.7404,2.97504 11.49049,3.5404 l 3.18198,1.02792 -2.50061,0.033 c -2.14067,0.0283 -3.64192,-0.31646 -10.42982,-2.39506 -4.36107,-1.33545 -9.16058,-2.79002 -10.66556,-3.23239 l -2.73634,-0.80429 -9.11441,3.93949 c -5.01292,2.16672 -9.35003,3.93706 -9.63802,3.93408 -0.288,-0.003 -0.75767,-0.15343 -1.04372,-0.33433 z"
+ id="path89" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 644.20451,389.34737 c -2.23042,-0.76994 -3.43625,-1.4064 -4.12503,-2.17728 -0.53531,-0.59912 -0.93555,-1.12704 -0.88943,-1.17316 0.0461,-0.0461 2.02171,0.56439 4.3902,1.35669 3.91767,1.31054 4.30634,1.51752 4.30634,2.29333 0,1.02585 0.20609,1.04262 -3.68208,-0.29958 z"
+ id="path90" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 658.84262,410.82407 c -0.39707,-0.47844 -0.26058,-0.77262 0.94872,-2.0447 4.41468,-4.64392 9.65497,-10.5801 9.52454,-10.78938 -0.0831,-0.13333 -4.85753,-1.83342 -10.60984,-3.77796 -9.55513,-3.23007 -10.45907,-3.60427 -10.46233,-4.33103 -0.002,-0.43752 0.14463,-0.79549 0.32575,-0.79549 0.18113,0 4.75523,1.52649 10.16466,3.39221 5.40944,1.86571 10.37077,3.56859 11.02519,3.78415 1.148,0.37816 1.24043,0.33655 2.62728,-1.1825 10.55872,-11.56527 30.27761,-31.33242 42.33062,-42.43423 14.57063,-13.42076 28.41301,-24.51473 39.85641,-31.94288 2.96669,-1.92575 5.34839,-3.54695 5.29266,-3.60267 -0.19554,-0.19554 -26.659,9.27498 -46.04199,16.47712 -22.68623,8.42953 -42.82434,16.23241 -66.09373,25.60924 -11.67377,4.70417 -13.92742,5.50231 -15.50221,5.49021 -1.81188,-0.0139 -1.82687,-0.0227 -0.89723,-0.52755 1.15897,-0.62936 28.29918,-11.56505 41.83453,-16.85651 23.04176,-9.00786 51.46466,-19.60213 74.42299,-27.7402 18.88289,-6.69344 21.56676,-7.56748 21.56676,-7.02352 0,0.26692 0.0823,0.69974 0.18285,0.96181 0.12219,0.31843 -0.89981,1.04574 -3.08084,2.1925 -17.86345,9.39234 -39.20218,26.61959 -67.0539,54.13416 -10.82681,10.69574 -26.26037,26.7226 -26.26803,27.27782 -0.002,0.15281 1.48071,0.82026 3.29515,1.48322 16.57147,6.05492 18.50345,6.84565 19.43956,7.95642 0.51578,0.61201 0.89338,1.15941 0.83911,1.21645 -0.0543,0.057 -1.82862,-0.55705 -3.94299,-1.36465 -4.28655,-1.63727 -20.99629,-7.75466 -21.18196,-7.75466 -0.0653,0 -2.68699,2.824 -5.8259,6.27557 -3.13891,3.45156 -5.82972,6.32065 -5.97957,6.37573 -0.14985,0.0551 -0.48117,-0.15131 -0.73626,-0.45868 z"
+ id="path91" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 633.21412,385.72933 -5.65685,-1.87542 2.43675,-0.0358 c 3.31761,-0.0488 6.95189,1.05728 8.64368,2.6307 0.74969,0.69724 1.07087,1.19343 0.7636,1.17969 -0.29168,-0.013 -3.07591,-0.86764 -6.18718,-1.89912 z"
+ id="path92" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 772.69093,440.63508 c -11.92456,-5.79967 -32.19856,-14.90189 -47.42057,-21.28994 -3.04366,-1.2773 -5.18208,-2.40231 -5.80786,-3.05549 -0.54475,-0.5686 -0.92151,-1.10277 -0.83724,-1.18704 0.28629,-0.28629 18.16619,7.27313 33.24675,14.05634 10.08254,4.53511 26.14361,12.12082 26.50984,12.52071 0.40413,0.44128 0.73893,1.85497 0.4317,1.82288 -0.15894,-0.0166 -2.91412,-1.30696 -6.12262,-2.86746 z"
+ id="path93" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 699.30502,408.88652 c -2.08764,-1.01279 -3.64255,-2.28737 -3.25871,-2.67121 0.19623,-0.19624 9.46948,3.30765 9.46948,3.57802 0,0.0835 -0.91482,0.14776 -2.03293,0.14279 -1.51555,-0.007 -2.57882,-0.27386 -4.17784,-1.0496 z"
+ id="path94" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 710.73019,413.49205 -7.6903,-3.10127 1.67989,-0.20418 c 1.48986,-0.18108 2.34672,0.0598 7.5747,2.12892 3.48055,1.37756 5.97845,2.56453 6.09903,2.89818 0.11231,0.3108 0.29691,0.76396 0.41022,1.00703 0.11331,0.24307 0.0734,0.42634 -0.0886,0.40727 -0.16204,-0.0191 -3.75526,-1.43025 -7.98492,-3.13595 z"
+ id="path95" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d=""
+ id="path96" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 607.65441,471.02097 c -0.39079,-0.47087 1.74323,-3.19444 15.44351,-19.71007 7.07787,-8.53233 20.78269,-24.58429 26.49256,-31.02975 2.9633,-3.34506 3.24544,-3.57276 3.60185,-2.90681 0.46201,0.86327 1.08067,0.0542 -8.13501,10.63815 -11.22307,12.88934 -29.89558,35.18694 -34.82417,41.58498 -1.46672,1.90402 -1.95586,2.17403 -2.57874,1.4235 z"
+ id="path97" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 924.89567,573.6704 c -87.32742,-43.94026 -165.89091,-74.33814 -227.6,-88.06327 -1.89593,-0.42169 -3.44714,-0.89326 -3.44714,-1.04794 0,-0.15468 0.23891,-0.47952 0.53091,-0.72186 0.43018,-0.35702 1.48673,-0.22558 5.56847,0.69277 53.30669,11.99343 119.50435,36.70014 196.66349,73.4 10.42165,4.95694 38.83871,19.04923 44.61237,22.12371 3.64295,1.93987 3.97153,2.19404 3.39833,2.62877 -0.349,0.26468 -0.7141,0.46664 -0.81133,0.44879 -0.0972,-0.0179 -8.60902,-4.27529 -18.9151,-9.46097 z"
+ id="path98" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 629.41342,478.27015 c 2.77098,-0.0597 7.3053,-0.0597 10.07627,0 2.77098,0.0597 0.50382,0.10861 -5.03813,0.10861 -5.54195,0 -7.80911,-0.0489 -5.03814,-0.10861 z"
+ id="path99" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d="m 688.36845,483.77444 c -11.23854,-2.22232 -23.44623,-4.0239 -34.64823,-5.11329 -8.01489,-0.77945 -28.44915,-0.89055 -35.35534,-0.19222 -2.52791,0.25562 -4.91432,0.49426 -5.30313,0.53033 -0.47847,0.0444 -0.74168,-0.17761 -0.81445,-0.68693 -0.12036,-0.84236 -0.22289,-0.81808 6.82468,-1.61635 5.94316,-0.67317 25.0159,-0.56139 33.4108,0.19581 7.7983,0.70338 17.45288,1.9501 25.27907,3.26432 6.03597,1.01361 16.20133,2.97284 16.3879,3.15855 0.0684,0.0681 -0.0907,0.41968 -0.35355,0.78121 -0.46328,0.6371 -0.63041,0.6272 -5.42775,-0.32143 z"
+ id="path100" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d=""
+ id="path101" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d=""
+ id="path102" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0182233;stroke-opacity:1"
+ d=""
+ id="path103" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00455583;stroke-opacity:1"
+ d="m 809.50468,459.64114 c -7.25639,-3.97372 -16.91826,-9.01252 -25.69163,-13.39856 l -4.43424,-2.21678 -0.13498,-0.46751 c -0.3463,-1.19936 -0.50953,-1.85575 -0.47107,-1.89421 0.0481,-0.0481 10.76419,5.2965 14.86621,7.41446 8.66978,4.4764 18.14454,9.54812 18.22395,9.75506 0.0514,0.13401 -0.13974,1.71304 -0.22415,1.85155 -0.0348,0.057 -0.86681,-0.35002 -2.13409,-1.04401 z"
+ id="path104" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00455583;stroke-opacity:1"
+ d="m 856.30631,487.35205 c -6.67985,-4.37271 -18.64187,-11.701 -27.62136,-16.92167 -5.401,-3.14014 -15.07762,-8.60472 -16.94223,-9.56761 -0.0255,-0.0132 0.2495,-1.94751 0.28155,-1.98002 0.0314,-0.0319 0.56041,0.25581 4.81664,2.61996 13.60952,7.55946 28.55621,16.51694 40.99602,24.56869 l 0.82352,0.53303 -0.33738,0.11076 c -0.46328,0.15211 -0.9376,0.46264 -1.18822,0.77793 l -0.20982,0.26396 z"
+ id="path105" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 922.2154,535.42845 c -0.68464,-0.0662 -1.13373,-0.17667 -1.32765,-0.32672 -0.16118,-0.1247 -2.31124,-1.91494 -4.7779,-3.97831 -8.91337,-7.45602 -20.68479,-16.6562 -29.0161,-22.67808 -0.70469,-0.50935 -1.28125,-0.96225 -1.28125,-1.00645 0,-0.18945 0.98545,-0.60586 1.52786,-0.64562 l 0.59037,-0.0433 3.03463,2.24524 c 10.31089,7.62874 20.1278,15.39857 29.45611,23.31373 1.74431,1.48007 3.31931,2.81557 3.5,2.96778 l 0.32853,0.27676 -0.5,-0.0125 c -0.275,-0.007 -0.96557,-0.0575 -1.5346,-0.11252 z"
+ id="path106" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 878.125,502.03093 c -1.08047,-0.78842 -6.7767,-4.7319 -8.5726,-5.93477 -1.28154,-0.85837 -1.37741,-0.95605 -3.08887,-3.14726 -0.97146,-1.24377 -1.73543,-2.2614 -1.69771,-2.2614 0.26327,0 17.4974,11.84349 17.38811,11.94931 -0.0159,0.0154 -0.33018,-0.0318 -0.69838,-0.10482 -0.48539,-0.0963 -0.88459,-0.0932 -1.45192,0.0113 -0.43035,0.0793 -0.83222,0.14011 -0.89304,0.13514 -0.0608,-0.005 -0.50434,-0.29636 -0.98559,-0.64753 z"
+ id="path107" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 882.48202,505.12953 c -1.72864,-1.23999 -3.12023,-2.29231 -3.09243,-2.33847 0.10837,-0.17999 1.65642,-0.24971 2.34953,-0.10582 0.88343,0.1834 1.9854,0.91492 3.44838,2.28914 0.58437,0.54891 1.27244,1.15209 1.52904,1.34039 l 0.46655,0.34236 -0.34155,0.0683 c -0.18785,0.0376 -0.53842,0.20113 -0.77904,0.36347 l -0.4375,0.29515 z"
+ id="path108" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 864.6875,492.82613 c -1.61563,-1.07676 -3.99835,-2.6492 -5.29493,-3.49432 l -2.35744,-1.53657 0.29494,-0.32085 c 0.16221,-0.17647 0.53749,-0.42989 0.83395,-0.56316 0.47118,-0.21181 0.57343,-0.22044 0.8125,-0.0686 0.15041,0.0956 1.38747,0.90074 2.74903,1.78932 l 2.47554,1.6156 1.7541,2.22991 c 0.96476,1.22644 1.73514,2.24711 1.71196,2.26815 -0.0232,0.0211 -1.36403,-0.84273 -2.97965,-1.91949 z"
+ id="path109" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 927.3125,539.36872 c -0.65313,-0.0879 -1.31083,-0.16464 -1.46155,-0.17052 -0.16409,-0.006 -1.12601,-0.74991 -2.39732,-1.85297 -1.16779,-1.01325 -2.10821,-1.85732 -2.08982,-1.87571 0.0429,-0.0429 2.54717,0.20035 2.91283,0.28294 0.38154,0.0862 4.69846,3.82953 4.37425,3.79307 -0.083,-0.009 -0.68527,-0.0889 -1.33839,-0.17681 z"
+ id="path110" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 950.375,562.49482 c -8.72499,-8.75033 -13.78619,-13.54979 -21.59062,-20.47408 -1.63109,-1.44715 -2.94467,-2.65212 -2.91907,-2.67772 0.0256,-0.0256 0.74116,0.0438 1.59014,0.15427 1.3724,0.17854 1.58523,0.23951 1.91907,0.54968 0.20651,0.19188 1.50048,1.35587 2.87548,2.58664 2.90381,2.59923 6.35805,5.78472 9.81021,9.04694 2.92671,2.76568 13.41946,13.18097 15.50641,15.39194 l 1.48429,1.57249 -0.65046,0.62312 -0.65045,0.62313 z"
+ id="path111" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 981.625,597.09546 c -5.81194,-7.23757 -13.90794,-16.53073 -20.99068,-24.09456 -1.09488,-1.16925 -2.15641,-2.30439 -2.35896,-2.52255 l -0.36828,-0.39664 0.54646,-0.63454 c 0.30055,-0.349 0.60588,-0.63458 0.6785,-0.63461 0.20393,-9e-5 5.77557,5.98323 10.41768,11.18744 4.45521,4.99468 9.12196,10.47844 13.23188,15.54838 l 1.76185,2.17339 -0.74083,0.54536 c -0.40745,0.29995 -0.75473,0.5443 -0.77172,0.54299 -0.017,-10e-4 -0.64965,-0.77291 -1.4059,-1.71466 z"
+ id="path112" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 977.375,601.17556 c -7.91932,-4.34005 -20.88259,-11.25779 -28.76595,-15.3507 -2.27751,-1.18246 -4.23538,-2.21897 -4.35081,-2.30338 -0.18499,-0.13527 -0.11231,-0.22364 0.6131,-0.74549 l 0.82297,-0.59203 4.46534,2.3318 c 9.9109,5.17546 19.57438,10.33753 28.22468,15.07716 l 2.75933,1.51188 -0.44683,0.78763 c -0.24576,0.4332 -0.47496,0.78822 -0.50933,0.78893 -0.0344,7.1e-4 -1.3,-0.6769 -2.8125,-1.5058 z"
+ id="path113" />
+ <path
+ style="fill:#020817;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 979.8125,599.88995 c -0.51563,-0.2288 -2.625,-1.33068 -4.6875,-2.44864 -8.23101,-4.46152 -22.30078,-11.92354 -26.01838,-13.79907 -1.17886,-0.59473 -2.2661,-1.18069 -2.41608,-1.30214 l -0.27269,-0.22081 0.73186,-0.68465 c 0.40252,-0.37655 1.30411,-1.18067 2.00352,-1.78693 1.43596,-1.2447 3.81633,-3.72939 6.67835,-6.97104 l 1.94089,-2.19833 1.94087,2.07333 c 9.46112,10.10682 22.21355,24.99147 22.54588,26.31556 0.0993,0.39561 -0.0109,0.71814 -0.38225,1.11883 -0.40972,0.44209 -0.90334,0.41911 -2.06447,-0.0961 z"
+ id="path114" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.000805365;stroke-opacity:1"
+ d="m 974.625,599.66592 c -0.043,-0.0244 -0.58438,-0.31866 -1.20313,-0.65395 -7.99026,-4.32975 -17.34645,-9.3086 -24.1875,-12.87125 -3.31067,-1.72412 -4.75107,-2.48579 -4.94508,-2.61492 -0.0509,-0.0339 -0.0918,-0.0745 -0.10065,-0.1 -0.0348,-0.0998 0.11023,-0.22643 0.95785,-0.83658 l 0.54891,-0.39513 1.62105,0.8462 c 0.89158,0.46541 1.69839,0.88681 1.79292,0.93644 0.0945,0.0496 0.71329,0.37311 1.375,0.71883 1.96443,1.02634 4.73445,2.48028 6.26563,3.28874 5.99528,3.16549 10.7217,5.69119 15.92969,8.51249 0.98398,0.53305 1.84061,0.99708 1.90362,1.03119 0.063,0.0341 0.11756,0.0699 0.12123,0.0795 0.004,0.01 0.005,0.48667 0.003,1.06012 l -0.004,1.04263 z"
+ id="path115" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00322146;stroke-opacity:1"
+ d="m 978.59157,601.79296 c -0.87537,-0.4742 -2.10462,-1.14192 -2.73169,-1.48382 l -1.14011,-0.62164 -5.1e-4,-1.02083 c -2.8e-4,-0.56146 0.0235,-1.01146 0.0528,-1 0.0293,0.0115 1.46369,0.79159 3.18747,1.73362 l 3.13414,1.7128 -0.22889,0.4122 c -0.12588,0.22672 -0.33076,0.57368 -0.45527,0.77103 l -0.2264,0.35882 z"
+ id="path116" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00227791;stroke-opacity:1"
+ d="m 478.71129,403.48256 c -1.45285,-0.85476 -5.67908,-3.29298 -8.90275,-5.13621 -27.74011,-15.86132 -54.54078,-29.90232 -79.4856,-41.64289 -14.59739,-6.87043 -28.38586,-12.89209 -41.79664,-18.2533 l -2.77318,-1.10863 v -1.03122 c 0,-0.70801 0.0149,-1.03121 0.0477,-1.03121 0.0262,0 1.41336,0.54517 3.08254,1.21149 36.83405,14.70369 77.91388,34.99547 122.49174,60.50597 5.97473,3.41916 11.07064,6.38065 11.07064,6.43371 0,0.0213 -0.18571,0.17836 -0.41268,0.34897 l -0.41268,0.31019 -0.94629,-0.004 -0.94629,-0.004 z"
+ id="path117" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00227791;stroke-opacity:1"
+ d="m 502.59824,350.91804 c -1.28914,-0.30123 -8.35051,-1.83405 -13.08147,-2.83961 -39.24585,-8.34163 -80.46452,-15.6144 -121.26362,-21.39616 -1.61354,-0.22866 -2.9396,-0.42164 -2.94681,-0.42884 -0.007,-0.007 0.188,-0.16201 0.43378,-0.34402 0.24577,-0.18201 0.67691,-0.56029 0.95807,-0.84061 l 0.5112,-0.50968 1.19324,0.16808 c 37.5574,5.29043 78.23739,12.39046 115.14541,20.09677 6.88575,1.43773 19.35819,4.11939 19.84707,4.26725 0.0596,0.018 0.0532,0.13206 -0.0537,0.95969 -0.0667,0.51657 -0.12203,0.95413 -0.1229,0.97236 -0.002,0.0416 0.0341,0.0477 -0.62031,-0.10523 z"
+ id="path118" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 527.0625,356.4898 c -1.86827,-0.46465 -14.7451,-3.44134 -19.43615,-4.49298 -2.33676,-0.52385 -4.26343,-0.96723 -4.28149,-0.98529 -0.0624,-0.0624 0.12605,-1.55084 0.21442,-1.69383 0.0634,-0.10257 1.29594,0.12745 4.32718,0.80755 8.5002,1.90714 22.27641,5.12095 22.37534,5.21989 0.0692,0.0691 -1.74728,1.46887 -1.88646,1.45368 -0.0689,-0.008 -0.65972,-0.14658 -1.31284,-0.30902 z"
+ id="path119" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 546.8125,361.29971 c -0.99688,-0.26374 -5.45469,-1.36697 -9.90625,-2.45163 -4.45156,-1.08466 -8.09375,-2.00818 -8.09375,-2.05227 0,-0.0441 0.37969,-0.38558 0.84375,-0.75889 l 0.84375,-0.67874 3.3125,0.80223 c 3.40365,0.8243 16.91834,4.18059 17.8125,4.42362 l 0.5,0.1359 -0.625,0.21844 c -0.34375,0.12015 -0.95544,0.36597 -1.35931,0.54629 -0.40386,0.18031 -0.91011,0.32035 -1.125,0.3112 -0.21488,-0.009 -1.20632,-0.23242 -2.20319,-0.49615 z"
+ id="path120" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 560.9375,364.92478 c -1.54688,-0.40799 -4.69688,-1.22183 -7,-1.80852 -2.30313,-0.58669 -4.27188,-1.09587 -4.375,-1.13152 -0.10797,-0.0373 0.25236,-0.24751 0.84945,-0.49552 1.98945,-0.82638 1.43616,-0.87431 7.2008,0.62379 3.51418,0.91325 5.16612,1.39643 5.28343,1.54534 0.25285,0.32095 1.16632,1.84248 1.16632,1.94267 0,0.13967 -0.17593,0.1016 -3.125,-0.67624 z"
+ id="path121" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 653.40625,417.30106 c -0.25781,-0.41303 -0.46875,-0.8049 -0.46875,-0.87082 0,-0.12047 0.68685,-0.91051 3.67017,-4.22159 l 1.61402,-1.79134 0.6584,0.65022 0.6584,0.65022 -2.46995,2.76612 c -1.35847,1.52137 -2.63275,2.94658 -2.83174,3.16713 l -0.3618,0.40101 z"
+ id="path122" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 365.60469,510.57597 -0.74617,-0.57985 1.89073,-1.65068 c 24.46026,-21.35466 58.71446,-44.16486 102.87575,-68.50595 l 2.5,-1.37796 0.079,0.33173 c 0.0434,0.18246 0.0843,0.64111 0.0908,1.01924 l 0.0118,0.6875 -5.65126,3.125 c -40.73647,22.52621 -74.83659,45.35267 -98.38057,65.85547 l -1.92384,1.67534 z"
+ id="path123" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 343.3125,336.36139 c -1.27188,-0.50917 -4.44215,-1.72453 -7.04506,-2.7008 l -4.73256,-1.77505 1.40661,-0.4709 1.4066,-0.47091 3.76345,1.42129 c 2.0699,0.78171 4.62118,1.75062 5.6695,2.15313 l 1.90605,0.73185 2e-4,1.03125 c 1.2e-4,0.56719 -0.0138,1.02555 -0.031,1.01858 -0.0172,-0.007 -1.07188,-0.42927 -2.34375,-0.93844 z"
+ id="path124" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 364.4375,326.11137 c -0.10313,-0.0259 -3.1125,-0.4425 -6.6875,-0.92574 -3.575,-0.48324 -6.74311,-0.9125 -7.04025,-0.95392 -0.61866,-0.0862 -0.74714,-0.29293 -0.86291,-1.38834 l -0.0694,-0.65663 0.36128,0.0636 c 0.1987,0.035 2.27378,0.31813 4.61128,0.62921 5.10025,0.67873 11.34059,1.53766 11.91366,1.6398 l 0.41367,0.0737 -0.2847,0.30305 c -0.91006,0.96871 -1.70465,1.37871 -2.35513,1.21522 z"
+ id="path125" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 328.25,330.73256 c -3.83967,-1.40506 -15.76343,-5.39578 -20.125,-6.73556 -9.3438,-2.87022 -18.89164,-5.44999 -27,-7.29523 -2.66722,-0.60698 -2.92309,-0.64104 -8.5,-1.13131 -16.24783,-1.42837 -31.72538,-2.57916 -43.9375,-3.26686 -1.40938,-0.0794 -2.5711,-0.15202 -2.5816,-0.16145 -0.0105,-0.009 -0.0386,-0.78258 -0.0625,-1.7181 L 226,308.7231 l 1.67601,-0.0803 c 2.39249,-0.11463 6.44967,-0.0966 10.07399,0.0449 11.45258,0.44693 22.58079,1.83437 35.67259,4.44757 2.56992,0.51297 4.71468,0.9587 4.76614,0.9905 0.0515,0.0318 2.19567,0.25664 4.76492,0.49964 12.53147,1.18522 26.43155,2.65844 39.48385,4.18475 6.74175,0.78837 10.55006,1.26074 10.6047,1.31538 0.0276,0.0276 -0.0482,0.45144 -0.16842,0.94194 l -0.21855,0.8918 -0.39011,-0.0702 c -1.43049,-0.25724 -24.42042,-2.85802 -33.76512,-3.81974 -2.68125,-0.27594 -5.11696,-0.53032 -5.4127,-0.56529 -0.6149,-0.0727 -0.61077,0.11599 0.005,0.23158 0.74927,0.14065 8.4488,2.31425 12.26317,3.46194 7.75547,2.33352 15.58782,4.91953 23.51946,7.76544 2.68125,0.96204 4.98553,1.78146 5.12062,1.82092 0.16623,0.0485 -0.21625,0.22637 -1.18335,0.55013 -0.78593,0.26312 -1.48709,0.47212 -1.55812,0.46446 -0.071,-0.008 -1.4229,-0.48737 -3.00415,-1.066 z m -71.875,-18.54649 c -0.75065,-0.1487 -7.06945,-0.84558 -9.5625,-1.05462 -5.84239,-0.48989 -15.47997,-0.88225 -15.21725,-0.61953 0.0409,0.0409 2.17375,0.20885 4.73959,0.37314 5.49859,0.35209 18.68041,1.28638 19.04016,1.34952 0.1375,0.0241 0.53125,0.0454 0.875,0.0472 l 0.625,0.003 z"
+ id="path126" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 347.3125,323.79562 c -0.92813,-0.12906 -4.55072,-0.59909 -8.05022,-1.04452 -3.49949,-0.44543 -6.38788,-0.83504 -6.41864,-0.8658 -0.0308,-0.0307 0.0455,-0.44976 0.16953,-0.93112 0.21245,-0.8247 0.24382,-0.87206 0.54364,-0.82073 0.17501,0.03 3.66506,0.47806 7.75569,0.99579 4.09062,0.51773 7.64141,0.9737 7.89062,1.01327 0.43939,0.0698 0.45551,0.0914 0.53165,0.71472 0.0432,0.35352 0.11303,0.76933 0.1552,0.92402 0.0704,0.25811 0.0369,0.27992 -0.40664,0.26514 -0.26583,-0.009 -1.24271,-0.12171 -2.17083,-0.25077 z"
+ id="path127" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 255.57499,384.59091 c -2.01603,-4.91506 -7.13923,-16.70664 -9.95105,-22.90341 -8.40836,-18.53059 -16.50364,-33.57829 -22.11289,-41.10396 -0.52942,-0.7103 -0.94536,-1.33507 -0.92432,-1.38837 0.0211,-0.0533 0.30044,-0.38671 0.62086,-0.7409 l 0.58259,-0.64399 1.04043,1.40736 c 7.77226,10.51335 17.77582,30.12511 30.05053,58.9134 l 2.31996,5.44108 -0.30645,0.65144 c -0.16855,0.35829 -0.37739,0.8905 -0.46409,1.18269 -0.0867,0.29219 -0.19092,0.52997 -0.2316,0.52841 -0.0407,-0.002 -0.32146,-0.60625 -0.62397,-1.34375 z"
+ id="path128" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 286.89681,463.68761 c -0.46925,-0.12502 -0.88329,-0.25742 -0.92008,-0.29421 -0.0368,-0.0368 -0.96352,-2.53098 -2.0594,-5.54265 -9.36064,-25.72467 -18.27929,-48.91003 -26.28326,-68.32725 -1.4868,-3.60689 -1.45714,-3.41963 -0.7752,-4.89494 l 0.40281,-0.87143 1.57848,3.80893 c 5.81962,14.04303 12.24684,30.43004 18.99648,48.43394 3.58931,9.57407 10.22586,27.65382 10.22586,27.85799 0,0.1151 -0.20871,0.0846 -1.16569,-0.17038 z"
+ id="path129" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 313.57642,543.25175 c -8.41901,-25.31974 -16.24915,-48.03521 -24.60394,-71.37675 -1.55032,-4.33125 -2.84427,-7.96744 -2.87546,-8.08042 -0.0515,-0.18662 0.0382,-0.18333 0.97993,0.036 0.57015,0.13276 1.05777,0.26251 1.08359,0.28833 0.21352,0.21353 11.26228,31.56832 16.29967,46.25613 5.80681,16.93126 14.89546,44.12049 14.82199,44.34088 -0.0205,0.0616 -0.40547,0.23587 -0.85543,0.3873 l -0.81811,0.27532 z"
+ id="path130" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 327.16007,555.58329 c -0.39321,-0.18331 -0.71665,-0.374 -0.71875,-0.42376 -0.002,-0.0498 0.42415,-0.83726 0.94723,-1.75 7.92246,-13.82431 19.90753,-27.74601 37.11417,-43.11133 0.24656,-0.22017 0.27187,-0.21086 1.0376,0.38178 0.43169,0.3341 0.73065,0.62715 0.66436,0.65124 -0.14354,0.0521 -2.84079,2.48156 -5.45462,4.91299 -11.72354,10.90541 -20.802,21.25277 -27.66243,31.52882 -1.45463,2.17884 -3.64157,5.73633 -4.53787,7.38173 -0.23362,0.42888 -0.48101,0.77573 -0.54976,0.77079 -0.0688,-0.005 -0.44672,-0.15895 -0.83993,-0.34226 z"
+ id="path131" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 329.32818,556.82478 c -0.3695,-0.276 -0.73513,-0.52459 -0.8125,-0.55241 -0.18915,-0.068 0.14646,-0.42505 2.2697,-2.41471 10.84874,-10.16622 28.17528,-19.65979 52.28567,-28.64841 5.23413,-1.95134 4.98154,-1.87069 5.15781,-1.64675 0.0812,0.10312 0.41463,0.42789 0.74101,0.72169 0.57006,0.51316 0.58234,0.53831 0.31178,0.63881 -0.15491,0.0575 -1.32228,0.48391 -2.59415,0.9475 -15.72307,5.73096 -28.85848,11.72997 -39.0234,17.82218 -4.25533,2.55038 -9.18749,6.00577 -12.4141,8.69713 -1.70665,1.42354 -4.81992,4.29214 -5.07789,4.67883 -0.1694,0.25391 -0.18269,0.25007 -0.84393,-0.24386 z"
+ id="path132" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 388.91214,524.06797 -0.77405,-0.71193 1.49346,-0.53533 c 2.98777,-1.07098 13.09346,-4.39714 17.05595,-5.61376 33.8082,-10.38024 73.76541,-19.32469 122.625,-27.44967 l 8.4375,-1.4031 1,0.39529 c 0.55,0.21742 1.27042,0.53412 1.60094,0.70379 l 0.60092,0.30849 -1.41342,0.21987 c -3.19405,0.49687 -17.48188,2.87895 -21.78844,3.6326 -48.21773,8.43809 -88.61274,18.00341 -119.92294,28.39712 -2.58613,0.85849 -5.47579,1.83262 -6.42147,2.16472 l -1.71941,0.60383 z"
+ id="path133" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00644292;stroke-opacity:1"
+ d="m 212.02999,322.37326 c -4.64209,-0.88033 -8.24193,-4.19912 -9.48911,-8.74826 -0.39302,-1.43356 -0.39722,-4.55499 -0.008,-5.96231 0.32209,-1.16467 0.96306,-2.58088 1.61194,-3.56154 0.64957,-0.9817 2.06113,-2.44996 2.99822,-3.11866 0.94646,-0.67538 2.85136,-1.58582 3.85699,-1.84343 6.33177,-1.622 12.582,1.93424 14.52293,8.26321 0.30552,0.99622 0.33736,1.28846 0.34436,3.16023 0.007,1.77912 -0.0318,2.20697 -0.27965,3.11399 -0.75339,2.75682 -2.49705,5.21283 -4.82279,6.79309 -1.05765,0.71863 -2.62997,1.42337 -3.84066,1.72144 -1.39376,0.34313 -3.61053,0.42568 -4.8942,0.18224 z"
+ id="path134" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0257717;stroke-opacity:1"
+ d="m 595.38546,491.20253 c -4.13858,-2.04857 -6.64327,-6.04182 -6.62448,-10.56147 0.0431,-10.36131 12.43102,-15.47538 19.75218,-8.15422 4.20192,4.20193 4.68468,10.00189 1.24823,14.9966 -2.99889,4.35874 -9.62212,6.07219 -14.37593,3.71909 z"
+ id="path135" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.0257717;stroke-opacity:1"
+ d="m 776,319.59008 c -2.98628,-1.44967 -4.89606,-3.37555 -6.03916,-6.09008 -1.68424,-3.99957 -0.75047,-9.3013 2.19068,-12.43824 1.90664,-2.03355 5.90609,-3.80199 8.59848,-3.80199 4.36737,0 9.08938,3.20558 10.82577,7.34917 0.86651,2.0678 0.86651,6.71432 0,8.78212 -2.53085,6.03945 -9.8796,8.96419 -15.57577,6.19902 z"
+ id="path136" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;stroke:#020817;stroke-width:0.00227791;stroke-opacity:1"
+ d="m 540.67152,489.54991 c -0.47816,-0.27243 -1.63192,-0.79292 -2.2863,-1.03141 -0.26089,-0.0951 -0.47466,-0.18282 -0.47506,-0.19498 -7.6e-4,-0.0231 0.96995,-0.18014 5.21414,-0.84374 12.48034,-1.95137 25.52476,-3.82226 37.85231,-5.42893 3.33764,-0.43501 7.24202,-0.93098 7.32879,-0.93098 0.0388,0 0.0715,0.18629 0.11053,0.62977 0.0305,0.34637 0.0841,0.77757 0.11915,0.95822 0.035,0.18065 0.059,0.33272 0.0533,0.33794 -0.006,0.005 -0.7462,0.10224 -1.64555,0.21559 -4.28515,0.54009 -11.34911,1.46727 -14.49569,1.90264 -3.32399,0.45991 -4.39278,0.60808 -5.41378,0.75055 -6.71434,0.93687 -15.46927,2.23347 -23.26824,3.44602 -1.33687,0.20785 -2.49034,0.38647 -2.56326,0.39692 -0.10012,0.0143 -0.22996,-0.0365 -0.53033,-0.20761 z"
+ id="path137" />
+</svg>
diff --git a/dashboard/src/components/data-table/actions-cell.tsx b/dashboard/src/components/data-table/actions-cell.tsx
@@ -38,14 +38,14 @@ export function DataTableActionsCell<TData>({
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>{t('actions')}</DropdownMenuLabel>
- <DropdownMenuItem onClick={() => onOpen(row.original)}>
+ <DropdownMenuItem onClick={() => { onOpen(row.original) }}>
<OpenInNewWindowIcon className="mr-1 w-4 h-4" /> {t('open')}
</DropdownMenuItem>
<DropdownMenuSeparator />
- <DropdownMenuItem onClick={() => onEdit(row.original)}>
+ <DropdownMenuItem onClick={(e) => { e.stopPropagation(); onEdit(row.original) }}>
<PencilIcon className="mr-1 w-4 h-4" /> {t('edit')}
</DropdownMenuItem>
- <DropdownMenuItem onClick={() => onDelete(row.original)} className="text-destructive">
+ <DropdownMenuItem onClick={(e) => { e.stopPropagation(); onDelete(row.original) }} className="text-destructive">
<TrashIcon className="mr-1 w-4 h-4" />{t('delete')}
</DropdownMenuItem>
</DropdownMenuContent>
diff --git a/dashboard/src/components/data-table/table.tsx b/dashboard/src/components/data-table/table.tsx
@@ -1,6 +1,8 @@
import {
ColumnDef,
ColumnFiltersState,
+ OnChangeFn,
+ RowSelectionState,
SortingState,
VisibilityState,
flexRender,
@@ -21,6 +23,7 @@ import {
TableHeader,
TableRow,
} from "@marzneshin/components"
+
import { useTranslation } from "react-i18next"
import { DataTablePagination } from "./pagination"
import { useState } from "react"
@@ -32,6 +35,8 @@ interface DataTableProps<TData, TValue> {
filteredColumn: string
onCreate?: () => void
onOpen?: (object: TData) => void
+ setSelectedRow?: OnChangeFn<RowSelectionState> | undefined
+ selectedRow?: RowSelectionState | undefined
}
export function DataTable<TData, TValue>({
@@ -39,7 +44,9 @@ export function DataTable<TData, TValue>({
data,
onCreate,
onOpen,
- filteredColumn
+ filteredColumn,
+ selectedRow,
+ setSelectedRow,
}: DataTableProps<TData, TValue>) {
const [sorting, setSorting] = useState<SortingState>([])
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>(
@@ -47,7 +54,6 @@ export function DataTable<TData, TValue>({
)
const [columnVisibility, setColumnVisibility] =
useState<VisibilityState>({})
- const [rowSelection, setRowSelection] = useState({})
const table = useReactTable({
data,
columns,
@@ -58,12 +64,12 @@ export function DataTable<TData, TValue>({
getSortedRowModel: getSortedRowModel(),
getFilteredRowModel: getFilteredRowModel(),
onColumnVisibilityChange: setColumnVisibility,
- onRowSelectionChange: setRowSelection,
+ onRowSelectionChange: setSelectedRow,
state: {
sorting,
columnFilters,
columnVisibility,
- rowSelection,
+ rowSelection: selectedRow !== undefined ? selectedRow : {},
},
})
const { t } = useTranslation();
diff --git a/dashboard/src/components/entity-table/index.tsx b/dashboard/src/components/entity-table/index.tsx
@@ -0,0 +1,91 @@
+import { FC, useState } from "react";
+import { DataTable } from "@marzneshin/components";
+
+interface MutationDialogProps<T> {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+ entity: T | null;
+}
+
+interface DeleteConfirmationDialogProps<T> {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+ entity: T | null;
+}
+
+interface SettingsDialogProps<T> {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+ entity: T | null;
+}
+
+interface EntityTableProps<T> {
+ useQuery: () => { data: T[] };
+ MutationDialog: FC<MutationDialogProps<T>>;
+ DeleteConfirmationDialog: FC<DeleteConfirmationDialogProps<T>>;
+ SettingsDialog: FC<SettingsDialogProps<T>>;
+ columns: any;
+ filteredColumn: string;
+}
+
+export function EntityTable<T>({
+ useQuery,
+ MutationDialog,
+ DeleteConfirmationDialog,
+ SettingsDialog,
+ columns,
+ filteredColumn,
+}: EntityTableProps<T>) {
+ const { data } = useQuery();
+ const [mutationDialogOpen, setMutationDialogOpen] = useState<boolean>(false);
+ const [deleteDialogOpen, setDeleteDialogOpen] = useState<boolean>(false);
+ const [settingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);
+ const [selectedEntity, selectEntity] = useState<T | null>(null);
+
+ const onEdit = (entity: T) => {
+ selectEntity(entity);
+ setMutationDialogOpen(true);
+ };
+
+ const onDelete = (entity: T) => {
+ selectEntity(entity);
+ setDeleteDialogOpen(true);
+ };
+
+ const onCreate = () => {
+ selectEntity(null);
+ setMutationDialogOpen(true);
+ };
+
+ const onOpen = (entity: T) => {
+ selectEntity(entity);
+ setSettingsDialogOpen(true);
+ };
+
+ return (
+ <div>
+ <SettingsDialog
+ open={settingsDialogOpen}
+ onOpenChange={setSettingsDialogOpen}
+ entity={selectedEntity}
+ />
+ <DeleteConfirmationDialog
+ open={deleteDialogOpen}
+ onOpenChange={setDeleteDialogOpen}
+ entity={selectedEntity}
+ />
+ <MutationDialog
+ open={mutationDialogOpen}
+ onOpenChange={setMutationDialogOpen}
+ entity={selectedEntity}
+ />
+ <DataTable
+ columns={columns({ onEdit, onDelete, onOpen })}
+ data={data}
+ filteredColumn={filteredColumn}
+ onCreate={onCreate}
+ onOpen={onOpen}
+ />
+ </div>
+ );
+}
diff --git a/dashboard/src/components/header/index.tsx b/dashboard/src/components/header/index.tsx
@@ -1,3 +1,4 @@
+import { LanguageSwitch } from "@marzneshin/features/language-switch"
import { ThemeToggle } from "@marzneshin/features/theme-switch"
import { Link } from "@tanstack/react-router"
import { FC, PropsWithChildren } from "react"
@@ -13,7 +14,8 @@ export const Header: FC<PropsWithChildren> = ({ children }) => {
</Link>
{children}
</div>
- <div className="flex flex-row justify-reverse">
+ <div className="flex flex-row gap-2 justify-reverse">
+ <LanguageSwitch />
<ThemeToggle />
</div>
</div>
diff --git a/dashboard/src/components/index.ts b/dashboard/src/components/index.ts
@@ -3,3 +3,6 @@ export * from './header'
export * from './sidebar'
export * from './data-table'
export * from './delete-confirmation-dialog'
+export * from './nav-dir'
+export * from './header'
+export * from './entity-table'
diff --git a/dashboard/src/components/ui/calendar.tsx b/dashboard/src/components/ui/calendar.tsx
@@ -0,0 +1,64 @@
+import * as React from "react"
+import { ChevronLeft, ChevronRight } from "lucide-react"
+import { DayPicker } from "react-day-picker"
+
+import { cn } from "@marzneshin/utils"
+import { buttonVariants } from "@marzneshin/components/ui/button"
+
+export type CalendarProps = React.ComponentProps<typeof DayPicker>
+
+function Calendar({
+ className,
+ classNames,
+ showOutsideDays = true,
+ ...props
+}: CalendarProps) {
+ return (
+ <DayPicker
+ showOutsideDays={showOutsideDays}
+ className={cn("p-3", className)}
+ classNames={{
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
+ month: "space-y-4",
+ caption: "flex justify-center pt-1 relative items-center",
+ caption_label: "text-sm font-medium",
+ nav: "space-x-1 flex items-center",
+ nav_button: cn(
+ buttonVariants({ variant: "outline" }),
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
+ ),
+ nav_button_previous: "absolute left-1",
+ nav_button_next: "absolute right-1",
+ table: "w-full border-collapse space-y-1",
+ head_row: "flex",
+ head_cell:
+ "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
+ row: "flex w-full mt-2",
+ cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
+ day: cn(
+ buttonVariants({ variant: "ghost" }),
+ "h-9 w-9 p-0 font-normal aria-selected:opacity-100"
+ ),
+ day_range_end: "day-range-end",
+ day_selected:
+ "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
+ day_today: "bg-accent text-accent-foreground",
+ day_outside:
+ "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",
+ day_disabled: "text-muted-foreground opacity-50",
+ day_range_middle:
+ "aria-selected:bg-accent aria-selected:text-accent-foreground",
+ day_hidden: "invisible",
+ ...classNames,
+ }}
+ components={{
+ IconLeft: ({ ...props }) => <ChevronLeft className="w-4 h-4" {...props} />,
+ IconRight: ({ ...props }) => <ChevronRight className="w-4 h-4" {...props} />,
+ }}
+ {...props}
+ />
+ )
+}
+Calendar.displayName = "Calendar"
+
+export { Calendar }
diff --git a/dashboard/src/components/ui/index.ts b/dashboard/src/components/ui/index.ts
@@ -25,4 +25,9 @@ export * from "./aspect-ratio"
export * from "./select"
export * from "./sheet"
export * from "./tabs"
+export * from "./progress"
+export * from "./calendar"
export * from "./scroll-area"
+export * from "./toggle-group"
+export * from "./textarea"
+export * from "./radio-group"
diff --git a/dashboard/src/components/ui/progress.tsx b/dashboard/src/components/ui/progress.tsx
@@ -0,0 +1,26 @@
+import * as React from "react"
+import * as ProgressPrimitive from "@radix-ui/react-progress"
+
+import { cn } from "@marzneshin/utils"
+
+const Progress = React.forwardRef<
+ React.ElementRef<typeof ProgressPrimitive.Root>,
+ React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
+>(({ className, value, ...props }, ref) => (
+ <ProgressPrimitive.Root
+ ref={ref}
+ className={cn(
+ "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
+ className
+ )}
+ {...props}
+ >
+ <ProgressPrimitive.Indicator
+ className="h-full w-full flex-1 bg-primary transition-all"
+ style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
+ />
+ </ProgressPrimitive.Root>
+))
+Progress.displayName = ProgressPrimitive.Root.displayName
+
+export { Progress }
diff --git a/dashboard/src/components/ui/textarea.tsx b/dashboard/src/components/ui/textarea.tsx
@@ -0,0 +1,24 @@
+import * as React from "react"
+
+import { cn } from "@marzneshin/utils"
+
+export interface TextareaProps
+ extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
+
+const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
+ ({ className, ...props }, ref) => {
+ return (
+ <textarea
+ className={cn(
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
+ className
+ )}
+ ref={ref}
+ {...props}
+ />
+ )
+ }
+)
+Textarea.displayName = "Textarea"
+
+export { Textarea }
diff --git a/dashboard/src/components/ui/toggle-group.tsx b/dashboard/src/components/ui/toggle-group.tsx
@@ -0,0 +1,59 @@
+import * as React from "react"
+import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group"
+import { VariantProps } from "class-variance-authority"
+
+import { cn } from "@marzneshin/utils"
+import { toggleVariants } from "@marzneshin/components/ui/toggle"
+
+const ToggleGroupContext = React.createContext<
+ VariantProps<typeof toggleVariants>
+>({
+ size: "default",
+ variant: "default",
+})
+
+const ToggleGroup = React.forwardRef<
+ React.ElementRef<typeof ToggleGroupPrimitive.Root>,
+ React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &
+ VariantProps<typeof toggleVariants>
+>(({ className, variant, size, children, ...props }, ref) => (
+ <ToggleGroupPrimitive.Root
+ ref={ref}
+ className={cn("flex items-center justify-center gap-1", className)}
+ {...props}
+ >
+ <ToggleGroupContext.Provider value={{ variant, size }}>
+ {children}
+ </ToggleGroupContext.Provider>
+ </ToggleGroupPrimitive.Root>
+))
+
+ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName
+
+const ToggleGroupItem = React.forwardRef<
+ React.ElementRef<typeof ToggleGroupPrimitive.Item>,
+ React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &
+ VariantProps<typeof toggleVariants>
+>(({ className, children, variant, size, ...props }, ref) => {
+ const context = React.useContext(ToggleGroupContext)
+
+ return (
+ <ToggleGroupPrimitive.Item
+ ref={ref}
+ className={cn(
+ toggleVariants({
+ variant: context.variant || variant,
+ size: context.size || size,
+ }),
+ className
+ )}
+ {...props}
+ >
+ {children}
+ </ToggleGroupPrimitive.Item>
+ )
+})
+
+ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName
+
+export { ToggleGroup, ToggleGroupItem }
diff --git a/dashboard/src/features/hosts/dialogs/delete-confirmation/index.tsx b/dashboard/src/features/hosts/dialogs/delete-confirmation/index.tsx
@@ -0,0 +1,22 @@
+import { DeleteConfirmation } from '@marzneshin/components'
+import { FC } from 'react'
+import { HostType, useHostsDeletionMutation } from '@marzneshin/features/hosts'
+
+interface HostsDeleteConfirmationDialogProps {
+ onOpenChange: (state: boolean) => void
+ open: boolean
+ entity: HostType | null
+}
+
+export const HostsDeleteConfirmationDialog: FC<HostsDeleteConfirmationDialogProps> = ({ onOpenChange, open, entity }) => {
+ const deleteMutation = useHostsDeletionMutation();
+ if (entity !== null) {
+ return (
+ <DeleteConfirmation
+ open={open}
+ onOpenChange={onOpenChange}
+ action={() => deleteMutation.mutate(entity)}
+ />
+ )
+ }
+}
diff --git a/dashboard/src/features/hosts/dialogs/index.ts b/dashboard/src/features/hosts/dialogs/index.ts
@@ -0,0 +1,2 @@
+export * from './mutation'
+export * from './delete-confirmation'
diff --git a/dashboard/src/features/hosts/dialogs/mutation/index.tsx b/dashboard/src/features/hosts/dialogs/mutation/index.tsx
@@ -0,0 +1,298 @@
+
+import { FC, useEffect, useState } from "react";
+import {
+ DialogTitle,
+ DialogContent,
+ Dialog,
+ DialogHeader,
+ Form,
+ FormItem,
+ FormControl,
+ FormMessage,
+ FormLabel,
+ Input,
+ FormField,
+ Checkbox,
+ Button,
+ SelectItem,
+ SelectContent,
+ SelectValue,
+ Select,
+ SelectTrigger,
+ Alert,
+ AlertTitle,
+ AlertDescription
+} from '@marzneshin/components';
+import { useForm } from 'react-hook-form';
+import { zodResolver } from '@hookform/resolvers/zod';
+import { useTranslation } from 'react-i18next';
+import {
+ HostSchema,
+ HostType,
+ getDefaultValues,
+ useHostsCreationMutation,
+ useHostsUpdateMutation
+} from "@marzneshin/features/hosts";
+import { ExclamationTriangleIcon } from "@radix-ui/react-icons";
+
+interface MutationDialogProps {
+ entity: HostType | null
+ open: boolean
+ inboundId: number
+ onOpenChange: (state: boolean) => void
+}
+
+
+export const HostsMutationDialog: FC<MutationDialogProps> = ({
+ inboundId,
+ entity,
+ open,
+ onOpenChange,
+}) => {
+ const form = useForm({
+ defaultValues: entity ? entity : getDefaultValues(),
+ resolver: zodResolver(HostSchema)
+ });
+ const updateMutation = useHostsUpdateMutation();
+ const createMutation = useHostsCreationMutation();
+ const { t } = useTranslation();
+ const security = form.watch().security
+ const [extraSecurity, setExtraSecurity] = useState<boolean>(["tls", "inbound_default"].includes(security))
+
+ useEffect(() => {
+ setExtraSecurity(["tls", "inbound_default"].includes(security))
+ }, [security, setExtraSecurity])
+
+ const submit = (values: HostType) => {
+ if (entity) {
+ updateMutation.mutate({ inboundId, host: values });
+ } else {
+ createMutation.mutate({ inboundId, host: values });
+ }
+ onOpenChange(false);
+ };
+
+ useEffect(() => {
+ if (entity) form.reset(entity);
+ else form.reset(getDefaultValues());
+ }, [entity, form]);
+
+ return (
+ <Dialog open={open} onOpenChange={onOpenChange} defaultOpen={true}>
+ <DialogContent>
+ <DialogHeader>
+ <DialogTitle className="text-primary">
+ {entity
+ ? t('page.hosts.dialogs.edition.title')
+ : t('page.hosts.dialogs.creation.title')}
+ </DialogTitle>
+ </DialogHeader>
+ <Form {...form}>
+ <form onSubmit={form.handleSubmit(submit)}>
+ <FormField
+ control={form.control}
+ name="remark"
+ render={({ field }) => (
+ <FormItem >
+ <FormLabel>{t('name')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ <div className="flex flex-row gap-1 items-center">
+ <FormField
+ control={form.control}
+ name="address"
+ render={({ field }) => (
+ <FormItem className="w-2/3">
+ <FormLabel>{t('address')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ <FormField
+ control={form.control}
+ name="port"
+ render={({ field }) => (
+ <FormItem className="w-1/3">
+ <FormLabel>{t('port')}</FormLabel>
+ <FormControl>
+ <Input type="number" {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ </div>
+ <FormField
+ control={form.control}
+ name="path"
+ render={({ field }) => (
+ <FormItem >
+ <FormLabel>{t('path')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+
+ <FormField
+ control={form.control}
+ name="host"
+ render={({ field }) => (
+ <FormItem >
+ <FormLabel>{t('host')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+
+ <FormField
+ control={form.control}
+ name="security"
+ render={({ field }) => (
+ <FormItem>
+ <FormLabel>{t('security')}</FormLabel>
+ <Select onValueChange={field.onChange} defaultValue={field.value}>
+ <FormControl>
+ <SelectTrigger>
+ <SelectValue placeholder="Select a verified email to display" />
+ </SelectTrigger>
+ </FormControl>
+ <SelectContent>
+ <SelectItem value="none">None</SelectItem>
+ <SelectItem value="tls">TLS</SelectItem>
+ <SelectItem value="inbound_default">Inbound Default</SelectItem>
+ </SelectContent>
+ </Select>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ {extraSecurity &&
+ <>
+ <FormField
+ control={form.control}
+ name="sni"
+ render={({ field }) => (
+ <FormItem >
+ <FormLabel>{t('SNI')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+
+ <FormField
+ control={form.control}
+ name="alpn"
+ render={({ field }) => (
+ <FormItem>
+ <FormLabel>{t('alpn')}</FormLabel>
+ <Select onValueChange={field.onChange} defaultValue={field.value}>
+ <FormControl>
+ <SelectTrigger>
+ <SelectValue placeholder="Select ALPN" />
+ </SelectTrigger>
+ </FormControl>
+ <SelectContent>
+ <SelectItem value="none">None</SelectItem>
+ <SelectItem value="h2">h2</SelectItem>
+ <SelectItem value="http/1.1">HTTP 1.1</SelectItem>
+ <SelectItem value="h2,http/1.1"> H2 HTTP 1.1</SelectItem>
+ </SelectContent>
+ </Select>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+
+ <FormField
+ control={form.control}
+ name="fingerprint"
+ render={({ field }) => (
+ <FormItem>
+ <FormLabel>{t('fingerprint')}</FormLabel>
+ <Select onValueChange={field.onChange} defaultValue={field.value}>
+ <FormControl>
+ <SelectTrigger>
+ <SelectValue placeholder="Select fingerprint" />
+ </SelectTrigger>
+ </FormControl>
+ <SelectContent>
+ <SelectItem value="none">None</SelectItem>
+ <SelectItem value="chrome">Chrome</SelectItem>
+ <SelectItem value="firefox">Firefox</SelectItem>
+ <SelectItem value="safari">Safari</SelectItem>
+ <SelectItem value="ios">iOS</SelectItem>
+ <SelectItem value="android">Android</SelectItem>
+ <SelectItem value="edge">Edge</SelectItem>
+ <SelectItem value="360">360</SelectItem>
+ <SelectItem value="qq">qq</SelectItem>
+ <SelectItem value="random">Random</SelectItem>
+ <SelectItem value="randomized">Randomized</SelectItem>
+ </SelectContent>
+ </Select>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+
+ <FormField
+ control={form.control}
+ name="allowinsecure"
+ render={({ field }) => (
+ <FormItem className="my-2">
+ <FormControl>
+ <div className="flex flex-row gap-1 items-center">
+ <Checkbox
+ checked={field.value}
+ onCheckedChange={field.onChange}
+ />
+ <FormLabel>
+ {t('page.hosts.allowinsecure')}
+ </FormLabel>
+ </div>
+ </FormControl>
+ <FormMessage />
+ {form.getValues().allowinsecure &&
+ <Alert variant="destructive">
+ <ExclamationTriangleIcon className="w-4 h-4" />
+ <AlertTitle>
+ Warning
+ </AlertTitle>
+ <AlertDescription>
+ {t('page.hosts.dialogs.mutation.allowinsecure.alert')}
+ </AlertDescription>
+ </Alert>}
+ </FormItem>
+ )}
+ />
+ </>
+ }
+ <Button
+ className="mt-3 w-full font-semibold"
+ type="submit"
+ disabled={form.formState.isSubmitting}
+ >
+ {t('submit')}
+ </Button>
+ </form>
+ </Form>
+ </DialogContent>
+ </Dialog>
+ );
+};
diff --git a/dashboard/src/features/hosts/dialogs/settings/index.tsx b/dashboard/src/features/hosts/dialogs/settings/index.tsx
@@ -0,0 +1,100 @@
+
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableRow,
+} from "@marzneshin/components"
+import { FC } from "react"
+import { useTranslation } from "react-i18next"
+import { HostType } from "../.."
+
+interface HostsSettingsDialogProps {
+ onOpenChange: (state: boolean) => void
+ open: boolean
+ entity: HostType | null
+}
+
+export const HostSettingsDialog: FC<HostsSettingsDialogProps> = ({ onOpenChange, open, entity }) => {
+
+ const { t } = useTranslation();
+
+ if (entity) {
+ return (
+ <Sheet open={open} onOpenChange={onOpenChange}>
+ <SheetContent className="sm:min-w-full md:min-w-[700px]" >
+ <SheetHeader>
+ <SheetTitle>
+ {t('page.services.settings.title')}
+ </SheetTitle>
+ </SheetHeader>
+ <Table>
+ <TableBody>
+ <TableRow>
+ <TableHead>
+ {t('remark')}
+ </TableHead>
+ <TableCell>
+ {entity.remark}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('address')}
+ </TableHead>
+ <TableCell>
+ {entity.address}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('port')}
+ </TableHead>
+ <TableCell>
+ {entity.port}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('host')}
+ </TableHead>
+ <TableCell>
+ {entity.host}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('path')}
+ </TableHead>
+ <TableCell>
+ {entity.path}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('sni')}
+ </TableHead>
+ <TableCell>
+ {entity.sni}
+ </TableCell>
+ </TableRow>
+ <TableRow>
+ <TableHead>
+ {t('alpn')}
+ </TableHead>
+ <TableCell>
+ {entity.alpn}
+ </TableCell>
+ </TableRow>
+ </TableBody>
+ </Table>
+ </SheetContent>
+ </Sheet>
+ )
+ }
+}
diff --git a/dashboard/src/features/hosts/index.ts b/dashboard/src/features/hosts/index.ts
@@ -0,0 +1,5 @@
+export * from './types'
+export * from './tables'
+export * from './schema'
+export * from './services'
+export * from './dialogs'
diff --git a/dashboard/src/features/hosts/schema/get-default.ts b/dashboard/src/features/hosts/schema/get-default.ts
@@ -0,0 +1,16 @@
+import { HostSchemaType } from "..";
+
+export const getDefaultValues = (): HostSchemaType => {
+ return {
+ host: '',
+ sni: '',
+ port: 8080,
+ path: '',
+ address: '',
+ remark: '',
+ security: 'none',
+ alpn: 'none',
+ allowinsecure: false,
+ fingerprint: 'none',
+ }
+};
diff --git a/dashboard/src/features/hosts/schema/hosts-schema.ts b/dashboard/src/features/hosts/schema/hosts-schema.ts
@@ -0,0 +1,29 @@
+import { z } from "zod";
+
+export const HostSchema = z.object({
+ remark: z.string().min(1, 'Remark is required'),
+ address: z.string().min(1, 'Address is required'),
+ port: z.coerce.number()
+ .gte(1, 'Port must be more than 1')
+ .lte(65535, 'Port can not be more than 65535')
+ .or(z.string()),
+ path: z.string(),
+ sni: z.string().optional(),
+ host: z.string().optional(),
+ security: z.enum(['inbound_default', 'none', 'tls']),
+ alpn: z.enum(['none', 'h2', 'http/1.1', 'h2,http/1.1']).optional(),
+ allowinsecure: z.boolean().default(false),
+ fingerprint: z.enum([
+ "none",
+ "chrome",
+ "firefox",
+ "safari",
+ "ios",
+ "android",
+ "edge",
+ "360",
+ "qq",
+ "random",
+ "randomized",
+ ]).optional(),
+});
diff --git a/dashboard/src/features/hosts/schema/index.ts b/dashboard/src/features/hosts/schema/index.ts
@@ -0,0 +1,2 @@
+export * from './get-default'
+export * from './hosts-schema'
diff --git a/dashboard/src/features/hosts/services/create-host.mutate.ts b/dashboard/src/features/hosts/services/create-host.mutate.ts
@@ -0,0 +1,40 @@
+import { HostType, HostsQueryFetchKey } from "@marzneshin/features/hosts";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+import { HostRequestDto } from "./host-mutation.dto";
+
+export async function fetchCreateHost({ inboundId, host }: HostRequestDto): Promise<HostRequestDto> {
+ return fetch(`/inbounds/${inboundId}/hosts`,
+ { method: 'post', body: host }).then((host: HostType) => ({ inboundId, host }));
+}
+
+const handleError = (error: Error, value: HostRequestDto) => {
+ toast.error(
+ i18n.t('events.create.error', { name: value.host.remark }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: HostRequestDto) => {
+ toast.success(
+ i18n.t('events.create.success.title', { name: value.host.remark }),
+ {
+ description: i18n.t('events.create.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [HostsQueryFetchKey] })
+}
+
+
+const HostsCreateFetchKey = "hosts";
+
+export const useHostsCreationMutation = () => {
+ return useMutation({
+ mutationKey: [HostsCreateFetchKey],
+ onError: handleError,
+ onSuccess: handleSuccess,
+ mutationFn: fetchCreateHost,
+ })
+}
diff --git a/dashboard/src/features/hosts/services/delete-host.mutate.ts b/dashboard/src/features/hosts/services/delete-host.mutate.ts
@@ -0,0 +1,41 @@
+
+import { HostType, HostsQueryFetchKey } from "@marzneshin/features/hosts";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+
+export async function fetchDeleteHost(host: HostType): Promise<HostType> {
+ return fetch(`/inbounds/hosts/${host.id}`, { method: 'delete' }).then((host) => {
+ return host;
+ });
+}
+
+const HostsDeleteFetchKey = "hosts";
+
+
+const handleError = (error: Error, value: HostType) => {
+ toast.error(
+ i18n.t('events.delete.error', { name: value.remark }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: HostType) => {
+ toast.success(
+ i18n.t('events.delete.success.title', { name: value.remark }),
+ {
+ description: i18n.t('events.delete.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [HostsQueryFetchKey] })
+}
+
+export const useHostsDeletionMutation = () => {
+ return useMutation({
+ mutationKey: [HostsDeleteFetchKey],
+ mutationFn: fetchDeleteHost,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/hosts/services/host-mutation.dto.ts b/dashboard/src/features/hosts/services/host-mutation.dto.ts
@@ -0,0 +1,6 @@
+import { HostType } from "@marzneshin/features/hosts";
+
+export interface HostRequestDto {
+ inboundId: number
+ host: HostType
+}
diff --git a/dashboard/src/features/hosts/services/hosts.query.ts b/dashboard/src/features/hosts/services/hosts.query.ts
@@ -0,0 +1,25 @@
+import { HostType } from "@marzneshin/features/hosts";
+import { useQuery } from "@tanstack/react-query";
+import { fetch } from "@marzneshin/utils";
+
+export async function fetchHosts({ queryKey }: { queryKey: [string, number | undefined] }): Promise<HostType[]> {
+ if (queryKey[1]) {
+ return fetch(`/inbounds/${queryKey[1]}/hosts`).then((result) => {
+ return result.items;
+ });
+ } else {
+ return fetch(`/inbounds/hosts`).then((result) => {
+ return result.items;
+ });
+ }
+}
+
+export const HostsQueryFetchKey = "hosts";
+
+export const useHostsQuery = (inboundId?: number | undefined) => {
+ return useQuery({
+ queryKey: [HostsQueryFetchKey, inboundId],
+ queryFn: fetchHosts,
+ initialData: []
+ })
+}
diff --git a/dashboard/src/features/hosts/services/index.ts b/dashboard/src/features/hosts/services/index.ts
@@ -0,0 +1,4 @@
+export * from './hosts.query'
+export * from './delete-host.mutate'
+export * from './create-host.mutate'
+export * from './update-host.mutate'
diff --git a/dashboard/src/features/hosts/services/update-host.mutate.ts b/dashboard/src/features/hosts/services/update-host.mutate.ts
@@ -0,0 +1,40 @@
+import { HostType, HostsQueryFetchKey } from "@marzneshin/features/hosts";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+import { HostRequestDto } from "./host-mutation.dto";
+
+export async function fetchHostsUpdateMutation({ inboundId, host }: HostRequestDto): Promise<HostRequestDto> {
+ return fetch(`/inbounds/${inboundId}/hosts`,
+ { method: 'put', body: host }).then((host: HostType) => ({ inboundId, host }));
+}
+
+const handleError = (error: Error, value: HostRequestDto) => {
+ toast.error(
+ i18n.t('events.create.error', { name: value.host.remark }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: HostRequestDto) => {
+ toast.success(
+ i18n.t('events.create.success.title', { name: value.host.remark }),
+ {
+ description: i18n.t('events.create.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [HostsQueryFetchKey] })
+}
+
+
+const HostsCreateFetchKey = "hosts";
+
+export const useHostsUpdateMutation = () => {
+ return useMutation({
+ mutationKey: [HostsCreateFetchKey],
+ onError: handleError,
+ onSuccess: handleSuccess,
+ mutationFn: fetchHostsUpdateMutation,
+ })
+}
diff --git a/dashboard/src/features/hosts/tables/inbound-hosts/columns.tsx b/dashboard/src/features/hosts/tables/inbound-hosts/columns.tsx
@@ -0,0 +1,32 @@
+import { ColumnDef } from "@tanstack/react-table"
+import { HostType } from "@marzneshin/features/hosts"
+import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header"
+import i18n from "@marzneshin/features/i18n"
+import { DataTableActionsCell } from "@marzneshin/components"
+
+interface ColumnAction {
+ onDelete: (host: HostType) => void;
+ onOpen: (host: HostType) => void;
+ onEdit: (host: HostType) => void;
+}
+
+
+export const columns = (actions: ColumnAction): ColumnDef<HostType>[] => ([
+ {
+ accessorKey: "remark",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('name')} column={column} />,
+ },
+ {
+ accessorKey: "address",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('address')} column={column} />,
+ cell: ({ row }) => `${row.original.address}:${row.original.port}`
+ },
+ {
+ accessorKey: "port",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('page.nodes.usage_coefficient')} column={column} />,
+ },
+ {
+ id: "actions",
+ cell: ({ row }) => <DataTableActionsCell {...actions} row={row} />
+ },
+]);
diff --git a/dashboard/src/features/hosts/tables/inbound-hosts/inbound.tsx b/dashboard/src/features/hosts/tables/inbound-hosts/inbound.tsx
@@ -0,0 +1,26 @@
+
+import { Badge, Label } from '@marzneshin/components'
+import { InboundType } from '@marzneshin/features/inbounds'
+import { Box } from 'lucide-react'
+import { FC } from 'react'
+
+interface InboundOptionProps {
+ inbound: InboundType
+}
+
+export const InboundOption: FC<InboundOptionProps> = ({ inbound }) => {
+ return (
+ <div className="p-2 mx-0 w-full rounded-md border">
+ <div className="flex justify-between">
+ <Label className="font-bold capitalize">{inbound.tag}</Label>
+ <Badge>
+ {inbound.protocol}
+ </Badge>
+ </div>
+
+ <div className="flex items-center">
+ <Box className="p-1" /> {inbound.node.name}
+ </div>
+ </div>
+ )
+}
diff --git a/dashboard/src/features/hosts/tables/inbound-hosts/index.tsx b/dashboard/src/features/hosts/tables/inbound-hosts/index.tsx
@@ -0,0 +1,74 @@
+
+import {
+ HostType,
+ HostsDeleteConfirmationDialog,
+ HostsMutationDialog,
+ useHostsQuery
+} from '@marzneshin/features/hosts'
+import { InboundHostsDataTable } from './table'
+import { useState } from 'react'
+import { useInboundsQuery } from '@marzneshin/features/inbounds'
+import { columns } from './columns'
+import { HostSettingsDialog } from '../../dialogs/settings'
+
+export const InboundHostsTable = () => {
+ const { data: inbounds } = useInboundsQuery()
+ const [selectedInbound, setSelectedInbound] = useState<string>(String(inbounds[0]?.id))
+ const { data } = useHostsQuery(Number(selectedInbound))
+
+ const [mutationDialogOpen, setMutationDialogOpen] = useState<boolean>(false);
+ const [deleteDialogOpen, setDeleteDialogOpen] = useState<boolean>(false);
+ const [settingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);
+ const [selectedEntity, selectEntity] = useState<HostType | null>(null);
+
+ const onEdit = (entity: HostType) => {
+ selectEntity(entity);
+ setMutationDialogOpen(true);
+ };
+
+ const onDelete = (entity: HostType) => {
+ selectEntity(entity);
+ setDeleteDialogOpen(true);
+ };
+
+ const onCreate = () => {
+ selectEntity(null);
+ setMutationDialogOpen(true);
+ };
+
+ const onOpen = (entity: HostType) => {
+ selectEntity(entity);
+ setSettingsDialogOpen(true);
+ };
+
+ return (
+ <div>
+ <HostSettingsDialog
+ open={settingsDialogOpen}
+ onOpenChange={setSettingsDialogOpen}
+ entity={selectedEntity}
+ />
+ <HostsDeleteConfirmationDialog
+ open={deleteDialogOpen}
+ onOpenChange={setDeleteDialogOpen}
+ entity={selectedEntity}
+ />
+ <HostsMutationDialog
+ open={mutationDialogOpen}
+ onOpenChange={setMutationDialogOpen}
+ entity={selectedEntity}
+ inboundId={Number(selectedInbound)}
+ />
+ <InboundHostsDataTable
+ data={data}
+ inbounds={inbounds}
+ selectedInbound={selectedInbound}
+ columns={columns({ onDelete, onOpen, onEdit })}
+ filteredColumn='remark'
+ setSelectedInbound={setSelectedInbound}
+ onCreate={onCreate}
+ onOpen={onOpen}
+ />
+ </div>
+ )
+}
diff --git a/dashboard/src/features/hosts/tables/inbound-hosts/table.tsx b/dashboard/src/features/hosts/tables/inbound-hosts/table.tsx
@@ -0,0 +1,171 @@
+
+import {
+ ColumnDef,
+ ColumnFiltersState,
+ SortingState,
+ VisibilityState,
+ flexRender,
+ getCoreRowModel,
+ getFilteredRowModel,
+ getPaginationRowModel,
+ getSortedRowModel,
+ useReactTable,
+} from "@tanstack/react-table"
+import {
+ Button,
+ Input,
+ DataTablePagination,
+ DataTableViewOptions,
+ Popover,
+ PopoverTrigger,
+ PopoverContent,
+ Table,
+ TableHeader,
+ TableRow,
+ TableHead,
+ TableCell,
+ TableBody,
+ ToggleGroup,
+ ToggleGroupItem,
+ ScrollArea
+} from "@marzneshin/components"
+import { useTranslation } from "react-i18next"
+import { useState } from "react"
+import { InboundType } from "@marzneshin/features/inbounds"
+import { Server } from "lucide-react"
+import { InboundOption } from "./inbound"
+
+interface InboundHostsDataTableProps<TData, TValue> {
+ columns: ColumnDef<TData, TValue>[]
+ data: TData[]
+ inbounds: InboundType[]
+ filteredColumn: string
+ selectedInbound: string | undefined
+ setSelectedInbound: (s: string) => void
+ onCreate?: () => void
+ onOpen?: (object: TData) => void
+}
+
+export function InboundHostsDataTable<TData, TValue>({
+ columns,
+ data,
+ onCreate,
+ onOpen,
+ filteredColumn,
+ inbounds,
+ selectedInbound,
+ setSelectedInbound,
+}: InboundHostsDataTableProps<TData, TValue>) {
+ const [sorting, setSorting] = useState<SortingState>([])
+ const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>(
+ []
+ )
+ const [columnVisibility, setColumnVisibility] =
+ useState<VisibilityState>({})
+ const table = useReactTable({
+ data,
+ columns,
+ onSortingChange: setSorting,
+ onColumnFiltersChange: setColumnFilters,
+ getCoreRowModel: getCoreRowModel(),
+ getPaginationRowModel: getPaginationRowModel(),
+ getSortedRowModel: getSortedRowModel(),
+ getFilteredRowModel: getFilteredRowModel(),
+ onColumnVisibilityChange: setColumnVisibility,
+ state: {
+ sorting,
+ columnFilters,
+ columnVisibility,
+ },
+ })
+ const { t } = useTranslation();
+ return (
+ <div>
+ <div className="flex justify-between items-center py-4">
+ <Input
+ placeholder={t('table.filter-placeholder', { name: filteredColumn })}
+ value={(table.getColumn(filteredColumn)?.getFilterValue() as string) ?? ""}
+ onChange={(event) =>
+ table.getColumn(filteredColumn)?.setFilterValue(event.target.value)
+ }
+ className="max-w-sm"
+ />
+ <div className="flex items-center">
+ <Popover >
+ <PopoverTrigger asChild>
+ <Button
+ variant="outline"
+ className="mr-2 ml-auto lg:flex"
+ >
+ <Server className="mr-2 w-4 h-4" />
+ {t('inbounds')}
+ </Button>
+ </PopoverTrigger>
+ <PopoverContent className="w-80 max-h-100">
+ <ToggleGroup type="single" onValueChange={setSelectedInbound} defaultValue={selectedInbound} className="flex flex-col justify-center w-full h-full" >
+ <ScrollArea className="w-full h-full">
+ {inbounds.map((inbound) => {
+ return <ToggleGroupItem className="px-0 w-full h-full" value={String(inbound.id)} id={String(inbound.id)}>
+ <InboundOption inbound={inbound} />
+ </ToggleGroupItem>
+ })}
+ </ScrollArea>
+ </ToggleGroup>
+ </PopoverContent>
+ </Popover>
+ <DataTableViewOptions table={table} />
+ {onCreate && (<Button onClick={onCreate}>{t('create')}</Button>)}
+ </div>
+ </div>
+ <div className="rounded-md border">
+ <div>
+ <Table>
+ <TableHeader>
+ {table.getHeaderGroups().map((headerGroup) => (
+ <TableRow key={headerGroup.id}>
+ {headerGroup.headers.map((header) => {
+ return (
+ <TableHead key={header.id}>
+ {header.isPlaceholder
+ ? null
+ : flexRender(
+ header.column.columnDef.header,
+ header.getContext()
+ )}
+ </TableHead>
+ )
+ })}
+ </TableRow>
+ ))}
+ </TableHeader>
+ <TableBody>
+ {table.getRowModel().rows?.length ? (
+ table.getRowModel().rows.map((row) => (
+ <TableRow
+ key={row.id}
+ data-state={row.getIsSelected() && "selected"}
+ onClick={() => onOpen !== undefined && onOpen(row.original)}
+ >
+ {row.getVisibleCells().map((cell) => (
+ <TableCell key={cell.id}>
+ {flexRender(cell.column.columnDef.cell, cell.getContext())}
+ </TableCell>
+ ))}
+ </TableRow>
+ ))
+ ) : (
+ <TableRow>
+ <TableCell colSpan={columns.length} className="h-24 text-center">
+ {t('table.no-result')}
+ </TableCell>
+ </TableRow>
+ )}
+ </TableBody>
+ </Table>
+
+ </div>
+ <DataTablePagination table={table} />
+ </div>
+ </div >
+ )
+}
diff --git a/dashboard/src/features/hosts/tables/index.ts b/dashboard/src/features/hosts/tables/index.ts
@@ -0,0 +1 @@
+export * from './inbound-hosts'
diff --git a/dashboard/src/features/hosts/types/index.ts b/dashboard/src/features/hosts/types/index.ts
@@ -0,0 +1,5 @@
+import { z } from "zod";
+import { HostSchema } from "@marzneshin/features/hosts";
+
+export type HostSchemaType = z.infer<typeof HostSchema>;
+export type HostType = HostSchemaType & { id?: number };
diff --git a/dashboard/src/features/i18n/index.ts b/dashboard/src/features/i18n/index.ts
@@ -33,6 +33,7 @@ i18n
backend: {
loadPath: joinPaths([import.meta.env.BASE_URL, 'locales/{{lng}}.json']),
},
+ supportedLngs: ['en', 'ku-kur', 'ku-sor', 'ku-sor-latin', 'fa', 'ru'],
},
function() {
dayjs.locale(i18n.language);
diff --git a/dashboard/src/features/inbounds/index.ts b/dashboard/src/features/inbounds/index.ts
@@ -0,0 +1,2 @@
+export * from './types'
+export * from './services'
diff --git a/dashboard/src/features/inbounds/services/inbounds.query.ts b/dashboard/src/features/inbounds/services/inbounds.query.ts
@@ -0,0 +1,20 @@
+
+import { useQuery } from "@tanstack/react-query";
+import { fetch } from "@marzneshin/utils";
+import { InboundType } from "../types";
+
+export async function fetchInbounds(): Promise<InboundType[]> {
+ return fetch('/inbounds').then((result) => {
+ return result.items
+ });
+}
+
+export const InboundsQueryFetchKey = "inbounds";
+
+export const useInboundsQuery = () => {
+ return useQuery({
+ queryKey: [InboundsQueryFetchKey],
+ queryFn: fetchInbounds,
+ initialData: []
+ })
+}
diff --git a/dashboard/src/features/inbounds/services/index.ts b/dashboard/src/features/inbounds/services/index.ts
@@ -0,0 +1 @@
+export * from './inbounds.query'
diff --git a/dashboard/src/features/inbounds/types/index.ts b/dashboard/src/features/inbounds/types/index.ts
@@ -0,0 +1,15 @@
+import { NodeType } from "@marzneshin/features/nodes";
+
+export type ProtocolType = 'vmess' | 'vless' | 'trojan' | 'shadowsocks';
+
+export interface InboundType {
+ id: number;
+ tag: string;
+ protocol: ProtocolType;
+ network: string;
+ node: NodeType;
+ tls: string;
+ port?: number;
+}
+
+export type Inbounds = InboundType[];
diff --git a/dashboard/src/features/language-switch/index.tsx b/dashboard/src/features/language-switch/index.tsx
@@ -0,0 +1,43 @@
+import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@marzneshin/components";
+import { Languages } from "lucide-react";
+import { FC } from "react";
+import { useTranslation } from "react-i18next";
+
+export const LanguageSwitch: FC = () => {
+ const { i18n } = useTranslation();
+
+ const changeLanguage = (lang: string) => {
+ i18n.changeLanguage(lang);
+ };
+
+ return (
+ <DropdownMenu>
+ <DropdownMenuTrigger asChild>
+ <Button variant="outline" className="bg-secondary-foreground text-primary-foreground" size="icon">
+ <Languages className="transition-all scale-100 rotate-0 dark:scale-0 dark:-rotate-90 h-[1rem] w-[1rem]" />
+ <span className="sr-only">Toggle Language</span>
+ </Button>
+ </DropdownMenuTrigger>
+ <DropdownMenuContent align="end">
+ <DropdownMenuItem onClick={() => changeLanguage("en")}>
+ English
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => changeLanguage("ku-kur")}>
+ Kurdî (Kur)
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => changeLanguage("ku-sor-latin")}>
+ Kurdî (Sor-Latin)
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => changeLanguage("ku-sor")}>
+ Kurdî (Sor)
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => changeLanguage("fa")}>
+ فارسی
+ </DropdownMenuItem>
+ <DropdownMenuItem onClick={() => changeLanguage("fa")}>
+ Русский
+ </DropdownMenuItem>
+ </DropdownMenuContent>
+ </DropdownMenu>
+ );
+};
diff --git a/dashboard/src/features/nodes/dialogs/delete-confirmation.dialog.tsx b/dashboard/src/features/nodes/dialogs/delete-confirmation.dialog.tsx
@@ -6,17 +6,17 @@ import { NodeType, useNodesDeletionMutation } from '@marzneshin/features/nodes'
interface NodesDeleteConfirmationDialogProps {
onOpenChange: (state: boolean) => void
open: boolean
- node: NodeType | null
+ entity: NodeType | null
}
-export const NodesDeleteConfirmationDialog: FC<NodesDeleteConfirmationDialogProps> = ({ onOpenChange, open, node }) => {
+export const NodesDeleteConfirmationDialog: FC<NodesDeleteConfirmationDialogProps> = ({ onOpenChange, open, entity }) => {
const deleteMutation = useNodesDeletionMutation();
- if (node !== null) {
+ if (entity !== null) {
return (
<DeleteConfirmation
open={open}
onOpenChange={onOpenChange}
- action={() => deleteMutation.mutate(node)}
+ action={() => deleteMutation.mutate(entity)}
/>
)
}
diff --git a/dashboard/src/features/nodes/dialogs/mutation.dialog.tsx b/dashboard/src/features/nodes/dialogs/mutation.dialog.tsx
@@ -1,4 +1,4 @@
-
+import { FC, useEffect } from "react";
import {
DialogTitle,
DialogContent,
@@ -13,65 +13,66 @@ import {
FormField,
Checkbox,
Button
-} from '@marzneshin/components'
-import { FC, useEffect } from 'react'
-import { NodeSchema, NodeType, useNodesCreationMutation, useNodesUpdateMutation } from '..'
-import { useForm } from 'react-hook-form'
-import { zodResolver } from '@hookform/resolvers/zod'
-import { useTranslation } from 'react-i18next'
+} from '@marzneshin/components';
+import { useForm } from 'react-hook-form';
+import { zodResolver } from '@hookform/resolvers/zod';
+import { useTranslation } from 'react-i18next';
+import { NodeType, NodeSchema, useNodesCreationMutation, useNodesUpdateMutation } from "..";
interface MutationDialogProps {
- node: NodeType | null
- open: boolean
- onOpenChange: (state: boolean) => void
+ entity: NodeType | null;
+ open: boolean;
+ onOpenChange: (state: boolean) => void;
}
const getDefaultValues = (): NodeType => ({
name: '',
address: '',
- port: 62050,
status: 'none',
+ port: 62050,
usage_coefficient: 1,
add_as_new_host: true,
-})
+});
-export const MutationDialog: FC<MutationDialogProps> = ({ node, open, onOpenChange }) => {
- const updateMutation = useNodesUpdateMutation();
- const createMutation = useNodesCreationMutation();
+export const MutationDialog: FC<MutationDialogProps> = ({
+ entity,
+ open,
+ onOpenChange,
+}) => {
const form = useForm({
- defaultValues: node ? node : getDefaultValues(),
+ defaultValues: entity ? entity : getDefaultValues(),
resolver: zodResolver(NodeSchema)
- })
+ });
+ const updateMutation = useNodesUpdateMutation();
+ const createMutation = useNodesCreationMutation();
const { t } = useTranslation();
const submit = (values: NodeType) => {
- if (node) {
- updateMutation.mutate(values)
+ if (entity) {
+ updateMutation.mutate(values);
} else {
- createMutation.mutate(values)
+ createMutation.mutate(values);
}
onOpenChange(false);
- }
+ };
useEffect(() => {
- if (node)
- form.reset(node);
- else
- form.reset(getDefaultValues())
- }, [node, form])
+ if (entity) form.reset(entity);
+ else form.reset(getDefaultValues());
+ }, [entity, form]);
return (
<Dialog open={open} onOpenChange={onOpenChange} defaultOpen={true}>
<DialogContent>
<DialogHeader>
<DialogTitle className="text-primary">
- {node ?
- t('page.nodes.dialogs.edition.title') :
- t('page.nodes.dialogs.creation.title')}
+ {entity
+ ? t('page.nodes.dialogs.edition.title')
+ : t('page.nodes.dialogs.creation.title')}
</DialogTitle>
</DialogHeader>
- <Form {...form} >
- <form onSubmit={form.handleSubmit(submit)} >
+ <Form {...form}>
+ <form onSubmit={form.handleSubmit(submit)}>
<FormField
control={form.control}
name="name"
@@ -85,12 +86,12 @@ export const MutationDialog: FC<MutationDialogProps> = ({ node, open, onOpenChan
</FormItem>
)}
/>
- <div className="flex flex-row gap-3 my-1">
+ <div className="flex flex-row gap-2 items-center">
<FormField
control={form.control}
name="address"
render={({ field }) => (
- <FormItem className="w-1/3">
+ <FormItem className="w-2/4">
<FormLabel>{t('address')}</FormLabel>
<FormControl>
<Input {...field} />
@@ -103,7 +104,7 @@ export const MutationDialog: FC<MutationDialogProps> = ({ node, open, onOpenChan
control={form.control}
name="port"
render={({ field }) => (
- <FormItem className="w-1/3">
+ <FormItem className="w-1/4">
<FormLabel>{t('port')}</FormLabel>
<FormControl>
<Input type="number" {...field} />
@@ -112,34 +113,31 @@ export const MutationDialog: FC<MutationDialogProps> = ({ node, open, onOpenChan
</FormItem>
)}
/>
-
<FormField
control={form.control}
name="usage_coefficient"
render={({ field }) => (
- <FormItem className="w-1/3">
+ <FormItem className="w-1/4">
<FormLabel>{t('page.nodes.usage_coefficient')}</FormLabel>
<FormControl>
- <Input type="number" {...field} />
+ <Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
</div>
-
<FormField
control={form.control}
name="add_as_new_host"
render={({ field }) => (
<FormItem className="mt-4">
- <FormControl >
+ <FormControl>
<div className="flex flex-row gap-1 items-center">
<Checkbox
checked={field.value}
onCheckedChange={field.onChange}
- >
- </Checkbox>
+ />
<FormLabel>
{t('page.nodes.add_as_new_host')}
</FormLabel>
@@ -152,12 +150,13 @@ export const MutationDialog: FC<MutationDialogProps> = ({ node, open, onOpenChan
<Button
className="mt-3 w-full font-semibold"
type="submit"
- disabled={form.formState.isSubmitting}>
+ disabled={form.formState.isSubmitting}
+ >
{t('submit')}
</Button>
</form>
</Form>
</DialogContent>
</Dialog>
- )
-}
+ );
+};
diff --git a/dashboard/src/features/nodes/dialogs/settings.dialog.tsx b/dashboard/src/features/nodes/dialogs/settings.dialog.tsx
@@ -23,13 +23,13 @@ import { useTheme } from "@marzneshin/features/theme-switch";
interface NodesSettingsDialogProps {
onOpenChange: (state: boolean) => void
open: boolean
- node: NodeType | null
+ entity: NodeType | null
}
-export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({ onOpenChange, open, node }) => {
+export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({ onOpenChange, open, entity }) => {
const { t } = useTranslation();
- const { data } = useNodesSettingsQuery(node);
+ const { data } = useNodesSettingsQuery(entity);
const [config, setConfig] = useState<any>(data)
const mutate = useNodesSettingsMutation();
const { theme } = useTheme()
@@ -45,7 +45,7 @@ export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({ onOpenChange
}
};
- if (node) {
+ if (entity) {
return (
<Sheet open={open} onOpenChange={onOpenChange}>
<SheetContent className="sm:min-w-full md:min-w-[600px]" >
@@ -56,7 +56,7 @@ export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({ onOpenChange
</SheetHeader>
<div className="my-4">
<h1 className="font-medium font-header">{t('page.nodes.settings.detail')}</h1>
- <NodesDetailTable node={node} />
+ <NodesDetailTable node={entity} />
</div>
<Tabs className="my-3 w-full h-full" defaultValue="logs">
<TabsList className="w-full">
@@ -64,7 +64,7 @@ export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({ onOpenChange
<TabsTrigger className="w-full" value="config">{t('config')}</TabsTrigger>
</TabsList>
<TabsContent value="logs" className="h-full">
- <LogContainer node={node} />
+ <LogContainer node={entity} />
</TabsContent>
<TabsContent value="config" className="h-full z-51">
<Card>
diff --git a/dashboard/src/features/nodes/services/create-node.mutate.ts b/dashboard/src/features/nodes/services/create-node.mutate.ts
@@ -12,7 +12,7 @@ export async function fetchCreateNode(node: NodeType): Promise<NodeType> {
const handleError = (error: Error, value: NodeType) => {
toast.error(
- i18n.t('page.nodes.events.create.error', { name: value.name }),
+ i18n.t('events.create.error', { name: value.name }),
{
description: error.message
})
@@ -20,15 +20,15 @@ const handleError = (error: Error, value: NodeType) => {
const handleSuccess = (value: NodeType) => {
toast.success(
- i18n.t('page.nodes.events.create.success.title', { name: value.name }),
+ i18n.t('events.create.success.title', { name: value.name }),
{
- description: i18n.t('page.nodes.events.create.success.desc')
+ description: i18n.t('events.create.success.desc')
})
queryClient.invalidateQueries({ queryKey: [NodesQueryFetchKey] })
}
-const NodesCreateFetchKey = "nodes-create-fetch-key";
+const NodesCreateFetchKey = "nodes";
export const useNodesCreationMutation = () => {
return useMutation({
diff --git a/dashboard/src/features/nodes/services/delete-node.mutate.ts b/dashboard/src/features/nodes/services/delete-node.mutate.ts
@@ -11,12 +11,12 @@ export async function fetchDeleteNode(node: NodeType): Promise<NodeType> {
});
}
-const NodesDeleteFetchKey = "nodes-delete-fetch-key";
+const NodesDeleteFetchKey = "nodes";
const handleError = (error: Error, value: NodeType) => {
toast.error(
- i18n.t('page.nodes.events.delete.error', { name: value.name }),
+ i18n.t('events.delete.error', { name: value.name }),
{
description: error.message
})
@@ -24,16 +24,16 @@ const handleError = (error: Error, value: NodeType) => {
const handleSuccess = (value: NodeType) => {
toast.success(
- i18n.t('page.nodes.events.delete.success.title', { name: value.name }),
+ i18n.t('events.delete.success.title', { name: value.name }),
{
- description: i18n.t('page.nodes.events.delete.success.desc')
+ description: i18n.t('events.delete.success.desc')
})
queryClient.invalidateQueries({ queryKey: [NodesQueryFetchKey] })
}
export const useNodesDeletionMutation = () => {
return useMutation({
- mutationKey: [NodesDeleteFetchKey,],
+ mutationKey: [NodesDeleteFetchKey],
mutationFn: fetchDeleteNode,
onError: handleError,
onSuccess: handleSuccess,
diff --git a/dashboard/src/features/nodes/services/settings.mutate.ts b/dashboard/src/features/nodes/services/settings.mutate.ts
@@ -13,7 +13,7 @@ export async function fetchUpdateNodesSettings(node: NodeType): Promise<NodeType
const handleError = (error: Error, value: NodeType) => {
toast.error(
- i18n.t('page.nodes.settings.events.update.error', { name: value.name }),
+ i18n.t('events.update.error', { name: value.name }),
{
description: error.message
})
@@ -21,9 +21,9 @@ const handleError = (error: Error, value: NodeType) => {
const handleSuccess = (value: NodeType) => {
toast.success(
- i18n.t('page.nodes.settings.events.update.success.title', { name: value.name }),
+ i18n.t('events.update.success.title', { name: value.name }),
{
- description: i18n.t('page.nodes.settings.events.update.success.desc')
+ description: i18n.t('events.update.success.desc')
})
queryClient.invalidateQueries({ queryKey: [NodesSettingsQueryFetchKey] })
}
diff --git a/dashboard/src/features/nodes/services/update-node.mutate.ts b/dashboard/src/features/nodes/services/update-node.mutate.ts
@@ -13,7 +13,7 @@ export async function fetchUpdateNode(node: NodeType): Promise<NodeType> {
const handleError = (error: Error, value: NodeType) => {
toast.error(
- i18n.t('page.nodes.events.update.error', { name: value.name }),
+ i18n.t('events.update.error', { name: value.name }),
{
description: error.message
})
@@ -21,15 +21,15 @@ const handleError = (error: Error, value: NodeType) => {
const handleSuccess = (value: NodeType) => {
toast.success(
- i18n.t('page.nodes.events.update.success.title', { name: value.name }),
+ i18n.t('events.update.success.title', { name: value.name }),
{
- description: i18n.t('page.nodes.events.update.success.desc')
+ description: i18n.t('events.update.success.desc')
})
queryClient.invalidateQueries({ queryKey: [NodesQueryFetchKey] })
}
-const NodesUpdateFetchKey = "nodes-create-fetch-key";
+const NodesUpdateFetchKey = "nodes";
export const useNodesUpdateMutation = () => {
return useMutation({
diff --git a/dashboard/src/features/nodes/tables/nodes-status-badge.tsx b/dashboard/src/features/nodes/tables/nodes-status-badge.tsx
@@ -1,9 +1,10 @@
import { FC } from 'react';
import { Badge, Label } from '@marzneshin/components';
-import { NodesStatus, NodesStatusType } from '..';
+import { StatusType } from '@marzneshin/types';
+import { NodesStatus } from '..';
interface NodesStatusBadgeProps {
- status: NodesStatusType;
+ status: StatusType;
}
export const NodesStatusBadge: FC<NodesStatusBadgeProps> = ({ status }) => {
diff --git a/dashboard/src/features/nodes/tables/table.tsx b/dashboard/src/features/nodes/tables/table.tsx
@@ -1,65 +1,22 @@
-import { FC, useState } from "react";
+import { FC } from "react";
import {
useNodesQuery,
columns,
- NodeType,
NodesSettingsDialog
} from '@marzneshin/features/nodes';
-import { DataTable } from "@marzneshin/components";
import { MutationDialog } from "../dialogs/mutation.dialog";
import { NodesDeleteConfirmationDialog } from "../dialogs/delete-confirmation.dialog";
+import { EntityTable } from "@marzneshin/components";
export const NodesTable: FC = () => {
- const { data } = useNodesQuery();
- const [mutationDialogOpen, setMutationDialogOpen] = useState<boolean>(false);
- const [deleteDialogOpen, setDeleteDialogOpen] = useState<boolean>(false);
- const [settingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);
- const [selectedNode, selectNode] = useState<NodeType | null>(null);
-
- const onEdit = (node: NodeType) => {
- selectNode(node);
- setMutationDialogOpen(true);
- }
-
- const onDelete = (node: NodeType) => {
- selectNode(node);
- setDeleteDialogOpen(true);
- }
-
- const onCreate = () => {
- selectNode(null);
- setMutationDialogOpen(true);
- }
-
- const onOpen = (node: NodeType) => {
- selectNode(node);
- setSettingsDialogOpen(true);
- }
-
return (
- <div>
- <NodesSettingsDialog
- open={settingsDialogOpen}
- onOpenChange={setSettingsDialogOpen}
- node={selectedNode}
- />
- <NodesDeleteConfirmationDialog
- open={deleteDialogOpen}
- onOpenChange={setDeleteDialogOpen}
- node={selectedNode}
- />
- <MutationDialog
- node={selectedNode}
- open={mutationDialogOpen}
- onOpenChange={setMutationDialogOpen}
- />
- <DataTable
- columns={columns({ onEdit, onDelete, onOpen })}
- data={data}
- filteredColumn='name'
- onCreate={onCreate}
- onOpen={onOpen}
- />
- </div>
+ <EntityTable
+ useQuery={useNodesQuery}
+ MutationDialog={MutationDialog}
+ DeleteConfirmationDialog={NodesDeleteConfirmationDialog}
+ SettingsDialog={NodesSettingsDialog}
+ columns={columns}
+ filteredColumn="name"
+ />
)
}
diff --git a/dashboard/src/features/nodes/types/index.ts b/dashboard/src/features/nodes/types/index.ts
@@ -1,10 +1,7 @@
-import { LucideIcon, PowerOff, Zap, ZapOff } from "lucide-react";
+import { StatusType } from "@marzneshin/types/status";
+import { PowerOff, Zap, ZapOff } from "lucide-react";
import { z } from "zod";
-export interface NodesStatusType {
- label: string;
- icon: LucideIcon | null;
-}
export const NodesStatus = {
healthy: {
@@ -23,7 +20,7 @@ export const NodesStatus = {
label: 'none',
icon: null,
}
-} as Record<string, NodesStatusType>;
+} as Record<string, StatusType>;
export const NodeSchema = z.object({
name: z.string().min(1),
@@ -35,7 +32,8 @@ export const NodeSchema = z.object({
id: z.number().nullable().optional(),
status: z
.enum([NodesStatus.healthy.label, NodesStatus.unhealthy.label, 'none', NodesStatus.disabled.label]),
- usage_coefficient: z.number().default(1),
+ usage_coefficient: z.number().default(1.0)
+ .or(z.string().transform((v) => parseFloat(v))),
add_as_new_host: z.boolean().optional(),
});
diff --git a/dashboard/src/features/services/dialogs/delete-confirmation.dialog.tsx b/dashboard/src/features/services/dialogs/delete-confirmation.dialog.tsx
@@ -0,0 +1,25 @@
+
+import { DeleteConfirmation } from '@marzneshin/components'
+import { FC } from 'react'
+import { ServiceType, useServicesDeletionMutation } from '@marzneshin/features/services'
+
+interface ServicesDeleteConfirmationDialogProps {
+ onOpenChange: (state: boolean) => void
+ open: boolean
+ entity: ServiceType | null
+}
+
+export const ServicesDeleteConfirmationDialog: FC<ServicesDeleteConfirmationDialogProps> = ({ onOpenChange, open, entity }) => {
+ const deleteMutation = useServicesDeletionMutation();
+ if (entity !== null) {
+ return (
+ <DeleteConfirmation
+ open={open}
+ onOpenChange={onOpenChange}
+ action={() => deleteMutation.mutate(entity)}
+ />
+ )
+ } else {
+ return null
+ }
+}
diff --git a/dashboard/src/features/services/dialogs/index.ts b/dashboard/src/features/services/dialogs/index.ts
@@ -0,0 +1,2 @@
+export * from './delete-confirmation.dialog'
+export * from './mutation.dialog'
diff --git a/dashboard/src/features/services/dialogs/mutation.dialog.tsx b/dashboard/src/features/services/dialogs/mutation.dialog.tsx
@@ -0,0 +1,161 @@
+
+
+import {
+ DialogTitle,
+ DialogContent,
+ Dialog,
+ DialogHeader,
+ Form,
+ FormItem,
+ FormControl,
+ FormMessage,
+ FormLabel,
+ Input,
+ FormField,
+ Button,
+ Checkbox,
+ Badge
+} from '@marzneshin/components'
+import { FC, useEffect } from 'react'
+import {
+ ServiceType,
+ useServicesCreationMutation,
+ useServicesUpdateMutation,
+} from '@marzneshin/features/services'
+import { useInboundsQuery } from '@marzneshin/features/inbounds'
+import { useForm } from 'react-hook-form'
+import { zodResolver } from '@hookform/resolvers/zod'
+import { useTranslation } from 'react-i18next'
+import { z } from 'zod'
+import { cn } from '@marzneshin/utils'
+import { Box, GlobeLock } from 'lucide-react'
+
+export const ServiceSchema = z.object({
+ id: z.number().optional(),
+ inbounds: z.array(z.number()).refine((value) => value.some((item) => item), {
+ message: "You have to select at least one inbound.",
+ }),
+ name: z.string().trim().min(1)
+})
+type ServiceCreateType = z.infer<typeof ServiceSchema>
+
+interface MutationDialogProps {
+ entity: ServiceType | null
+ open: boolean
+ onOpenChange: (state: boolean) => void
+}
+
+const getDefaultValues = (): ServiceCreateType => ({
+ name: '',
+ inbounds: [],
+})
+
+export const MutationDialog: FC<MutationDialogProps> = ({ entity, open, onOpenChange }) => {
+ const isEditing = entity !== null
+ const updateMutation = useServicesUpdateMutation();
+ const createMutation = useServicesCreationMutation();
+ const { data: inbounds } = useInboundsQuery()
+ const form = useForm({
+ defaultValues: isEditing ? entity : getDefaultValues(),
+ resolver: zodResolver(ServiceSchema)
+ })
+ const { t } = useTranslation();
+
+ const submit = (values: ServiceCreateType | ServiceType) => {
+ if (isEditing) {
+ updateMutation.mutate(values as ServiceType)
+ } else {
+ createMutation.mutate(values)
+ }
+ onOpenChange(false);
+ }
+
+ useEffect(() => {
+ if (isEditing)
+ form.reset(entity);
+ else
+ form.reset(getDefaultValues())
+ }, [entity, form, isEditing])
+
+ return (
+ <Dialog open={open} onOpenChange={onOpenChange} defaultOpen={true}>
+ <DialogContent>
+ <DialogHeader>
+ <DialogTitle className="text-primary">
+ {isEditing ?
+ t('page.services.dialogs.edition.title') :
+ t('page.services.dialogs.creation.title')}
+ </DialogTitle>
+ </DialogHeader>
+ <Form {...form} >
+ <form onSubmit={form.handleSubmit(submit)} >
+ <FormField
+ control={form.control}
+ name="name"
+ render={({ field }) => (
+ <FormItem>
+ <FormLabel>{t('name')}</FormLabel>
+ <FormControl>
+ <Input {...field} />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ <FormField
+ control={form.control}
+ name="inbounds"
+ render={() => (
+ <FormItem>
+ <FormLabel>{t('inbounds')}</FormLabel>
+ {inbounds.map((inbound) => (
+ <FormField
+ key={inbound.id}
+ control={form.control}
+ name="inbounds"
+ render={({ field }) => (
+ <FormItem key={inbound.id} >
+ <FormControl>
+ <div
+ className={cn("flex flex-row items-center p-3 space-y-0 space-x-3 rounded-md border", { "bg-secondary": field.value?.includes(inbound.id) })}>
+ <Checkbox
+ checked={field.value?.includes(inbound.id)}
+ onCheckedChange={(checked) => {
+ return checked
+ ? field.onChange([...field.value, inbound.id])
+ : field.onChange(
+ field.value?.filter(
+ (value) => value !== inbound.id
+ )
+ )
+ }}
+ />
+ <FormLabel className="flex flex-row justify-between items-center w-full">
+ {inbound.tag}
+ <div className="flex gap-2">
+ <Badge className="py-1 px-2"> <GlobeLock className="mr-1 w-4" /> {inbound.protocol} </Badge>
+ <Badge className="py-1 px-2"> <Box className="mr-1 w-4" /> {inbound.node.name} </Badge>
+ </div>
+ </FormLabel>
+ </div>
+ </FormControl>
+ </FormItem>
+ )}
+ />
+ ))}
+ <FormMessage />
+ </FormItem>
+ )}
+ />
+ <Button
+ className="mt-3 w-full font-semibold"
+ type="submit"
+ disabled={form.formState.isSubmitting}>
+ {t('submit')}
+ </Button>
+ </form>
+ </Form>
+ </DialogContent>
+ </Dialog >
+ )
+}
diff --git a/dashboard/src/features/services/dialogs/settings.dialog.tsx b/dashboard/src/features/services/dialogs/settings.dialog.tsx
@@ -0,0 +1,52 @@
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+ Tabs,
+ TabsContent,
+ TabsList,
+ TabsTrigger,
+} from "@marzneshin/components"
+import { FC } from "react"
+import { useTranslation } from "react-i18next"
+import { ServiceType } from "..";
+import { ServiceInboundsTable } from "../tables/inbounds";
+import { ServicesUsersTable } from "../tables/users";
+
+interface ServicecSettingsDialogProps {
+ onOpenChange: (state: boolean) => void
+ open: boolean
+ entity: ServiceType | null
+}
+
+export const ServiceSettingsDialog: FC<ServicecSettingsDialogProps> = ({ onOpenChange, open, entity }) => {
+
+ const { t } = useTranslation();
+
+ if (entity) {
+ return (
+ <Sheet open={open} onOpenChange={onOpenChange}>
+ <SheetContent className="sm:min-w-full md:min-w-[700px]" >
+ <SheetHeader>
+ <SheetTitle>
+ {t('page.services.settings.title')}
+ </SheetTitle>
+ </SheetHeader>
+ <Tabs className="my-3 w-full h-full" defaultValue="inbounds">
+ <TabsList className="w-full">
+ <TabsTrigger className="w-full" value="inbounds">{t('inbounds')}</TabsTrigger>
+ <TabsTrigger className="w-full" value="users">{t('users')}</TabsTrigger>
+ </TabsList>
+ <TabsContent value="inbounds" className="h-full">
+ <ServiceInboundsTable service={entity} />
+ </TabsContent>
+ <TabsContent value="users" className="h-full">
+ <ServicesUsersTable service={entity} />
+ </TabsContent>
+ </Tabs>
+ </SheetContent>
+ </Sheet>
+ )
+ }
+}
diff --git a/dashboard/src/features/services/index.ts b/dashboard/src/features/services/index.ts
@@ -0,0 +1,4 @@
+export * from './types'
+export * from './tables'
+export * from './services'
+export * from './dialogs'
diff --git a/dashboard/src/features/services/services/create-service.mutate.ts b/dashboard/src/features/services/services/create-service.mutate.ts
@@ -0,0 +1,40 @@
+import { ServiceCreateType, ServicesQueryFetchKey } from "@marzneshin/features/services";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+
+export async function fetchCreateService(service: ServiceCreateType): Promise<ServiceCreateType> {
+ return fetch('/services', { method: 'post', body: service }).then((service) => {
+ return service;
+ });
+}
+
+const handleError = (error: Error, value: ServiceCreateType) => {
+ toast.error(
+ i18n.t('events.create.error', { name: value.name }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: ServiceCreateType) => {
+ toast.success(
+ i18n.t('events.create.success.title', { name: value.name }),
+ {
+ description: i18n.t('events.create.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [ServicesQueryFetchKey] })
+}
+
+
+const ServicesCreateFetchKey = "services";
+
+export const useServicesCreationMutation = () => {
+ return useMutation({
+ mutationKey: [ServicesCreateFetchKey],
+ mutationFn: fetchCreateService,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/services/services/delete-service.mutate.ts b/dashboard/src/features/services/services/delete-service.mutate.ts
@@ -0,0 +1,40 @@
+import { ServiceType, ServicesQueryFetchKey } from "@marzneshin/features/services";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+
+export async function fetchDeleteService(service: ServiceType): Promise<ServiceType> {
+ return fetch(`/services/${service.id}`, { method: 'delete' }).then((service) => {
+ return service;
+ });
+}
+
+const ServicesDeleteFetchKey = "services-delete-fetch-key";
+
+
+const handleError = (error: Error, value: ServiceType) => {
+ toast.error(
+ i18n.t('events.delete.error', { name: value.name }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: ServiceType) => {
+ toast.success(
+ i18n.t('events.delete.success.title', { name: value.name }),
+ {
+ description: i18n.t('events.delete.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [ServicesQueryFetchKey] })
+}
+
+export const useServicesDeletionMutation = () => {
+ return useMutation({
+ mutationKey: [ServicesDeleteFetchKey],
+ mutationFn: fetchDeleteService,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/services/services/index.ts b/dashboard/src/features/services/services/index.ts
@@ -0,0 +1,4 @@
+export * from './services.query.ts'
+export * from './create-service.mutate.ts'
+export * from './delete-service.mutate.ts'
+export * from './update-service.mutate.ts'
diff --git a/dashboard/src/features/services/services/service-users.query.ts b/dashboard/src/features/services/services/service-users.query.ts
@@ -0,0 +1,20 @@
+import { useQuery } from "@tanstack/react-query";
+import { fetch } from "@marzneshin/utils";
+import { ServiceType } from "../types";
+import { UserType } from "@marzneshin/features/users";
+
+export async function fetchUsersService({ queryKey }: { queryKey: [string, number] }): Promise<UserType[]> {
+ return fetch(`/services/${queryKey[1]}`).then((result) => {
+ return result.users;
+ });
+}
+
+export const ServicesQueryFetchKey = "services";
+
+export const useUsersServiceQuery = (service: ServiceType) => {
+ return useQuery({
+ queryKey: [ServicesQueryFetchKey, service.id],
+ queryFn: fetchUsersService,
+ initialData: []
+ })
+}
diff --git a/dashboard/src/features/services/services/services.query.ts b/dashboard/src/features/services/services/services.query.ts
@@ -0,0 +1,34 @@
+import { useQuery } from "@tanstack/react-query";
+import { fetch } from "@marzneshin/utils";
+import { ServiceType } from "../types";
+
+interface ServiceResponse {
+ id: number
+ name: string
+ users: any[]
+ inbounds: any[]
+ user_ids: number[]
+ inbound_ids: number[]
+}
+
+export async function fetchServices(): Promise<ServiceType[]> {
+ return fetch('/services').then((result) => {
+ const services: ServiceType[] = result.items.map((fetchedService: ServiceResponse) => {
+ const service: ServiceType = fetchedService;
+ service.users = fetchedService.user_ids
+ service.inbounds = fetchedService.inbound_ids
+ return service
+ })
+ return services;
+ });
+}
+
+export const ServicesQueryFetchKey = "services";
+
+export const useServicesQuery = () => {
+ return useQuery({
+ queryKey: [ServicesQueryFetchKey],
+ queryFn: fetchServices,
+ initialData: []
+ })
+}
diff --git a/dashboard/src/features/services/services/update-service.mutate.ts b/dashboard/src/features/services/services/update-service.mutate.ts
@@ -0,0 +1,41 @@
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+import { ServicesQueryFetchKey } from "./services.query";
+import { ServiceType } from "../types";
+
+export async function updateService(node: ServiceType): Promise<ServiceType> {
+ return fetch(`/services/${node.id}`, { method: 'put', body: node }).then((service) => {
+ return service;
+ });
+}
+
+const handleError = (error: Error, value: ServiceType) => {
+ toast.error(
+ i18n.t('events.update.error', { name: value.name }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: ServiceType) => {
+ toast.success(
+ i18n.t('events.update.success.title', { name: value.name }),
+ {
+ description: i18n.t('events.update.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [ServicesQueryFetchKey] })
+}
+
+
+const ServicesUpdateFetchKey = "services-create-fetch-key";
+
+export const useServicesUpdateMutation = () => {
+ return useMutation({
+ mutationKey: [ServicesUpdateFetchKey],
+ mutationFn: updateService,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/services/tables/inbounds/columns.tsx b/dashboard/src/features/services/tables/inbounds/columns.tsx
@@ -0,0 +1,51 @@
+
+import { ColumnDef } from "@tanstack/react-table"
+import { InboundType } from "@marzneshin/features/inbounds"
+import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header"
+import i18n from "@marzneshin/features/i18n"
+import { Badge, Checkbox } from "@marzneshin/components"
+
+export const columns: ColumnDef<InboundType>[] = [
+ {
+ id: "select",
+ header: ({ table }) => (
+ <Checkbox
+ checked={
+ table.getIsAllPageRowsSelected() ||
+ (table.getIsSomePageRowsSelected() && "indeterminate")
+ }
+ onCheckedChange={(value) => {
+ table.toggleAllPageRowsSelected(!!value)
+ }}
+ aria-label="Select all"
+ />
+ ),
+ cell: ({ row }) => (
+ <Checkbox
+ checked={row.getIsSelected()}
+ onCheckedChange={(value) => row.toggleSelected(!!value)}
+ aria-label="Select row"
+ />
+ ),
+ enableSorting: false,
+ enableHiding: false,
+ },
+ {
+ accessorKey: "tag",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('tag')} column={column} />,
+ },
+ {
+ accessorKey: 'protocol',
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('protocol')} column={column} />,
+ cell: ({ row }) => (
+ <Badge className="py-1 px-2"> {row.original.protocol} </Badge>
+ )
+ },
+ {
+ accessorKey: 'node',
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('nodes')} column={column} />,
+ cell: ({ row }) => (
+ <Badge className="py-1 px-2"> {row.original.node.name} </Badge>
+ )
+ }
+];
diff --git a/dashboard/src/features/services/tables/inbounds/index.tsx b/dashboard/src/features/services/tables/inbounds/index.tsx
@@ -0,0 +1,58 @@
+
+import { FC, useCallback, useEffect, useState } from "react";
+import {
+ useInboundsQuery,
+} from '@marzneshin/features/inbounds';
+import { Button, DataTable } from "@marzneshin/components";
+import { columns } from "./columns";
+import { ServiceType, useServicesUpdateMutation } from "../..";
+import { useTranslation } from "react-i18next";
+import { RowSelectionState } from "@tanstack/react-table";
+
+interface ServiceInboundsTableProps {
+ service: ServiceType
+}
+
+export const ServiceInboundsTable: FC<ServiceInboundsTableProps> = ({ service }) => {
+ const { mutate: updateService } = useServicesUpdateMutation();
+ const { data } = useInboundsQuery();
+ const [selectedInbound, setSelectedInbound] = useState<{ [key: number]: boolean }>({})
+ const { t } = useTranslation()
+
+ useEffect(() => {
+ setSelectedInbound((prevSelected) => {
+ const updatedSelected: RowSelectionState = { ...prevSelected };
+ service.inbounds.forEach((inboundId) => {
+ data.forEach((fetchedInbound, i) => {
+ if (fetchedInbound.id === inboundId) {
+ updatedSelected[i] = true;
+ }
+ });
+ });
+ return updatedSelected;
+ });
+ }, [data, service.inbounds])
+
+ const handleApply = useCallback(() => {
+ const selectedInboundIds = Object.keys(selectedInbound)
+ .filter(key => selectedInbound[parseInt(key)])
+ .map(key => data[parseInt(key)].id);
+ updateService({ ...service, inbounds: selectedInboundIds });
+ }, [data, selectedInbound, service, updateService]);
+
+ const disabled = (Object.keys(selectedInbound).length < 1) ? true : false
+
+ return (
+ <div className="flex flex-col gap-4">
+ <DataTable
+ columns={columns}
+ data={data}
+ filteredColumn='tag'
+ selectedRow={selectedInbound}
+ setSelectedRow={setSelectedInbound}
+ />
+
+ <Button onClick={handleApply} disabled={disabled}>{t('apply')}</Button>
+ </div>
+ )
+}
diff --git a/dashboard/src/features/services/tables/index.ts b/dashboard/src/features/services/tables/index.ts
@@ -0,0 +1,4 @@
+// export * from './users.table'
+// export * from './inbounds.table'
+export * from './services'
+export * from './services/columns'
diff --git a/dashboard/src/features/services/tables/services/columns.tsx b/dashboard/src/features/services/tables/services/columns.tsx
@@ -0,0 +1,33 @@
+import { ColumnDef } from "@tanstack/react-table"
+import { ServiceType } from "@marzneshin/features/services"
+import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header"
+import i18n from "@marzneshin/features/i18n"
+import { DataTableActionsCell } from "@marzneshin/components"
+
+interface ColumnAction {
+ onDelete: (service: ServiceType) => void;
+ onOpen: (node: ServiceType) => void;
+ onEdit: (node: ServiceType) => void;
+}
+
+
+export const columns = (actions: ColumnAction): ColumnDef<ServiceType>[] => ([
+ {
+ accessorKey: "name",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('name')} column={column} />,
+ },
+ {
+ accessorKey: "users",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('users')} column={column} />,
+ cell: ({ row }) => `${row.original.users.length}`
+ },
+ {
+ accessorKey: "inbounds",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('inbounds')} column={column} />,
+ cell: ({ row }) => `${row.original.inbounds.length}`
+ },
+ {
+ id: "actions",
+ cell: ({ row }) => <DataTableActionsCell {...actions} row={row} />
+ },
+]);
diff --git a/dashboard/src/features/services/tables/services/index.tsx b/dashboard/src/features/services/tables/services/index.tsx
@@ -0,0 +1,22 @@
+import { FC } from "react";
+import {
+ useServicesQuery,
+ MutationDialog,
+ ServicesDeleteConfirmationDialog
+} from '@marzneshin/features/services';
+import { columns } from "./columns";
+import { ServiceSettingsDialog } from "../../dialogs/settings.dialog";
+import { EntityTable } from "@marzneshin/components";
+
+export const ServicesTable: FC = () => {
+ return (
+ <EntityTable
+ useQuery={useServicesQuery}
+ DeleteConfirmationDialog={ServicesDeleteConfirmationDialog}
+ SettingsDialog={ServiceSettingsDialog}
+ MutationDialog={MutationDialog}
+ columns={columns}
+ filteredColumn="name"
+ />
+ )
+}
diff --git a/dashboard/src/features/services/tables/users/columns.tsx b/dashboard/src/features/services/tables/users/columns.tsx
@@ -0,0 +1,49 @@
+import { ColumnDef } from "@tanstack/react-table"
+import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header"
+import i18n from "@marzneshin/features/i18n"
+import { UserType/* , UserStatusBadge, statusColors */ } from "@marzneshin/features/users"
+import { CircularProgress } from "@nextui-org/progress";
+import { format } from "date-fns";
+import { Badge } from "@marzneshin/components";
+
+export const columns: ColumnDef<UserType>[] = [
+ {
+ accessorKey: "username",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('username')} column={column} />,
+ },
+ // {
+ // accessorKey: 'status',
+ // header: ({ column }) => <DataTableColumnHeader title={i18n.t('status')} column={column} />,
+ // cell: ({ row }) => <UserStatusBadge status={statusColors[row.original.status ? row.original.status : 'error']} />,
+ // },
+ {
+ accessorKey: "used_traffic",
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('page.users.used_traffic')} column={column} />,
+ cell: ({ row }) => {
+ if (row.original.data_limit) {
+ return (
+ <CircularProgress
+ size="sm"
+ value={row.original.used_traffic / row.original.data_limit * 100}
+ />
+ )
+ } else {
+ return <Badge>No Limit</Badge>
+ }
+ },
+ sortingFn: (rowA, rowB) => {
+ if (rowA.original.data_limit && rowB.original.data_limit) {
+ const rowAUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100
+ const rowBUsedTraffic = (rowA.original.used_traffic / rowA.original.data_limit) * 100
+ return rowAUsedTraffic > rowBUsedTraffic ? 1 : rowBUsedTraffic > rowAUsedTraffic ? -1 : 0
+ } else {
+ return 0
+ }
+ }
+ },
+ {
+ accessorKey: 'expire',
+ header: ({ column }) => <DataTableColumnHeader title={i18n.t('expire')} column={column} />,
+ cell: ({ row }) => format(row.original.expire, "PP")
+ }
+];
diff --git a/dashboard/src/features/services/tables/users/index.tsx b/dashboard/src/features/services/tables/users/index.tsx
@@ -0,0 +1,24 @@
+
+import { FC } from "react";
+import { DataTable } from "@marzneshin/components";
+import { columns } from "./columns";
+import { useUsersServiceQuery } from "../../services/service-users.query";
+import { ServiceType } from "../..";
+
+interface ServicesUsersTableProps {
+ service: ServiceType
+}
+
+export const ServicesUsersTable: FC<ServicesUsersTableProps> = ({ service }) => {
+ const { data } = useUsersServiceQuery(service);
+
+ return (
+ <div>
+ <DataTable
+ columns={columns}
+ data={data}
+ filteredColumn='username'
+ />
+ </div>
+ )
+}
diff --git a/dashboard/src/features/services/types/index.ts b/dashboard/src/features/services/types/index.ts
@@ -0,0 +1,2 @@
+export * from './services.type'
+export * from './services-create.type'
diff --git a/dashboard/src/features/services/types/services-create.type.ts b/dashboard/src/features/services/types/services-create.type.ts
@@ -0,0 +1,8 @@
+import { z } from "zod";
+
+export const ServiceCreateSchema = z.object({
+ inbounds: z.array(z.number()),
+ name: z.string().trim().min(1)
+})
+
+export type ServiceCreateType = z.infer<typeof ServiceCreateSchema>
diff --git a/dashboard/src/features/services/types/services.type.ts b/dashboard/src/features/services/types/services.type.ts
@@ -0,0 +1,7 @@
+
+export interface ServiceType {
+ id: number;
+ name: string;
+ users: number[];
+ inbounds: number[];
+}
diff --git a/dashboard/src/features/sidebar/sidebar.tsx b/dashboard/src/features/sidebar/sidebar.tsx
@@ -2,6 +2,7 @@ import { Sidebar, SidebarItem } from "@marzneshin/components";
import { useRouterState } from "@tanstack/react-router";
import { FC, useEffect } from "react";
import { sidebarItems } from ".";
+import { cn } from "@marzneshin/utils";
interface DashboardSidebarProps {
@@ -23,16 +24,16 @@ export const DashboardSidebar: FC<DashboardSidebarProps> = ({ collapsed, setColl
collapsed={collapsed}
setCollapsed={setCollapsed}
>
- <div className="flex flex-col p-4 w-full h-full">
+ <div className="flex flex-col px-4 w-full h-full">
<Sidebar.Body className="my-3">
{Object.keys(sidebarItems).map((key) =>
(
- <div className="my-2 w-full" key={key}>
+ <div className="w-full" key={key}>
<Sidebar.Group>{key}</Sidebar.Group>
{sidebarItems[key].map((item: SidebarItem, i) => (
<Sidebar.Item
variant={currentActivePath === item.to ? "active" : "default"}
- className="my-2 border-transparent"
+ className={cn("my-2 border-transparent", { "w-10 h-10": collapsed })}
item={item}
key={i}
/>
diff --git a/dashboard/src/features/theme-switch/theme-toggle/index.tsx b/dashboard/src/features/theme-switch/theme-toggle/index.tsx
@@ -8,10 +8,11 @@ import {
DropdownMenuTrigger,
} from "@marzneshin/components"
import { useTheme } from "../theme-provider"
+import { useTranslation } from "react-i18next"
export function ThemeToggle() {
const { setTheme } = useTheme()
-
+ const { t } = useTranslation()
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
@@ -23,13 +24,13 @@ export function ThemeToggle() {
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem onClick={() => setTheme("light")}>
- Light
+ {t('light')}
</DropdownMenuItem>
<DropdownMenuItem onClick={() => setTheme("dark")}>
- Dark
+ {t('dark')}
</DropdownMenuItem>
<DropdownMenuItem onClick={() => setTheme("system")}>
- System
+ {t('system')}
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
diff --git a/dashboard/src/features/users/index.ts b/dashboard/src/features/users/index.ts
@@ -0,0 +1,2 @@
+export * from './services'
+export * from './types'
diff --git a/dashboard/src/features/users/services/create-service.mutate.ts b/dashboard/src/features/users/services/create-service.mutate.ts
@@ -0,0 +1,40 @@
+import { UserCreateType, UsersQueryFetchKey } from "@marzneshin/features/users";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+
+export async function fetchCreateUser(user: UserCreateType): Promise<UserCreateType> {
+ return fetch('/users', { method: 'post', body: user }).then((user) => {
+ return user;
+ });
+}
+
+const handleError = (error: Error, value: UserCreateType) => {
+ toast.error(
+ i18n.t('events.create.error', { name: value.username }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: UserCreateType) => {
+ toast.success(
+ i18n.t('events.create.success.title', { name: value.username }),
+ {
+ description: i18n.t('events.create.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [UsersQueryFetchKey] })
+}
+
+
+const UsersCreateFetchKey = "users";
+
+export const useUsersCreationMutation = () => {
+ return useMutation({
+ mutationKey: [UsersCreateFetchKey],
+ mutationFn: fetchCreateUser,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/users/services/delete-service.mutate.ts b/dashboard/src/features/users/services/delete-service.mutate.ts
@@ -0,0 +1,40 @@
+import { UserType, UsersQueryFetchKey } from "@marzneshin/features/users";
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+
+export async function fetchDeleteUser(user: UserType): Promise<UserType> {
+ return fetch(`/users/${user.username}`, { method: 'delete' }).then((user) => {
+ return user;
+ });
+}
+
+const UsersDeleteFetchKey = "users-delete-fetch-key";
+
+
+const handleError = (error: Error, value: UserType) => {
+ toast.error(
+ i18n.t('events.delete.error', { name: value.username }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: UserType) => {
+ toast.success(
+ i18n.t('events.delete.success.title', { name: value.username }),
+ {
+ description: i18n.t('events.delete.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [UsersQueryFetchKey] })
+}
+
+export const useUsersDeletionMutation = () => {
+ return useMutation({
+ mutationKey: [UsersDeleteFetchKey],
+ mutationFn: fetchDeleteUser,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/users/services/index.ts b/dashboard/src/features/users/services/index.ts
@@ -0,0 +1,4 @@
+export * from './users.query'
+export * from './update-service.mutate'
+export * from './create-service.mutate'
+export * from './delete-service.mutate'
diff --git a/dashboard/src/features/users/services/update-service.mutate.ts b/dashboard/src/features/users/services/update-service.mutate.ts
@@ -0,0 +1,41 @@
+import { useMutation } from "@tanstack/react-query";
+import { fetch, queryClient } from "@marzneshin/utils";
+import { toast } from "sonner";
+import i18n from "@marzneshin/features/i18n";
+import { UsersQueryFetchKey } from "./users.query";
+import { UserType } from "../types";
+
+export async function updateUser(user: UserType): Promise<UserType> {
+ return fetch(`/users/${user.username}`, { method: 'put', body: user }).then((user) => {
+ return user;
+ });
+}
+
+const handleError = (error: Error, value: UserType) => {
+ toast.error(
+ i18n.t('events.update.error', { name: value.username }),
+ {
+ description: error.message
+ })
+}
+
+const handleSuccess = (value: UserType) => {
+ toast.success(
+ i18n.t('events.update.success.title', { name: value.username }),
+ {
+ description: i18n.t('events.update.success.desc')
+ })
+ queryClient.invalidateQueries({ queryKey: [UsersQueryFetchKey] })
+}
+
+
+const UsersUpdateFetchKey = "users";
+
+export const useUsersUpdateMutation = () => {
+ return useMutation({
+ mutationKey: [UsersUpdateFetchKey],
+ mutationFn: updateUser,
+ onError: handleError,
+ onSuccess: handleSuccess,
+ })
+}
diff --git a/dashboard/src/features/users/services/users.query.ts b/dashboard/src/features/users/services/users.query.ts
@@ -0,0 +1,29 @@
+import { useQuery } from "@tanstack/react-query";
+import { fetch } from "@marzneshin/utils";
+import { UserType } from "../types";
+
+interface UserResponse extends UserType {
+ service_ids: number[]
+ services: any[]
+}
+
+export async function fetchUsers(): Promise<UserType[]> {
+ return fetch('/users').then((result) => {
+ const users: UserType[] = result.items.map((fetchedUser: UserResponse) => {
+ const user: UserType = fetchedUser;
+ user.services = fetchedUser.service_ids
+ return user
+ })
+ return users;
+ });
+}
+
+export const UsersQueryFetchKey = "users";
+
+export const useUsersQuery = () => {
+ return useQuery({
+ queryKey: [UsersQueryFetchKey],
+ queryFn: fetchUsers,
+ initialData: []
+ })
+}
diff --git a/dashboard/src/features/users/tables/index.ts b/dashboard/src/features/users/tables/index.ts
diff --git a/dashboard/src/features/users/types/index.ts b/dashboard/src/features/users/types/index.ts
@@ -0,0 +1,44 @@
+export type DataLimitResetStrategy =
+ | 'no_reset'
+ | 'day'
+ | 'week'
+ | 'month'
+ | 'year';
+
+export type Status =
+ | 'active'
+ | 'disabled'
+ | 'limited'
+ | 'expired'
+ | 'on_hold'
+ | 'error'
+ | 'connecting'
+ | 'healthy'
+ | 'unhealthy'
+ | 'connected';
+
+export interface UserType {
+ expire: Date | number;
+ data_limit: number | null;
+ data_limit_reset_strategy: DataLimitResetStrategy;
+ lifetime_used_traffic: number;
+ username: string;
+ used_traffic: number;
+ status: Status;
+ links: string[];
+ subscription_url: string;
+ services: number[];
+ note: string;
+ online_at: string;
+}
+
+export type UserCreateType = Pick<
+ UserType,
+ | 'services'
+ | 'expire'
+ | 'data_limit'
+ | 'data_limit_reset_strategy'
+ | 'username'
+ | 'status'
+ | 'note'
+>;
diff --git a/dashboard/src/routeTree.gen.ts b/dashboard/src/routeTree.gen.ts
@@ -1,6 +1,6 @@
/* prettier-ignore-start */
-
+/* eslint-disable */
// @ts-nocheck
diff --git a/dashboard/src/routes/_auth.tsx b/dashboard/src/routes/_auth.tsx
@@ -1,4 +1,5 @@
import { Outlet, createFileRoute } from '@tanstack/react-router'
+import network from '@marzneshin/assets/undraw_connected_world_wuay.svg'
const AuthLayout = () => {
return (
@@ -6,7 +7,9 @@ const AuthLayout = () => {
<div className="w-full h-full">
<Outlet />
</div>
- <div className='hidden w-full h-full md:block bg-primary dark:bg-accent'></div>
+ <div className='hidden justify-center items-center w-full h-full md:flex bg-primary dark:bg-accent'>
+ <img src={network} className="w-1/2 h-1/2" />
+ </div>
</div>
)
}
diff --git a/dashboard/src/routes/_dashboard.tsx b/dashboard/src/routes/_dashboard.tsx
@@ -16,7 +16,7 @@ import { cn } from '@marzneshin/utils';
import { Outlet, createFileRoute, redirect } from '@tanstack/react-router'
export const DashboardLayout = () => {
- const isDesktop = useScreenBreakpoint("sm");
+ const isDesktop = useScreenBreakpoint("md");
const { collapsed, panelRef, open, setCollapsed, setOpen, toggleCollapse, toggleOpen } = usePanelToggle(isDesktop);
return (
@@ -37,11 +37,11 @@ export const DashboardLayout = () => {
<ResizablePanelGroup direction="horizontal" className="block sm:hidden">
<ResizablePanel
collapsible
- collapsedSize={5}
+ collapsedSize={2}
onCollapse={() => setCollapsed(true)}
onExpand={() => setCollapsed(false)}
minSize={15}
- className={cn("w-[120px] min-w-[100px]")}
+ className={cn("w-[120px] min-w-[70px]")}
defaultSize={20}
ref={panelRef}
maxSize={30}>
@@ -51,6 +51,7 @@ export const DashboardLayout = () => {
<ResizablePanel>
<main>
<Outlet />
+ <Toaster position="top-center" />
</main>
</ResizablePanel>
</ResizablePanelGroup>
diff --git a/dashboard/src/routes/_dashboard/hosts.tsx b/dashboard/src/routes/_dashboard/hosts.tsx
@@ -1,5 +1,26 @@
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '@marzneshin/components'
+import { InboundHostsTable } from '@marzneshin/features/hosts'
import { createFileRoute } from '@tanstack/react-router'
+import { useTranslation } from 'react-i18next'
+
+export const HostsPage = () => {
+ const { t } = useTranslation()
+ return (
+ <Card className="m-2">
+ <CardHeader>
+ <CardTitle>
+ {t('hosts')}
+ </CardTitle>
+ </CardHeader>
+ <CardContent>
+ <InboundHostsTable />
+ </CardContent>
+ <CardFooter>
+ </CardFooter>
+ </Card>
+ )
+}
export const Route = createFileRoute('/_dashboard/hosts')({
- component: () => <div>Hello /_dashboard/hosts!</div>
-})
\ No newline at end of file
+ component: () => <HostsPage />
+})
diff --git a/dashboard/src/routes/_dashboard/services.tsx b/dashboard/src/routes/_dashboard/services.tsx
@@ -1,5 +1,33 @@
+import {
+ Card,
+ CardContent,
+ CardFooter,
+ CardHeader,
+ CardTitle
+} from '@marzneshin/components'
+import { ServicesTable } from '@marzneshin/features/services';
import { createFileRoute } from '@tanstack/react-router'
+import { FC } from 'react';
+import { useTranslation } from 'react-i18next';
+
+export const ServicesPage: FC = () => {
+ const { t } = useTranslation();
+ return (
+ <Card className="m-3">
+ <CardHeader>
+ <CardTitle>
+ {t('services')}
+ </CardTitle>
+ </CardHeader>
+ <CardContent>
+ <ServicesTable />
+ </CardContent>
+ <CardFooter>
+ </CardFooter>
+ </Card >
+ )
+};
export const Route = createFileRoute('/_dashboard/services')({
- component: () => <div>Hello /_dashboard/services!</div>
+ component: () => <ServicesPage />
})
diff --git a/dashboard/src/routes/_dashboard/users.tsx b/dashboard/src/routes/_dashboard/users.tsx
@@ -1,5 +1,27 @@
+import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '@marzneshin/components';
import { createFileRoute } from '@tanstack/react-router'
+import { FC } from 'react';
+import { useTranslation } from 'react-i18next';
+
+
+export const UsersPage: FC = () => {
+ const { t } = useTranslation();
+ return (
+ <Card className="m-3">
+ <CardHeader>
+ <CardTitle>
+ {t('users')}
+ </CardTitle>
+ </CardHeader>
+ <CardContent>
+ </CardContent>
+ <CardFooter>
+ </CardFooter>
+ </Card >
+ )
+};
+
export const Route = createFileRoute('/_dashboard/users')({
- component: () => <div>Hello /_dashboard/users!</div>
-})
\ No newline at end of file
+ component: () => <UsersPage />
+})
diff --git a/dashboard/src/types/index.ts b/dashboard/src/types/index.ts
@@ -1,4 +1,2 @@
-import { routeTree } from "@marzneshin/routeTree.gen";
-import { RoutePaths } from "@tanstack/react-router";
-
-export type AppRouterPaths = RoutePaths<typeof routeTree>;
+export * from './status'
+export * from './routes'
diff --git a/dashboard/src/types/routes.ts b/dashboard/src/types/routes.ts
@@ -0,0 +1,4 @@
+import { routeTree } from "@marzneshin/routeTree.gen";
+import { RoutePaths } from "@tanstack/react-router";
+
+export type AppRouterPaths = RoutePaths<typeof routeTree>;
diff --git a/dashboard/src/types/status.ts b/dashboard/src/types/status.ts
@@ -0,0 +1,6 @@
+import { LucideIcon } from "lucide-react";
+
+export interface StatusType {
+ label: string;
+ icon: LucideIcon | null;
+}
diff --git a/dashboard/tailwind.config.js b/dashboard/tailwind.config.js
@@ -2,6 +2,7 @@ import tailwindcssAnimate from 'tailwindcss-animate';
import tailwindcssForm from '@tailwindcss/forms';
import tailwindcssAspectRatio from '@tailwindcss/aspect-ratio';
import tailwindcssTypography from '@tailwindcss/typography';
+import { nextui } from '@nextui-org/react'
/** @type {import('tailwindcss').Config} */
const config = {
@@ -11,9 +12,16 @@ const config = {
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
+ "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}",
],
prefix: "",
theme: {
+ screens: {
+ 'sm': '0',
+ 'md': '768px',
+ 'lg': '1024px',
+ 'xl': '1280px',
+ },
container: {
center: true,
padding: "2rem",
@@ -84,6 +92,7 @@ const config = {
},
},
plugins: [
+ nextui(),
tailwindcssAnimate,
tailwindcssForm,
tailwindcssAspectRatio,